韓東紅, 張宏亮, 朱帥偉, 齊孝龍
(東北大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院, 遼寧 沈陽(yáng) 110169)
隨著Web 2.0的出現(xiàn)和普及,互聯(lián)網(wǎng)用戶迅速?gòu)男畔⒌南M(fèi)者轉(zhuǎn)變成了信息的生產(chǎn)者.借助微博為代表的社交網(wǎng)絡(luò)平臺(tái),用戶可以自由表達(dá)情感、互動(dòng)交流,使得跨越地理位置而具有相同喜好的用戶聚集成一個(gè)社區(qū)成為可能.因此通過(guò)挖掘分析海量社交網(wǎng)絡(luò)數(shù)據(jù),發(fā)現(xiàn)其中潛在社區(qū)已經(jīng)成為近年來(lái)的熱點(diǎn)研究問(wèn)題.
社交網(wǎng)絡(luò)中的社區(qū)發(fā)現(xiàn)概念最早由Newman等[1]提出,即發(fā)現(xiàn)社交網(wǎng)絡(luò)中的內(nèi)聚子群,其中節(jié)點(diǎn)與節(jié)點(diǎn)之間的聯(lián)系非常緊密,而子群之間的聯(lián)系相對(duì)稀疏.社區(qū)發(fā)現(xiàn)有助于進(jìn)一步認(rèn)識(shí)、理解復(fù)雜網(wǎng)絡(luò),可用于社會(huì)網(wǎng)絡(luò)演變[2]、個(gè)性化推薦[3]、市場(chǎng)營(yíng)銷(xiāo)[4]等應(yīng)用研究.情感社區(qū)的概念則由Xu等[5]首次提出,旨在發(fā)現(xiàn)社交網(wǎng)絡(luò)中對(duì)某商品質(zhì)量或服務(wù)有相同情感或觀點(diǎn)的聯(lián)系緊密的用戶群,以幫助企業(yè)改進(jìn)生產(chǎn)、設(shè)計(jì)營(yíng)銷(xiāo)策略.
作為最大的中文社交網(wǎng)絡(luò)平臺(tái),截至2017年5月份,新浪微博用戶數(shù)已超過(guò)Twitter,達(dá)到3.4億.可見(jiàn),在線社交網(wǎng)絡(luò)已成為連接網(wǎng)絡(luò)虛擬空間和人類(lèi)物理世界不可或缺的橋梁.如果能通過(guò)微博用戶的文本及網(wǎng)絡(luò)交互信息,分析在某一話題下具有情感傾向一致性的用戶群體,對(duì)于微博情感分析、輿情監(jiān)測(cè)及心理學(xué)研究等領(lǐng)域都具有重要意義.例如在網(wǎng)絡(luò)輿情分析方面,通過(guò)挖掘微博熱點(diǎn)事件中的情感社區(qū),可以幫助政府了解網(wǎng)絡(luò)輿情以及不同情感社區(qū)的構(gòu)成;在心理健康分析領(lǐng)域,對(duì)微博用戶進(jìn)行情感社區(qū)劃分,便于進(jìn)一步對(duì)其中的高壓力人群實(shí)施針對(duì)性的心理疏導(dǎo)和專(zhuān)業(yè)干預(yù).
基于此,本文對(duì)面向新浪微博的情感社區(qū)檢測(cè)算法進(jìn)行了深入研究.作為首個(gè)面向中文微博進(jìn)行情感社區(qū)發(fā)現(xiàn)的研究項(xiàng)目,本文首先在構(gòu)建情感社區(qū)檢測(cè)框架的基礎(chǔ)上,融合微博情感表情建立情感詞典,提出基于樸素貝葉斯半詞典半表情(SL-SE-NB)算法進(jìn)行文本情感傾向預(yù)測(cè);并提出一種基于潛在狄利克雷分配(latent Dirichlet allocation,LDA)話題模型的用戶-超話題-關(guān)鍵詞(UTK)模型,使之能準(zhǔn)確挖掘用戶話題,同時(shí)解決微博網(wǎng)絡(luò)稀疏性問(wèn)題;最后由于傳統(tǒng)社區(qū)劃分算法大多基于網(wǎng)絡(luò)結(jié)構(gòu)而忽略用戶產(chǎn)生的文本內(nèi)容,本文在標(biāo)簽傳播算法(label propagation algorithm,LPA)基礎(chǔ)上加入話題概念,并抽取帶有情感傾向的用戶作為種子集進(jìn)行標(biāo)簽傳遞,提出SMB-LPA算法以發(fā)現(xiàn)情感社區(qū).
情感分析和社區(qū)發(fā)現(xiàn)是社交網(wǎng)絡(luò)挖掘中重要的兩個(gè)研究領(lǐng)域,本研究融合了兩個(gè)領(lǐng)域中的相關(guān)技術(shù),下面分別介紹它們的研究成果.
情感分析亦稱(chēng)觀點(diǎn)挖掘,由Nasukawa等在2003年提出,旨在通過(guò)文本分析進(jìn)行情感計(jì)算,從而提取用戶的情感傾向(極性)及所持觀點(diǎn)[6].有研究將情感分析劃分為篇章級(jí)、句子級(jí)和詞及屬性級(jí)三種層次[7].其中詞語(yǔ)級(jí)情感傾向研究是核心,即發(fā)現(xiàn)文檔中的主觀詞或用戶在實(shí)體及屬性上表達(dá)的觀點(diǎn)詞并分析其情感傾向.情感極性包括粗粒度和細(xì)粒度兩種,前者將情感分為正、中、負(fù)三類(lèi),而后者則給出“喜怒哀樂(lè)驚惡恐”等復(fù)雜情緒傾向.目前,社交網(wǎng)絡(luò)情感分析方法分為基于情感詞典(無(wú)監(jiān)督)和基于機(jī)器學(xué)習(xí)(有監(jiān)督)兩類(lèi)[8].
基于詞典和規(guī)則的方法一般不需要訓(xùn)練數(shù)據(jù),通過(guò)構(gòu)造文檔或句子中的情感函數(shù),計(jì)算出情感極性[9].Fersini等[10]綜合考慮形容詞、表情符號(hào)、擬聲詞等作為微博情感分析中的表達(dá)符號(hào),并證明了該方法能夠豐富特征空間及提高情感分類(lèi)的性能.楊佳能等[11]基于情感詞典對(duì)微博文本進(jìn)行依存句法分析并且構(gòu)建情感表達(dá)樹(shù),再根據(jù)制定的規(guī)則計(jì)算微博文本情感強(qiáng)度并判斷文本的情感傾向類(lèi)別.Saif等[12]提出了一種不同于典型情感詞典的方法,即對(duì)Twitter文本進(jìn)行情感分析時(shí),考慮了在不同語(yǔ)境中詞的共生模式以便捕捉其語(yǔ)義,并相應(yīng)更新其在情感詞典中的極性.
基于機(jī)器學(xué)習(xí)的方法則使用含大量標(biāo)注的訓(xùn)練數(shù)據(jù),選擇不同的監(jiān)督學(xué)習(xí)方法如樸素貝葉斯、最大熵、SVM等構(gòu)造分類(lèi)器,實(shí)現(xiàn)對(duì)微博文本的情感極性預(yù)測(cè)[13].Wang提出了一種融合情感詞典和機(jī)器學(xué)習(xí)的方法對(duì)旅游評(píng)論進(jìn)行情感極性分析[14],即采用向量空間模型并通過(guò)情感詞典降低特征空間維度,通過(guò)TF-IDF計(jì)算權(quán)重,再利用SVM分類(lèi)器對(duì)旅游評(píng)論的情感極性分類(lèi).一種深度信任網(wǎng)絡(luò)DBN模型和多模態(tài)特征抽取方法對(duì)中文短文本進(jìn)行情感分類(lèi)亦被提出[15],多模態(tài)特征結(jié)合傳統(tǒng)文本特征作為DBN模型的輸入向量,RBM層利用輸入數(shù)據(jù)的概率分布抽樣來(lái)學(xué)習(xí)隱藏的語(yǔ)義結(jié)構(gòu),最后RBM分類(lèi)層完成對(duì)中文短文本的情感分類(lèi).
社區(qū)發(fā)現(xiàn)又稱(chēng)社群監(jiān)測(cè),用以發(fā)現(xiàn)社交網(wǎng)絡(luò)中的社區(qū)結(jié)構(gòu),相關(guān)算法主要分為3類(lèi),即基于網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的社區(qū)發(fā)現(xiàn)、基于語(yǔ)義的社區(qū)發(fā)現(xiàn)及融合拓?fù)浣Y(jié)構(gòu)和語(yǔ)義的社區(qū)發(fā)現(xiàn)[16].
基于網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的算法分為非重疊社區(qū)劃分和重疊社區(qū)劃分,前者主要包括譜聚類(lèi)方法(如最小割算法[17])、模塊度優(yōu)化方法(如GN算法[18])、基于標(biāo)簽傳遞策略(如LPA)[19],而重疊社區(qū)劃分算法的代表包括基于團(tuán)滲透改進(jìn)的CPM算法[20]、基于種子集傳遞的LMF算法等[21].用戶的文本內(nèi)容是衡量其情感、興趣傾向等的重要載體,此類(lèi)方法的特點(diǎn)是僅考慮用戶之間的拓?fù)潢P(guān)系,用戶間的相似度度量并不全面.
基于語(yǔ)義的社區(qū)發(fā)現(xiàn)算法則通過(guò)文本內(nèi)容的相似性進(jìn)行聚類(lèi),并根據(jù)文本相似性劃分社區(qū).話題模型是典型的文本聚類(lèi)方法.Blei等[22]提出的LDA模型將“話題”概率化,認(rèn)為模擬文章的生成過(guò)程,可以先從文檔-主題分布中抽取一個(gè)主題,再?gòu)闹黝}-詞分布上抽取一個(gè)詞,抽取概率均由狄利克雷分布模擬生成.針對(duì)社交網(wǎng)絡(luò)中出現(xiàn)的短文本數(shù)據(jù),Yang等提出了TS-LDA模型[23],從文本內(nèi)容中抽取出隨時(shí)間變化的潛在動(dòng)態(tài)話題.Song等[24]提出PTM模型,將成對(duì)的用戶關(guān)系融入到話題模型中,以發(fā)現(xiàn)潛在話題和轉(zhuǎn)移話題.A-LDA模型[25]為了能夠抽取出某段時(shí)間內(nèi)的微博熱點(diǎn)話題,在LDA的基礎(chǔ)上加入了時(shí)間屬性和標(biāo)簽屬性.Li等進(jìn)一步提出PAM模型[26],用一個(gè)有向無(wú)環(huán)圖(DAG)表示語(yǔ)義結(jié)構(gòu),不僅可以 描述詞之間的相關(guān)性,而且可以靈活描述主題之間的相關(guān)性,較LDA具有更強(qiáng)的文本表示能力.
融合拓?fù)浣Y(jié)構(gòu)和語(yǔ)義的社區(qū)發(fā)現(xiàn)算法是結(jié)合網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和文本信息建立模型,旨在挖掘有共同興趣的群體.Zhang等提出了一個(gè)聯(lián)合框架,即挖掘興趣社區(qū)時(shí)融合了話題模型和用戶的關(guān)注關(guān)系網(wǎng)[27].Yang等[28]在CESNA算法的基礎(chǔ)上,提出融合網(wǎng)絡(luò)結(jié)構(gòu)和節(jié)點(diǎn)屬性的重疊社區(qū)發(fā)現(xiàn)算法.
與傳統(tǒng)社區(qū)發(fā)現(xiàn)不同,情感社區(qū)檢測(cè)是指挖掘社交網(wǎng)絡(luò)中有相似情感傾向或持相似觀點(diǎn)的社群.盡管社區(qū)發(fā)現(xiàn)的研究成果已經(jīng)頻頻問(wèn)世,情感社區(qū)挖掘的研究才剛剛開(kāi)始.Xu等[5]首先給出“情感社區(qū)”定義,同時(shí)提出兩種情感社區(qū)發(fā)現(xiàn)算法,目標(biāo)是使社區(qū)內(nèi)用戶情感的一致性最大化.通過(guò)Epinions網(wǎng)站API獲取的數(shù)據(jù)建立用戶信任關(guān)系網(wǎng),將用戶對(duì)產(chǎn)品的評(píng)論分為“積極”、“中性”、“消極”三種極性,并基于所提出的算法將社區(qū)劃分為對(duì)應(yīng)的三種情感社區(qū).Wang等[29]提出了兩種情感社區(qū)檢測(cè)方法,目標(biāo)分別是模塊度最大化和最小化情感差異.通過(guò)爬取電影評(píng)論網(wǎng)站Flixster獲取數(shù)據(jù)集并根據(jù)彼此分享影評(píng)以建立朋友關(guān)系網(wǎng),利用提出的情感社區(qū)發(fā)現(xiàn)算法區(qū)分具有不同情感極性的社區(qū).Deitrick等[30]則首先利用隨機(jī)游走策略劃分社區(qū),并在全局社區(qū)內(nèi)及某話題下社區(qū)內(nèi)進(jìn)行不同層次的情感分析,最后通過(guò)@technet社交網(wǎng)絡(luò)數(shù)據(jù)驗(yàn)證所提出算法的有效性.文獻(xiàn)[31]利用情感分析強(qiáng)化社區(qū)發(fā)現(xiàn),即在社區(qū)檢測(cè)考慮評(píng)論、轉(zhuǎn)發(fā)、回復(fù)等文本內(nèi)容作為T(mén)witter特征.
以上成果均面向英文社交網(wǎng)絡(luò),目前尚無(wú)針對(duì)中文社交媒體的情感社區(qū)發(fā)現(xiàn)研究,而該研究對(duì)網(wǎng)絡(luò)輿情、公共心理健康、個(gè)性化推薦等領(lǐng)域均有重要意義和應(yīng)用價(jià)值.
定義1微博用戶集合U:U={u1,u2,…,uN},其中ui表示第i個(gè)用戶,ui∈U,N為微博總用戶數(shù).
定義2微博博文集合B:用戶ui發(fā)表的微博集合為Bi={bi1,bi2,…,biM},其中M表示用戶ui發(fā)表的博文總數(shù),Bi∈B.
定義3博文詞集合W:對(duì)于用戶ui發(fā)表的博文bij可表示為詞的集合Wij={wij1,wij2,…,wijK},K表示bij中包含詞的總個(gè)數(shù),wijK表示博文bij中第K個(gè)詞.
定義4博文表情集合E:對(duì)于用戶ui發(fā)表了微博bij,在該篇博文bij中使用的表情集合為Eij={eij1,eij2,…,eijP},其中P為ui在博文bij中使用表情的個(gè)數(shù),eijP表示博文bij中第P個(gè)表情.
定義5情感詞典集合:本文一共涉及4種詞典,分別是積極情感詞典(用PWD表示)、消極情感詞典(用NWD表示)、積極表情詞典(用PED表示)和消極表情詞典(用NED表示).
定義6博文情感傾向:先分別計(jì)算積極情感詞、消極情感詞、積極表情、消極表情在博文中出現(xiàn)的后驗(yàn)概率Ppw,Pnw,Ppe和Pne,情感傾向計(jì)算如式(1)~式(3)所示.
Aw=Pnw-Ppw.
(1)
Ae=Pne-Ppe.
(2)
A=aAw+bAe.
(3)
其中:Aw為博文考慮情感詞后的情感傾向;Ae為博文考慮表情后的情感傾向;A為二者綜合考慮后博文最終的情感傾向.若A>0,判定該博文的情感傾向?yàn)樨?fù)向;若A<0,判定博文的情感傾向?yàn)檎?;若A=0,則判定該博文情感傾向?yàn)橹行?,其中a和b為參數(shù),a+b=1.
定義7超話題:微博話題主要是指#號(hào)與#號(hào)之間的內(nèi)容,如#魏則西百度推廣事件#,所謂超話題就是進(jìn)一步抽取話題,如上述話題可拆分成#魏則西#和#百度#等超話題.
定義8子話題:本文所提出的UTK模型是基于LDA模型改進(jìn)的,主要是對(duì)用戶-超話題-子話題-關(guān)鍵詞模型建模,在本模型中的子話題相當(dāng)于LDA模型中的話題角色,是基于用戶微博內(nèi)容進(jìn)行抽樣得到的類(lèi)別分布結(jié)果.
定義9情感社區(qū):在特定的話題下,微博用戶對(duì)該話題具有相同情感傾向的社交網(wǎng)絡(luò)群體,稱(chēng)為一個(gè)情感社區(qū).
面向新浪微博情感社區(qū)發(fā)現(xiàn)的總體框架如圖1所示.首先爬取微博文本和用戶關(guān)系;在數(shù)據(jù)預(yù)處理階段,數(shù)據(jù)經(jīng)三輪清洗后,利用構(gòu)建的情感詞典對(duì)文本進(jìn)行分詞處理;對(duì)用戶博文進(jìn)行情感詞和表情詞統(tǒng)計(jì),利用SL-SE-NB算法進(jìn)行情感傾向計(jì)算;接著使用UTK模型進(jìn)行話題抽取,最后抽取帶有情感傾向的用戶作為種子集進(jìn)行標(biāo)簽傳遞,利用SMB-LPA算法發(fā)現(xiàn)情感社區(qū).
圖1 情感社區(qū)檢測(cè)處理框架
構(gòu)建情感詞典時(shí)本文借助了目前所有較權(quán)威的情感詞典,其中有褒貶詞及其近義詞詞典、博森實(shí)驗(yàn)室網(wǎng)絡(luò)情感詞典、清華大學(xué)李軍中文褒貶義詞典、大連理工大學(xué)中文情感詞匯、臺(tái)灣大學(xué)NTUSD簡(jiǎn)體中文情感詞典和知網(wǎng)Hownet情感詞典.去除一些不常用的詞或者短語(yǔ),最后獲得68 432個(gè)正向情感詞,41 382個(gè)負(fù)向情感詞.再?gòu)奈⒉┲刑崛”砬槲淖植⑦M(jìn)行詞頻統(tǒng)計(jì),過(guò)濾不常用的表情符號(hào)后進(jìn)行人工標(biāo)注,共獲得573個(gè)正向情感表情,343個(gè)負(fù)向情感表情.最后,得到由情感詞詞典和情感表情詞典構(gòu)成的情感詞典集合.為預(yù)測(cè)微博文本的情感極性,本文提出了基于情感詞詞典集合和樸素貝葉斯的SL-SE-NB算法,其偽代碼如下.
輸入:情感詞典集合,訓(xùn)練集, 未標(biāo)注的微博數(shù)據(jù)集
輸出:有標(biāo)注的微博數(shù)據(jù)集
1. For eachbijin 訓(xùn)練集
2. 統(tǒng)計(jì)消極訓(xùn)練數(shù)據(jù)集中情感詞及情感表情的權(quán)重;
3. 統(tǒng)計(jì)積極訓(xùn)練數(shù)據(jù)集中情感詞及情感表情的權(quán)重;
4. 統(tǒng)計(jì)中性訓(xùn)練數(shù)據(jù)集中情感詞及情感表情的權(quán)重;
5. End for
6. For eachbijin 未標(biāo)注的微博數(shù)據(jù)集
7. For eachwijK∈Wij‖eijP∈Eij
8. If (wijK∈NegativeWordDic‖wijK∈
Positive WordDic) then
9. 統(tǒng)計(jì)當(dāng)前微博中的情感詞wijK的詞頻;
10. For eachwijKin 當(dāng)前詞的權(quán)重
11. 計(jì)算wijK出現(xiàn)在消極微博中的后驗(yàn)概率;
12. 計(jì)算wijK出現(xiàn)在積極微博中的后驗(yàn)概率;
13. End for
14. End if
15. If (eijP∈NegativeEmojiDic‖eijP∈
PositiveEmojiDic) then
16. 統(tǒng)計(jì)當(dāng)前微博中情感表情eijP的詞頻;
17. For eacheijPin 當(dāng)前表情的權(quán)重
18. 計(jì)算eijP出現(xiàn)在消極微博中的后驗(yàn)概率;
19. 計(jì)算eijP出現(xiàn)在積極微博中的后驗(yàn)概率;
20. End for
21. End if
22. If(A>0) then
23. 極性=-1;
24. Else if (A<0) then
25. 極性=1;
26. else
27. 極性=0
28. End if
29. End if
30. End for
31. End for
SL-SE-NB算法是先訓(xùn)練分類(lèi)器模型再對(duì)測(cè)試數(shù)據(jù)進(jìn)行情感極性預(yù)測(cè)的過(guò)程.其中第1~5行是統(tǒng)計(jì)情感詞和情感表情在消極訓(xùn)練數(shù)據(jù)集、積極訓(xùn)練數(shù)據(jù)集和中性訓(xùn)練數(shù)據(jù)集中出現(xiàn)的權(quán)重,至此分類(lèi)模型訓(xùn)練完畢.第6~7行開(kāi)始遍歷實(shí)驗(yàn)數(shù)據(jù)集中每篇博文的每個(gè)單詞和每個(gè)表情;如果這些情感詞出現(xiàn)在情感詞典(積極情感詞典或者消極情感詞典)中,分別計(jì)算該詞在消極微博中的后驗(yàn)概率和在積極微博中的后驗(yàn)概率,代碼如8~14行所示,NegativeWordDic與PositiveWordDic分別為消極情感詞典與積極情感詞典;同理可以計(jì)算出每篇博文中每個(gè)表情出現(xiàn)在消極微博中的后驗(yàn)概率和每個(gè)表情出現(xiàn)在積極微博中的后驗(yàn)概率,代碼如15~21行,NegativeEmojiDic與PositiveEmojiDic分別為消極表情詞典與積極表情詞典;第22~29行是根據(jù)式(1)~式(3)判斷博文情感極性,但為了使算法達(dá)到最優(yōu)還需進(jìn)行調(diào)參.
LDA是一個(gè)文檔-話題-詞的三層貝葉斯框架模型,可以發(fā)現(xiàn)主題和詞之間的相關(guān)性,卻忽略話題之間的相關(guān)性.本文提出了基于LDA的UTK模型,即利用微博#與#之間的話題,將其加入到LDA模型中,將原LDA模型修改為用戶-超話題-子話題-關(guān)鍵詞的4層模型,旨在準(zhǔn)確地挖掘出用戶主題,同時(shí)解決了微博網(wǎng)絡(luò)稀疏性問(wèn)題.
UTK模型如圖 2所示.
圖2 UTK模型
文檔生成的超話題分布Z1、子話題分布Z2和關(guān)鍵詞分布參數(shù)矩陣為Θ的聯(lián)合概率如式(4)所示.其中w為關(guān)鍵詞的多項(xiàng)式分布,H為超話題多項(xiàng)式分布的先驗(yàn)均勻分布的參數(shù)矩陣,α和β分別是參數(shù)矩陣為Θ和Φ的狄利克雷分布的超參數(shù).
P(w,Z1,Z2|α,β)=P(w|Φ,Z1)·
P(Z1|Θ)P(Z2|H).
(4)
(5)
式中,Δ(·)為狄利克雷分布的歸一化因子.
基于式(5),本文用吉布斯抽樣法對(duì)博文中每個(gè)詞的主題進(jìn)行抽樣,得到UTK模型算法的偽代碼如表1所示.
UTK模型算法中第1~2行分別對(duì)訓(xùn)練集中每篇博文抽取關(guān)鍵詞并加載語(yǔ)料庫(kù).第3~5行是為了保證讓訓(xùn)練的主題個(gè)數(shù)至少為1,第6行計(jì)算詞匯表中關(guān)鍵詞對(duì)的超話題的概率,第7行進(jìn)行吉布斯采樣,通過(guò)計(jì)算文檔-主題矩陣和主題-詞矩陣以獲取Θ和Φ概率矩陣.第8行獲取最大概率的前10個(gè)關(guān)鍵詞對(duì)應(yīng)的超話題,第9~11行是保存每個(gè)主題出現(xiàn)概率最高的10個(gè)詞,至此UTK模型訓(xùn)練完成.第12行是抽取每篇新博文中的關(guān)鍵詞,第13行是結(jié)合新博文和UTK模型中的詞匯表,構(gòu)建一個(gè)新詞匯表.第14行利用Φ矩陣計(jì)算重新采樣每個(gè)詞的話題,第15~17行輸出新文檔中話題概率最高的10個(gè)話題,并把結(jié)果寫(xiě)入到UserTopics文件中.
社區(qū)發(fā)現(xiàn)的經(jīng)典算法包括LPA和GN算法.LPA優(yōu)點(diǎn)是收斂速度快,但遇到多個(gè)標(biāo)簽時(shí),LPA的隨機(jī)選擇會(huì)帶來(lái)算法的不穩(wěn)定,即算法每次執(zhí)行后的結(jié)果都會(huì)不同.GN算法考慮了全網(wǎng)結(jié)構(gòu),找到的社區(qū)準(zhǔn)確率較高,但計(jì)算最短路徑時(shí)時(shí)間復(fù)雜度較高.并且二者均利用網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行社區(qū)檢測(cè),未考慮帶有情感傾向的文本信息,故不能直接用于情感社區(qū)發(fā)現(xiàn).
本文對(duì)上述兩個(gè)算法進(jìn)行優(yōu)化,提出了用于情感社區(qū)挖掘的SMB-LPA算法.在標(biāo)簽初始化部分采用了SL-SE-NB算法的情感傾向計(jì)算結(jié)果,通過(guò)從微博中提取具有代表性的種子集,將其情感極性作為該用戶節(jié)點(diǎn)的標(biāo)簽,這樣就可以基于某個(gè)話題,將其劃分為積極、消極和中性社區(qū).SMB-LPA算法見(jiàn)表2.
第1行加載邊關(guān)系和根據(jù)種子集初始化標(biāo)簽,第2行初始化記錄迭代次數(shù)iter_time.第3~20行是進(jìn)行標(biāo)簽傳遞的過(guò)程,若can_stop()為true且迭代次數(shù)小于最大迭代次數(shù)max_iter,則進(jìn)行標(biāo)簽傳遞.第6~8行若標(biāo)簽為種子集中的標(biāo)簽,則不進(jìn)行標(biāo)簽更新.第9~12行若只有一個(gè)最大標(biāo)簽,直接選取最大標(biāo)簽為新標(biāo)簽.第13~18行若遇到多個(gè)最大標(biāo)簽,則采用最小邊介數(shù)進(jìn)行標(biāo)簽傳遞;第19行將迭代次數(shù)加1進(jìn)入下次標(biāo)簽傳遞.
本文的實(shí)驗(yàn)所需數(shù)據(jù)主要包括了微博用戶內(nèi)容、微博用戶關(guān)系和數(shù)據(jù)清洗完以后的數(shù)據(jù)以及用戶關(guān)系等.本文通過(guò)搭建分布式爬蟲(chóng)框架,爬取了2016年5月2日到2016年5月16日發(fā)布的微博數(shù)據(jù),共搜集9 028 632篇微博,539 564個(gè)用戶.這些微博原數(shù)據(jù)經(jīng)過(guò)3輪數(shù)據(jù)清洗后,清洗掉一些轉(zhuǎn)發(fā)微博、回復(fù)微博、廣告、新聞等內(nèi)容,同時(shí)過(guò)濾了一些中英、中日、中韓混用的微博,并且把繁體微博轉(zhuǎn)化成簡(jiǎn)體微博,大約剩下1 471 234篇微博可供實(shí)驗(yàn)選擇.
因?yàn)楸疚闹饕芯康氖怯?jì)算原創(chuàng)微博的情感傾向,并且主要針對(duì)的是大眾用戶和活躍用戶,鑒于此,本文根據(jù)微博用戶信息又進(jìn)行了一次篩選,最后符合本實(shí)驗(yàn)的微博用戶有以下幾個(gè)特點(diǎn):① 在2016年5月2日到2016年5月16日期間發(fā)表微博篇數(shù)在25到35之間,且沒(méi)有被新浪微博屏蔽的用戶,本文稱(chēng)這些用戶為活躍用戶; ② 用戶必須有粉絲或者關(guān)注;③ 有認(rèn)證信息的用戶不作為研究對(duì)象,因?yàn)橛姓J(rèn)證的大多數(shù)微博用戶發(fā)表的博文是積極的.基于上述要求,本文最后選取了98 250篇微博,3 323個(gè)微博用戶作為實(shí)驗(yàn)數(shù)據(jù)集.最后又爬取了這3 323個(gè)微博的關(guān)注或者粉絲關(guān)系,一共獲得479 543條邊關(guān)系.
本文采用的軟、硬件參數(shù)如表3所示.
首先需要確定式(3)中的兩個(gè)參數(shù)值,其中a為情感詞特征的權(quán)重,b為情感表情特征的權(quán)重.為了使分類(lèi)準(zhǔn)確率最高,本文對(duì)a和b進(jìn)行了參數(shù)設(shè)置.進(jìn)行參數(shù)設(shè)置的數(shù)據(jù)集選取了已經(jīng)標(biāo)注的2 000條數(shù)據(jù)進(jìn)行召回率對(duì)比實(shí)驗(yàn).如圖3所示,當(dāng)a=0.8或者b=0.2,召回率最大.本文選取了基于情感詞典的情感分類(lèi)算法(Senti-Lexicon)[32]、樸素貝葉斯分類(lèi)算法(Naive Bayes) 進(jìn)行性能對(duì)比.本文采用召回率和F1值作為實(shí)驗(yàn)評(píng)價(jià)指標(biāo),結(jié)果見(jiàn)圖4和圖5.
圖3 a取值對(duì)召回率的影響
從圖4中可以看出SL-SE-NB算法比其他兩種算法(Senti-Lexicon和Naive Bayes)的召回率都要高,但是隨著數(shù)據(jù)集樣本量增加,三種算法的召回率都呈遞減趨勢(shì).這主要是因?yàn)闇y(cè)試數(shù)據(jù)集存在一定噪聲數(shù)據(jù),隨著樣本量增加,噪聲數(shù)據(jù)也越來(lái)越多,從而導(dǎo)致了召回率下降.
從圖5中可以看到,本文所提出的SL-SE-NB算法的F1值高于其他兩種算法,但隨著實(shí)驗(yàn)數(shù)據(jù)集樣本量增加,F(xiàn)1值均呈下降趨勢(shì).原因是實(shí)驗(yàn)數(shù)據(jù)集由本實(shí)驗(yàn)室人工標(biāo)注,故存在個(gè)人標(biāo)注差異,數(shù)據(jù)量較小時(shí),這種差異不明顯,隨著數(shù)據(jù)量的增加,差異性就會(huì)顯現(xiàn).
圖4 不同算法的召回率對(duì)比
圖5 不同算法的F1值對(duì)比
在UTK模型中有3個(gè)參數(shù)需要設(shè)置,分別是話題數(shù)K、狄利克雷分布的超參數(shù)α和β,以及迭代次數(shù).在評(píng)價(jià)話題抽取模型的性能時(shí),采用召回率、困惑度作為評(píng)價(jià)指標(biāo);對(duì)比算法選取了LDA模型和PAM模型.
關(guān)于最優(yōu)話題數(shù)K的設(shè)置, Blei等[22]提出了一種根據(jù)設(shè)置不同的topic數(shù)量畫(huà)出話題數(shù)-困惑度曲線圖,然后來(lái)確定最佳的話題K.本文采用該方法設(shè)置話題數(shù)K如圖6所示.可以看出,隨著話題數(shù)增加,困惑度趨于減小;當(dāng)話題數(shù)達(dá)到100以后,困惑度值基本趨于收斂,所以本文取話題數(shù)K=100.此結(jié)果與訓(xùn)練數(shù)據(jù)集比較吻合,訓(xùn)練數(shù)據(jù)集的超話題數(shù)共有102個(gè).這也從側(cè)面說(shuō)明本文所提出的UTK模型可以找出與訓(xùn)練數(shù)據(jù)集中話題個(gè)數(shù)相等的話題.其他參數(shù)如狄利克雷分布的超參數(shù)α和β,及迭代次數(shù),最后又經(jīng)驗(yàn)調(diào)優(yōu)得到α=0.1和β=0.1(向量的每一維都相同,為0.1),而最大迭代次數(shù)為1 000.
圖6 話題-困惑度關(guān)系
測(cè)試數(shù)據(jù)集的超話題編號(hào)集合為{1,12,28,35,42,56,63,71,85,97,101},從圖7中可以看出,UTK話題模型的召回率均高于傳統(tǒng)LDA模型和PAM模型.在1號(hào)超話題和63號(hào)超話題的測(cè)試數(shù)據(jù)集上,UTK模型的召回率可以達(dá)到83.20%和82.56%.但在56號(hào)超話題上UTK的召回率降到了70.45%,原因是它是關(guān)于#戛納電影節(jié)#的一個(gè)超話題,其中涉及到的明星名字非常多,會(huì)導(dǎo)致在話題抽取的時(shí)候把其中關(guān)于某個(gè)明星的內(nèi)容歸類(lèi)到其他超話題中,從而出現(xiàn)召回率降低的情況.相對(duì)于LDA模型,PAM模型融入了層次化思想,不僅可以對(duì)子節(jié)點(diǎn)進(jìn)行聚類(lèi),而且可以抽取更有代表性的父節(jié)點(diǎn)層,所以PAM模型得到的實(shí)驗(yàn)結(jié)果雖不如UTK模型,但是比LDA模型有優(yōu)勢(shì).
圖7 主題質(zhì)量圖
在相同參數(shù)下,分別計(jì)算UTK模型、PAM模型和LDA模型的困惑度,結(jié)果如圖8所示.可以看出,隨著迭代次數(shù)的增加,困惑度趨于收斂,UTK模型的困惑度要比其他模型的困惑度小.這也說(shuō)明UTK模型可以用于真實(shí)數(shù)據(jù)集建模和預(yù)測(cè).同時(shí)也可以看到當(dāng)?shù)螖?shù)超過(guò)1 000時(shí),困惑度基本不再變化,所以本文在真實(shí)數(shù)據(jù)集上進(jìn)行話題抽取的時(shí)候,選取的迭代次數(shù)為1 000.
圖8 迭代次數(shù)-困惑度關(guān)系
本文采用模塊度、規(guī)范化互信息和算法的運(yùn)行時(shí)間等評(píng)價(jià)指標(biāo),對(duì)比算法是LPA,GN,SCD[33],GEMSEC[34]和Edmot[35].使用開(kāi)源框架Karate Club[36]來(lái)實(shí)現(xiàn)SCD,GEMSEC以及Edmot算法,并且在實(shí)現(xiàn)的過(guò)程中,將用戶作為節(jié)點(diǎn),將用戶所發(fā)的經(jīng)過(guò)分詞后的微博作為該節(jié)點(diǎn)的特征.
模塊度是指給定一個(gè)由n個(gè)節(jié)點(diǎn)和m條邊組成的網(wǎng)絡(luò),在任意兩個(gè)節(jié)點(diǎn)vi和vj之間,邊的期望值為(didj)/(2m),其中di和dj分別是兩個(gè)節(jié)點(diǎn)vi和vj的度.考慮一條邊從節(jié)點(diǎn)vi出發(fā),隨機(jī)連接網(wǎng)絡(luò)中的任意節(jié)點(diǎn),那么它以di/(2m)的概率連接節(jié)點(diǎn)vj.由于節(jié)點(diǎn)vi的度為di,也就是說(shuō),這個(gè)節(jié)點(diǎn)有di條邊,所以在兩個(gè)節(jié)點(diǎn)vi和vj之間,邊的期望值為(didj)/(2m).結(jié)合上述解釋?zhuān)K度的計(jì)算公式為
(6)
為了計(jì)算方便常常引入?yún)?shù)1/(2m),讓模塊度值歸一化到-1~1之間.模塊度越大證明社區(qū)劃分的質(zhì)量越好.
規(guī)范化互信息是用來(lái)度量?jī)蓚€(gè)聚類(lèi)結(jié)果的相似度的,計(jì)算公式為
NMI(πa;πb)=
(7)
實(shí)驗(yàn)抽取了兩個(gè)比較活躍的話題進(jìn)行了模塊度計(jì)算,最后的模塊度值是對(duì)5次結(jié)果求平均值取得的.結(jié)果如表4所示,可以看出SMB-LPA算法是6個(gè)算法中模塊度值最大的,同時(shí)每次計(jì)算的模塊度值差別不大,這也說(shuō)明SMB-LPA算法具有很好的穩(wěn)定性.LPA的模塊度值差異較大,這是由標(biāo)簽傳播算法的隨機(jī)性造成的.SCD與GEMSEC算法的模塊度值較小,這是由于聚類(lèi)算法沒(méi)有種子集作為起始標(biāo)簽,僅由節(jié)點(diǎn)的特征來(lái)進(jìn)行聚類(lèi),而且節(jié)點(diǎn)的特征矩陣又較為稀疏,所以聚類(lèi)的結(jié)果中很多社區(qū)只有單一一個(gè)節(jié)點(diǎn),這樣的原因也導(dǎo)致了算法檢測(cè)出的社區(qū)數(shù)量非常多,算法的模塊度與規(guī)范化互信息都很低.而Edmot算法通過(guò)邊增強(qiáng)的方法,增強(qiáng)了輸入網(wǎng)絡(luò)的原始連接結(jié)構(gòu)以生成重新連接的網(wǎng)絡(luò),從重新連接的網(wǎng)絡(luò)中獲得的社區(qū)數(shù)量較少,所以其模塊度較高.雖然Edmot算法的模塊度高,但是其規(guī)范化互信息較低,原因是雖然其劃分出的社區(qū)數(shù)量少,但是劃分的準(zhǔn)確度低,與標(biāo)注值的差異依然很大,所以其模塊度高但是規(guī)范化互信息低.且由圖9可知,SMB-LPA算法的規(guī)范化互信息高于其他的算法.
表4 模塊度值比較
本文對(duì)平均運(yùn)行時(shí)間也進(jìn)行了對(duì)比,即將每個(gè)算法分別運(yùn)行30次求平均值,結(jié)果如表5所示.可以看出LPA的運(yùn)行時(shí)間最短,而SMB-LPA次之,然后就是GN算法,其余算法的運(yùn)行時(shí)間較長(zhǎng),尤其是GEMSEC算法的運(yùn)行時(shí)間特別長(zhǎng).LPA運(yùn)行時(shí)間短的原因是其執(zhí)行時(shí)只需要根據(jù)標(biāo)簽進(jìn)行隨機(jī)傳遞,不需要計(jì)算其他額外變量;而SMB-LPA算法在LPA的基礎(chǔ)上,需要計(jì)算最小邊介數(shù),所以運(yùn)行速度不及LPA; GN算法需計(jì)算全部的邊介數(shù),SMB-LPA算法在最大標(biāo)簽個(gè)數(shù)不唯一時(shí)才需要計(jì)算邊介數(shù),所以SMB-LPA算法要比GN算法的運(yùn)行速度快.SCD,GEMSEC以及Edmot算法由于其在聚類(lèi)過(guò)程中需要將節(jié)點(diǎn)及其鄰接節(jié)點(diǎn)的特征值納入計(jì)算過(guò)程中,而且沒(méi)有種子集作為起始標(biāo)簽進(jìn)行傳遞,所以計(jì)算過(guò)程較長(zhǎng).
圖9 規(guī)范化互信息值比較
表5 運(yùn)行時(shí)間比較
本文針對(duì)新浪微博平臺(tái)構(gòu)建情感社區(qū)檢測(cè)框架,融合微博情感表情建立情感詞典,并基于樸素貝葉斯算法提出SL-SE-NB分類(lèi)模型計(jì)算文本情感傾向;為更準(zhǔn)確地挖掘出用戶主題,加入了超話題的概念,提出一種基于LDA話題模型的用戶-超話題-關(guān)鍵詞UTK模型;在LPA基礎(chǔ)上加入話題概念,并抽取帶有情感傾向的用戶作為種子集進(jìn)行標(biāo)簽傳遞,提出SMB-LPA算法以檢測(cè)情感社區(qū);最后通過(guò)實(shí)驗(yàn)驗(yàn)證了本文算法在召回率、模塊度值、F1值、規(guī)范化信息等指標(biāo)優(yōu)于其他算法.