方振宇
摘要:在中國,微博作為主流的社交媒體工具,是個(gè)人用戶發(fā)表自己意見和表達(dá)情感的一個(gè)網(wǎng)絡(luò)平臺。調(diào)研發(fā)現(xiàn),抑郁用戶和非抑郁用戶在社交互動(dòng),語言使用,情緒表達(dá)上有著很大的不同,這也使得通過社交網(wǎng)絡(luò)的方式獲取數(shù)據(jù)建立預(yù)測模型成為可能。文章通過微博爬蟲的方法獲取抑郁與非抑郁用戶微博數(shù)據(jù),基于傳統(tǒng)情感詞典在抑郁預(yù)測上詞語的局限性和不足,本文利用深度遍歷詞向量同義詞的方法,構(gòu)建適合預(yù)測抑郁場景的抑郁詞典。結(jié)合知網(wǎng)情感詞典,表情符號詞典對用戶博文進(jìn)行情感分析,并在此基礎(chǔ)上建立分類器進(jìn)行用戶的抑郁預(yù)測和分類。
關(guān)鍵詞:微博;抑郁;詞向量;分類預(yù)測
中圖分類號:TP391 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2017)07-0244-04
現(xiàn)代社會節(jié)奏加快,人們工作和學(xué)習(xí)的壓力都非常的大,每個(gè)人或多或少都有著心理上的問題,比如緊張,煩躁,焦慮甚至是抑郁。長期處于這種心理狀態(tài)下會影響人們的工作和生活狀態(tài),并有可能發(fā)展為精神疾病,極大影響了人們的生活質(zhì)量和水平,許多人因?yàn)樾睦碚系K產(chǎn)生了消極的生活態(tài)度,嚴(yán)重的心理疾病患者甚至?xí)龀鲞^激的行為。每年因?yàn)樾睦砑膊∷劳龅娜藬?shù)也在不斷增加中,這更加讓我們意識到心理問題的重要性。如何鑒定自己是否有心理障礙以及如何科學(xué)的防治是一個(gè)急需解決的問題。
心理疾病一般是慢慢積累而成,從偶爾的煩躁苦惱慢慢可以演變成頻繁的焦慮甚至是嚴(yán)重的抑郁。但是對于自己是否存在心理障礙的跡象,個(gè)人主觀一般會存在偏歧。一般情況下,心理問題的發(fā)現(xiàn)以及心理障礙的檢測都是采用心理問卷的形式,這種方法雖然能很有效地檢測出人們的心理障礙,但是需要患者意識到自身的心理問題進(jìn)行主動(dòng)的檢測,并且很多抑郁患者對于自身的心理問題存在主觀上的認(rèn)知偏差,所以這種方式存在一定的局限性。
微博作為人們發(fā)表自己意見,抒發(fā)情感的一個(gè)常用的社交媒體軟件,其文本,語音,圖片,視頻等包含了大量的語義及情感信息。通過獲取用戶的微博數(shù)據(jù)可以進(jìn)行數(shù)據(jù)的分析,統(tǒng)計(jì)出處理所需的信息,并對這些信息用機(jī)器學(xué)習(xí)的算法進(jìn)行學(xué)習(xí),構(gòu)造出關(guān)于心理障礙的分類器。利用這個(gè)分類器可以有效地鑒別出需要鑒定的用戶哪些是有心理障礙的如抑郁焦慮等,對于這些人可以建議他們?nèi)メt(yī)院做更深入的心理檢測,從而遏制心理障礙的進(jìn)一步擴(kuò)大以及減少不理智行為的產(chǎn)生。
1相關(guān)研究
目前國外在社交網(wǎng)絡(luò)和心理學(xué)統(tǒng)計(jì)方面已經(jīng)有了很多成熟的研究和應(yīng)用。麻省理工的心理學(xué)教授傾向通過TheBigFive(大五類人格特征)來描述人的人格與個(gè)性。大五類因素包括:嚴(yán)謹(jǐn)性、外向性、開放性、宜人性與神經(jīng)質(zhì)人格特質(zhì)。0代表Openness to experience(開放性),C代表Conscientiousness(嚴(yán)謹(jǐn)性),E代表F.xtraversion(外向性),A代表Agreeableness(宜人性),N代表Neuroticism(神經(jīng)質(zhì))。大五人格的研究對在心理學(xué)上研究心理障礙提供了理論支持,目前有基于大五人格的心理健康問卷供人們自我檢測心理健康狀態(tài)。
Balani S等人采集Reddit上的用戶數(shù)據(jù),通過進(jìn)行數(shù)據(jù)分類,標(biāo)簽定制,特征定義之后開發(fā)了一個(gè)基于內(nèi)容特征的分類器,對reddit上的帖子進(jìn)行自我表達(dá)高中低的級別判斷。并統(tǒng)計(jì)分析了個(gè)人自我表達(dá)的多少和心理健康狀態(tài)之間的關(guān)系。
Choudhury M De等人采集Reddit上半匿名社區(qū)的用戶的個(gè)人信息,帖子言論信息,與其他用戶的互動(dòng)信息等建立評分體系,依據(jù)評分結(jié)果建立用戶預(yù)測分類模型。模型主要預(yù)測個(gè)人用戶是否會在將來有自殺的想法或者行為。
Q Hu等人通過調(diào)查問卷的形式獲取了心理評測人員的個(gè)人信息,并獲取他們的微博信息。提取了靜態(tài)特征以及動(dòng)態(tài)特征在內(nèi)的一共972個(gè)特征,經(jīng)過特征分析后采用邏輯回歸的方式進(jìn)行分類器的構(gòu)造,并進(jìn)行了用戶數(shù)據(jù)的回歸分析。
國內(nèi)研究者白朔天等人采用多任務(wù)回歸學(xué)習(xí)預(yù)測微博用戶的心理健康狀況,并且構(gòu)造了抑郁與焦慮的相關(guān)度分析。何躍等人采用了分詞統(tǒng)計(jì)表情符號的方法,并采用SVM的方法構(gòu)造情感分類器。
總體而言,目前國外在情感分類,抑郁檢測等方面做得研究有很多,關(guān)注的心理障礙種類也很多,采用的方法都是基于機(jī)器學(xué)習(xí)的算法,分類主要集中于Facebook、Twitter以及reddit等這些社交媒體,也有Instagram上的相關(guān)研究。國內(nèi)目前主要集中在微博情感分類上,但是很多都是針對微博文本本身的情感進(jìn)行處理,以及針對微博文本語義上的處理,在特征的提取上多針對文本的信息,個(gè)人信息、語言行為特征等有所缺失。綜上,微博數(shù)據(jù)有著很多可以挖掘和利用的信息,在幫助研究個(gè)人心理,人際關(guān)系方面有著很大作用。本文針對多用戶的信息采集,采取多種特征的定義提取,并采用多種分類方法進(jìn)行建模分析。
2方法
2.1數(shù)據(jù)獲取
本文從微博上抓取了一共920位用戶的個(gè)人信息以及其微博內(nèi)容。其中443位用戶是有心理障礙的患者。其余477位為沒有心理障礙的用戶。本文選擇的443位有心理障礙的用戶為正在服用治療如抑郁,焦慮等心理疾病的藥物的用戶,這類用戶已經(jīng)在醫(yī)學(xué)上鑒定為具有心理障礙的患者。477位沒有心理障礙的用戶是獲取的經(jīng)過心理測試未有明顯異常的學(xué)生用戶。本文采取微博爬蟲的方法獲取這些用戶微博的相關(guān)信息。
本文所使用的微博爬蟲采用python編寫,首先模擬登陸新浪微博再根據(jù)用戶的uid獲取他們的微博內(nèi)容及個(gè)人信息。獲取的網(wǎng)頁經(jīng)過網(wǎng)頁解析,解析出用戶個(gè)人信息,微博文本,關(guān)注,粉絲等內(nèi)容,存入數(shù)據(jù)庫。整個(gè)爬蟲工作的流程如圖1所示。
圖1中解析數(shù)據(jù)是從htrnl中提取結(jié)構(gòu)化的數(shù)據(jù)如content,userinformation等。數(shù)據(jù)清洗主要包括去除一些不重要的數(shù)據(jù),去除冗余數(shù)據(jù),錯(cuò)誤數(shù)據(jù)等。數(shù)據(jù)庫用戶id作為主鍵存取用戶對應(yīng)信息如用戶微博內(nèi)容,用戶粉絲關(guān)注id等。
2.2抑郁詞典建立
由于中文的情感詞典包含的都是情感類詞匯,中性詞匯包含的不是很多。同時(shí)由于中文的情感詞典自身的不完整性,導(dǎo)致中文的情感分析類任務(wù)的實(shí)驗(yàn)結(jié)果收到了很大的制約。
大多數(shù)情感詞匯都可以在情感詞典中找到。本文目標(biāo)是抑郁檢測,所以對于用戶的情感分類中,抑郁詞匯起到了有很大的作用。但是由于很多抑郁詞匯是中性詞,因此在情感詞典里并沒有這些抑郁詞匯。比如常見的一種能反映人是否有抑郁傾向的詞“失眠”,這個(gè)詞論極性而言是個(gè)中性詞,在知網(wǎng)的情感詞典里并沒有出現(xiàn)。更多的詞比如抑郁癥的一種一些軀體癥狀如“頭暈”,“神經(jīng)衰弱”,“心悸”等,抑郁癥的一些行為特征如“自閉”,“疑病”,“自殘”等也沒有在情感詞典內(nèi)出現(xiàn)。所以僅基于情感詞典構(gòu)造分類預(yù)測模型肯定是不完整的,將會失去很多有用的幫助分類的信息。
人工的構(gòu)造抑郁詞匯詞典是一種解決上面問題的方法。但是由于詞匯具有同義詞,在微博場景下用戶也會使用新興的網(wǎng)絡(luò)詞語,所以人工構(gòu)建抑郁詞典很難做到完整同時(shí)也不適用于微博場景。基于這種問題,我們構(gòu)建了抑郁用戶常見的抑郁詞匯作為基本的抑郁詞典?;镜囊钟粼~典包括抑郁軀體癥狀,抑郁行為特征一級抗抑郁藥物的名稱。下表是基本抑郁詞典的構(gòu)成部分。
本文提出了搜索詞匯上文相關(guān)詞的方法去獲取抑郁詞匯的相關(guān)詞,用深度遍歷的方法去獲取所有的基準(zhǔn)抑郁詞匯的上下文相關(guān)詞。
本文采用word2vec的方法獲取詞匯的上下文相關(guān)詞。處理步驟如下:
1)采用結(jié)巴分詞將所有用戶微博分詞,去除表情符號以及標(biāo)點(diǎn),輸入法符號等。去除停用詞使得詞向量獲得更好的效果。
2)利用word2vec訓(xùn)練微博語料,獲得每一個(gè)詞的詞向量表示。
3)計(jì)算詞與詞之間的相似度,來獲得基本抑郁詞典內(nèi)詞匯的相關(guān)詞。
詞向量相關(guān)度的計(jì)算利用的是詞向量之間的距離,這個(gè)距離可以用歐式距離計(jì)算也可以用兩個(gè)向量之間夾角的cosine值來表示。
本文采取向量問的cosine值來計(jì)算兩個(gè)向量間的距離。向量間的距離間接的可以反映兩個(gè)向量的相似度。公式如下所示:
(1)
抑郁詞典擴(kuò)充的處理方法如下:
1)用word2vec獲取每一個(gè)詞的詞向量表示
2)對于基準(zhǔn)抑郁詞典內(nèi)的詞W。從獲取的微博語料中搜尋w的相關(guān)詞,選取相似度前40的詞作為w的相關(guān)詞庫,并記為Sw。對于Sw中的相關(guān)詞,它的同義詞庫記為S。
3)對于i從1到40。如果si在基礎(chǔ)抑郁詞庫內(nèi)出現(xiàn)或在情感詞典里出現(xiàn),則從Sw內(nèi)移除si;否則轉(zhuǎn)4。
4)如果si與W之間的距離小于0.4,則從Ss內(nèi)移除si。否則保存si。如果W不在si的前40個(gè)相關(guān)詞中,則移除si,否則保存該詞。i值加1,轉(zhuǎn)3。i值遍歷完,轉(zhuǎn)5.
5)S加入到基礎(chǔ)抑郁詞典內(nèi),并且里面的詞作為新的種子詞。
我們在選取相關(guān)詞時(shí),只選取前40個(gè)詞,并且判斷該詞是否與它的相關(guān)詞互為相關(guān)詞,如果不是則去掉。同時(shí)設(shè)置閾值來進(jìn)一步過濾不相關(guān)詞匯。兩個(gè)詞之間如果距離小于0.4,基本上已經(jīng)不是我們需要的詞匯了,盡管可能還有一點(diǎn)語義的關(guān)聯(lián)性。閾值的設(shè)立為了避免結(jié)果中出現(xiàn)大量的不相關(guān)詞匯。雖然經(jīng)過了篩選,但是結(jié)果中還是會有很多錯(cuò)誤詞匯和不相關(guān)詞匯。
為了去除不相關(guān)詞匯,保證獲得詞匯的質(zhì)量,本文進(jìn)行了人工的篩選,將所有不屬于抑郁詞匯類別的以及一些錯(cuò)誤詞匯進(jìn)行刪除。最終從獲取的相關(guān)詞匯中選取了994個(gè)從微博語料中學(xué)習(xí)到的抑郁詞匯,并將它們構(gòu)建成了抑郁詞典。
2.3特征提取
2.3.1個(gè)人信息特征
本文特征提取主要獲取用戶兩方面特征,包括個(gè)人信息特征和語言特征。個(gè)人信息特征包括用戶的性別,年齡,是否已婚,粉絲數(shù),關(guān)注數(shù)等用戶的個(gè)人信息。有些特征如轉(zhuǎn)發(fā)數(shù),評論數(shù),點(diǎn)贊數(shù)等是體現(xiàn)個(gè)人用戶的社交習(xí)慣,與他人互動(dòng)交流的情況。一些特征如發(fā)表微博時(shí)間,發(fā)表微博數(shù)量則是體現(xiàn)用戶活躍程度,挖掘這些特征可以發(fā)現(xiàn)用戶的一些性格特征比如是否內(nèi)向,是否孤僻等??傊畟€(gè)人信息特征包含了很多用戶的心理信息,提取這些特征可以有效地提高分類模型的分類效果。個(gè)人信息特征見表2所列。
表2只列取了一部分個(gè)人信息特征,還包括用戶個(gè)人隱私設(shè)置如是否可以評論,是否屏蔽消息等。
2.3.2語言特征
語言特征是指微博文本的包含情感內(nèi)容的特征比如情感詞典中詞語的詞頻,詞性,表情符號的頻率等。統(tǒng)計(jì)語言特征的情感詞是基于情感詞典實(shí)現(xiàn),本文選用了HowNet和NTUSD作為情感詞典。此外本文還收集了微博上的表情符號特征,建立了表情符號詞典。表情符號特征通過文本表示。
2.3.3特征權(quán)重
本文采用TF-IDF們的方式統(tǒng)計(jì)詞的權(quán)重。TF-IDF方法可以反映出詞語在文檔中的重要程度,其中"IF表示詞頻,IDF表示逆向文件頻率。根據(jù)TF-IDF可得,用戶a的某個(gè)詞i的詞頻可以表示為;
(2)
其中,ni為詞i的在用戶微博中出現(xiàn)次數(shù),分母為所有詞的詞數(shù)之和。用戶n的詞語i的逆向文件頻率可以表示為:
(3)
(3)式中N表示所有的用戶文檔數(shù),mi表示詞語i所出現(xiàn)過的文檔數(shù)。則用戶a的詞語i的權(quán)重可以表示為;
(4)
本文分詞采用的是ICTCLAS分詞包,去除了如逗號,句號,頓號等標(biāo)點(diǎn)符號,去除了停用詞如“的”,“地”,“在”等詞語。
2.4特征簡化
2.4.1歸一化
為了消除不同變量量綱之間不一致帶來的影響,加快機(jī)器學(xué)習(xí)算法分類速度,本文采用了歸一化處理的方法,將特征映射到一個(gè)區(qū)間:
(5)
(5)式將數(shù)據(jù)映射到區(qū)間[0,1]之間。
2.4.2特征選擇
由于詞典內(nèi)的詞語較多,從而獲取的語言特征向量維數(shù)較大,在后續(xù)的分類模型設(shè)計(jì)過程中,過大的特征維數(shù)可能會影響分類效果,并有過擬合的情況產(chǎn)生。因此本文從以下三個(gè)方面進(jìn)行特征選擇;
(1)去除特征列全為0或大部分為0的數(shù)據(jù)以及經(jīng)過權(quán)重計(jì)算后權(quán)重較小的詞語的特征。
(2)采用卡方檢驗(yàn)[]的方法進(jìn)行特征選取,卡方檢驗(yàn)主要通過賦予特征權(quán)重來表示特征與類別間的相關(guān)度,通過定義閾值篩選特征權(quán)值,選取排名靠前的特征。
3分類預(yù)測模型的建立
3.1評價(jià)標(biāo)準(zhǔn)
提取特征后將特征矩陣?yán)脵C(jī)器學(xué)習(xí)的算法進(jìn)行建??梢垣@得分類預(yù)測的模型。本文采用精確率(Precision),召回率(Recall),F(xiàn)1值作為判定分類器分類效果好壞的指標(biāo),即
(6)
(7)
(8)
其中TP為P個(gè)標(biāo)簽為1的樣本里,TP個(gè)被分類器判定為1的樣本數(shù);FP為標(biāo)簽為O的樣本被判定為1的個(gè)數(shù);FN為標(biāo)簽為1的樣本被判定為0的個(gè)數(shù)。
3.2構(gòu)造分類器
為了減少分類可能產(chǎn)生的過擬合以及充分利用數(shù)據(jù)集,本文采用十折交叉的方法獲取實(shí)驗(yàn)的分類結(jié)果,并求取均值作為最終的實(shí)驗(yàn)結(jié)果。十折交叉法是指將處理好的特征文本劃分為10份,每次選其中9份作為訓(xùn)練集剩下的1份作為測試集。總共處理十次,將每一次分類器訓(xùn)練得到的精確率,召回率和n值的均值作為該分類器的最終結(jié)果。
本文采用神經(jīng)網(wǎng)絡(luò),支持向量機(jī)以及邏輯回歸的方法進(jìn)行分類預(yù)測,并計(jì)算出了三種方法的分類結(jié)果。
本文基于擴(kuò)展的抑郁詞典的方法,在F1值最高達(dá)到了83.369%。由于F1綜合考慮了召回率以及準(zhǔn)確率,所以綜合考慮,SVM獲得了最好的分類效果。本文選取SVM作為抑郁分類的分類算法。
基于本文構(gòu)造的模型,對于待識別用戶進(jìn)行檢測,如果該用戶分類結(jié)果為消極則表示該用戶可能存在心理障礙,因而可以聯(lián)系這些用戶建議他們?nèi)メt(yī)院做跟深入的心理檢測,從而減少用戶心理障礙的發(fā)生以及幫助有心理障礙的用戶更早接受治療。
4結(jié)論
本文針對微博用戶可能存在心理健康問題的情況,通過使用爬蟲獲取微博用戶信息及微博文本,進(jìn)行特征分析及提取,利用SVM以及邏輯回歸,神經(jīng)網(wǎng)絡(luò)的方法建立分類器模型,對未知用戶進(jìn)行分類預(yù)測。本文根據(jù)詞向量間距離從獲取的微博語料中挖掘了種子抑郁詞匯的相關(guān)詞,并根據(jù)這些相關(guān)詞建立了分類用的抑郁詞典。實(shí)驗(yàn)結(jié)果表明上述的方法是可行的,對于有心理障礙的用戶有著良好的分類效果。當(dāng)然可以通過改進(jìn)分類模型獲得更好的分類預(yù)測效果,比如采集更多的用戶數(shù)據(jù),獲取更細(xì)致的特征,更精確的特征選取等,同時(shí)也可以嘗試其他的分類方法。這是未來需要進(jìn)行改進(jìn)的地方以及努力的方向。