華 蓓,彭雪淳
(廣西大學(xué) 計(jì)算機(jī)與電子信息學(xué)院,廣西 南寧 530004)
新浪微博作為國內(nèi)訪問量最高的社交平臺(tái)之一,憑借其簡(jiǎn)潔、互動(dòng)性強(qiáng)等特征,成為網(wǎng)友們獲取和發(fā)布信息的重要平臺(tái).研究微博文本的情緒分類對(duì)于把握社會(huì)人群或指定用戶的情感動(dòng)態(tài)起到了至關(guān)重要的作用,正確而有效的研究結(jié)果對(duì)于市場(chǎng)分析和預(yù)測(cè)、輿情監(jiān)控等方面具有著重要參考價(jià)值.
現(xiàn)有的文本情緒分類方法可分為兩種:基于情緒詞典的分類方法以及基于機(jī)器學(xué)習(xí)的分類方法.在對(duì)中文文本進(jìn)行情緒分析的研究中,王世泓[1]提出了一種可以有效提高情緒識(shí)別準(zhǔn)確率的情緒詞典擴(kuò)展方法.鄭燕珍[2]以Word Net-Affect詞典作為基礎(chǔ),搭建了一個(gè)性能較高、覆蓋較廣的中文情緒詞典,并構(gòu)建了一細(xì)粒度的中文情緒表達(dá)常識(shí)庫.蔣盛益等人[3]使用深度學(xué)習(xí)工具word2Dec,計(jì)算文本向量空間的相似度,并使用迭代的方式實(shí)現(xiàn)了詞典的增量式擴(kuò)展.李繼東[4]提出通過篩選候選詞對(duì)用于擴(kuò)充詞典的SO-PMI算法進(jìn)行改進(jìn).陳欣等人[5]提出了一種融合基于詞典和規(guī)則分類方法與基于深度學(xué)習(xí)的分類方法的情緒分析模型.石天一[6]針對(duì)于Twitter的多標(biāo)簽標(biāo)注進(jìn)行了研究,提出了一種能夠自動(dòng)標(biāo)注短文本情緒的方法.劉釧[7]針對(duì)文本情緒分析任務(wù),提出一種以自注意力機(jī)制為基礎(chǔ)的雙向長短期記憶算法框架.張璐[8]關(guān)注標(biāo)注語料匱乏問題,面向微博文本數(shù)據(jù),進(jìn)行了情緒分類方法研究.
傳統(tǒng)的以詞典為核心的情緒分析方法僅僅考慮了不同類別情緒詞數(shù)目和權(quán)重的疊加,而忽略了語義規(guī)則在文本分析中起到的關(guān)鍵作用;以機(jī)器學(xué)習(xí)算法為基礎(chǔ)的情緒分析在進(jìn)行特征訓(xùn)練時(shí)考慮了語境,但卻過于依賴目標(biāo)語料,且繁瑣的人工標(biāo)注為研究人員帶來了不小的困難,從而導(dǎo)致訓(xùn)練模型的適用性較差.
本文以情緒詞典和語義分析規(guī)則集為基礎(chǔ),通過擴(kuò)充情緒詞典完善基準(zhǔn)情緒詞和改進(jìn)情感分類策略,得到較為完備的情感分類模型,基于該模型對(duì)中文微博文本進(jìn)行情感分類.
在基于詞典的情緒識(shí)別當(dāng)中,情緒詞典的覆蓋率、情緒詞的完備度在很大程度上決定了情緒分類的準(zhǔn)確率.本文選取目前研究領(lǐng)域中幾個(gè)較為知名的權(quán)威性詞典,將它們按照統(tǒng)一的格式和標(biāo)準(zhǔn)進(jìn)行整合,再通過去重等操作,整理得到一個(gè)基礎(chǔ)中文情緒詞典.由于微博文本具有文字與表情符混合使用、涵蓋大量網(wǎng)絡(luò)熱詞等特征,本文對(duì)表情符號(hào)和網(wǎng)絡(luò)詞匯進(jìn)行了收集、整理和標(biāo)注,用以輔助基礎(chǔ)情緒詞典進(jìn)行判斷,以增強(qiáng)適配性.同時(shí),還收集了程度副詞詞典、否定詞詞典以及轉(zhuǎn)折連詞詞典,豐富詞典的多樣性.最后,使用SO-PMI算法[9]對(duì)中文基礎(chǔ)情緒詞典進(jìn)行了擴(kuò)充,增添了一部分未被情緒詞典所收錄的詞匯,擴(kuò)大情緒詞典的涵蓋率.情緒詞典主要的構(gòu)成成分如圖1所示.
圖1 情緒詞典的主要構(gòu)成成分
本文所選取的原始詞典包括知網(wǎng)發(fā)布的情感分析用詞語集HowNet[10]、臺(tái)灣大學(xué)發(fā)布的簡(jiǎn)體中文情感極性詞典NTUSD[11]、清華大學(xué)李軍發(fā)布的中文褒貶義詞典TSING[12]、大連理工大學(xué)發(fā)布的中文情感詞匯本體庫DUTIR[13]、中文版語文探索與字詞計(jì)算詞典C-LIWC[14]和網(wǎng)絡(luò)發(fā)布的情緒詞典HelloNLP[15].其中DUTIR詞典和C-LIWC詞典情緒分類方式與其他詞典不同.
按照HowNet的情緒分類方式,對(duì)上述詞典進(jìn)行整理和合并,將所有詞典中的情緒詞分成積極和消極兩類.分別針對(duì)兩類情緒詞進(jìn)行去重合并,最終得到16 617個(gè)積極情緒詞和22 239個(gè)消極情緒詞,初步完成中文基礎(chǔ)情緒詞典的構(gòu)建.
相對(duì)于文本,表情符號(hào)可以更直接地傳達(dá)出用戶所要表達(dá)的情緒.本文選擇新浪微博平臺(tái)中用戶使用較多的175個(gè)默認(rèn)表情符號(hào)以及系統(tǒng)輸入法中的241個(gè)emoji進(jìn)行情緒類別分析,共計(jì)416個(gè)表情符號(hào).
基于基礎(chǔ)情緒詞典中收錄的詞匯可以得到表情符號(hào)的情感極性,從而構(gòu)建出表情符號(hào)詞典.對(duì)于微博表情符號(hào),按照對(duì)應(yīng)文本形式內(nèi)容,在中文基礎(chǔ)情緒詞典中進(jìn)行查找.查找成功則以其在中文基礎(chǔ)情緒詞典中的情緒標(biāo)注作為該表情符號(hào)的情緒標(biāo)注;否則,對(duì)其情感分類和情緒強(qiáng)度進(jìn)行人工標(biāo)注.
新浪微博是一個(gè)流動(dòng)的網(wǎng)絡(luò)社交平臺(tái),網(wǎng)絡(luò)詞匯在微博當(dāng)中占有很大的比重,搜集和標(biāo)注網(wǎng)絡(luò)詞匯,并將其加入基礎(chǔ)情緒詞典中,對(duì)于判斷微博文本的情緒類別具有很大的幫助.
本文通過網(wǎng)絡(luò)爬蟲技術(shù)收集了500個(gè)網(wǎng)絡(luò)詞匯以及對(duì)應(yīng)的解釋,作為判斷詞匯情感分類的依據(jù).構(gòu)建網(wǎng)絡(luò)詞匯詞典時(shí),首先對(duì)網(wǎng)絡(luò)詞匯解釋進(jìn)行分詞,在基礎(chǔ)情緒詞典中查找有無相應(yīng)的詞匯,以判斷該網(wǎng)絡(luò)詞匯的情感分類.若同一解釋中包含多個(gè)情感類型詞匯,則通過各類情感詞匯的數(shù)目來判定該網(wǎng)絡(luò)詞匯最終的情緒傾向;對(duì)于未能在基礎(chǔ)情緒詞典中匹配到情緒分類的網(wǎng)絡(luò)詞匯,則人工對(duì)其進(jìn)行分類.
在文本的語義結(jié)構(gòu)中,程度副詞常常被用于修飾情緒詞.不同的程度副詞對(duì)于情緒詞的修飾作用不同,可能使情緒詞的情感強(qiáng)度增強(qiáng)、減弱,甚至逆轉(zhuǎn)情感極性.
本文對(duì)程度副詞設(shè)置了不同的權(quán)值,按照對(duì)情感強(qiáng)度的影響力度由強(qiáng)到弱分成most、very、more、ish、insufficiently、over 共6個(gè)等級(jí),對(duì)應(yīng)權(quán)值分別設(shè)置為6、4、2、0.7、0.2、-0.5.其中情感強(qiáng)度over,表示“過于”,此類程度副詞在某種程度上會(huì)對(duì)情緒的極性起到反轉(zhuǎn)作用,故權(quán)值設(shè)置為-0.5.
在文本的語義結(jié)構(gòu)中,否定詞也會(huì)被用于修飾情緒詞.當(dāng)情緒詞前方出現(xiàn)否定詞時(shí),情緒詞的情感極性會(huì)發(fā)生反轉(zhuǎn).本文整理和收錄的否定詞如“從未”“從不”“不可”等共55個(gè),構(gòu)成否定詞詞典
當(dāng)文本中出現(xiàn)轉(zhuǎn)折連詞時(shí),轉(zhuǎn)折連詞后面的句子所蘊(yùn)含的情緒更能反映文本的整體情緒.因此搜索和識(shí)別轉(zhuǎn)折連詞并加強(qiáng)位于轉(zhuǎn)折詞后面的句子的情感權(quán)值就顯得尤為重要.本文收集整理的轉(zhuǎn)折連詞如“但”“依然”“豈料”等共20個(gè),構(gòu)成轉(zhuǎn)折連詞詞典.
由于新興詞匯的不斷涌現(xiàn),且詞典的規(guī)模和容量受限,有大量的情緒詞未被收錄進(jìn)基礎(chǔ)情緒詞典.在本文的研究中,采用了SO-PMI算法對(duì)基礎(chǔ)情緒詞典進(jìn)行擴(kuò)充.該算法通過計(jì)算目標(biāo)詞與基準(zhǔn)詞的共現(xiàn)概率來判斷目標(biāo)詞是否能被收錄為情緒詞.
傳統(tǒng)的SO-PMI算法對(duì)短文本進(jìn)行處理時(shí)可能會(huì)出現(xiàn)以下兩個(gè)缺點(diǎn):一是目標(biāo)詞和單個(gè)情緒詞在同一條微博中共同出現(xiàn)的頻率過少,導(dǎo)致點(diǎn)互信息(PMI)的計(jì)算無意義,嚴(yán)重影響算法性能.二是僅僅考察一對(duì)詞語之間的共現(xiàn)概率時(shí),往往可能會(huì)存在偏差.
為了提高精度,彌補(bǔ)上述不足,本文對(duì)SO-PMI算法進(jìn)行改進(jìn),具體措施如下.
1) 引入Laplace平滑因子以規(guī)避沒有意義的點(diǎn)互信息計(jì)算.
將情緒分為積極、中性和消極三類,其中具有傾向性的情感類型為積極和消極,對(duì)應(yīng)情緒基準(zhǔn)詞集合P1和P2.針對(duì)每個(gè)基準(zhǔn)詞集合Pi={p1,p2,….,pm} (i=1,2),m表示第i類情緒基準(zhǔn)詞個(gè)數(shù),這里選取了積極和消極基準(zhǔn)詞各50個(gè).為提高匹配精度,從表情符號(hào)詞典中分別選取積極和消極表情符號(hào)各10個(gè)加入基準(zhǔn)詞典,輔助判斷目標(biāo)詞的情緒類別
對(duì)于待計(jì)算情感強(qiáng)度值的目標(biāo)詞集合C,其中單個(gè)目標(biāo)詞表示為cj(j=1,2,…,n),cj與基準(zhǔn)詞之間的PMI計(jì)算公式如(1)所示[16].
(1)
其中,p(cj)、p(pi)分別表示目標(biāo)詞cj和基準(zhǔn)詞pi在文本中出現(xiàn)的概率,p(cj,pi)表示目標(biāo)詞與基準(zhǔn)詞在文本中共同出現(xiàn)的概率.
在計(jì)算概率時(shí),為避免單個(gè)詞匯在一條微博中多次出現(xiàn)而影響結(jié)果,采用文檔頻率進(jìn)行近似計(jì)算,整理后得到PMI計(jì)算公式如(2)所示.
(2)
其中,count(cj,pi)、count(cj)、count(pi)分別代表目標(biāo)詞cj和基準(zhǔn)詞pi共同出現(xiàn)的微博文本數(shù)量、包含目標(biāo)詞cj的微博文本數(shù)量以及包含基準(zhǔn)詞pi的微博文本數(shù)量,q表示參與計(jì)算的微博文本總條數(shù).
由于當(dāng)目標(biāo)詞和基準(zhǔn)詞出現(xiàn)在同一條微博中的次數(shù)為零時(shí)會(huì)導(dǎo)致PMI值無意義,故在共現(xiàn)概率計(jì)算公式中引入Laplace平滑進(jìn)行改進(jìn),如(3)所示.
(3)
得到PMI公式如(4)所示.
(4)
2) 引入多點(diǎn)擴(kuò)充,解決目標(biāo)詞語與單個(gè)基準(zhǔn)詞共現(xiàn)概率過低的問題[17].
將每一情緒類別下的情緒基準(zhǔn)詞都整合成一基準(zhǔn)詞集合.對(duì)于每一個(gè)目標(biāo)詞,計(jì)算其與集合中每一個(gè)基準(zhǔn)詞的PMI值,最終綜合集合整體的PMI值,得到目標(biāo)詞最終所屬的情緒類別.(5)為單一集合下SO-PMI均值計(jì)算公式.
(5)
根據(jù)(5)可以得到目標(biāo)詞cj與基準(zhǔn)詞集合Pi(i=1,2) 之間的SO-PMI平均值.以平均值中最大項(xiàng)所對(duì)應(yīng)的基準(zhǔn)詞所在集合的情緒類型作為目標(biāo)詞的情緒分類.
傳統(tǒng)的以詞典為核心的情緒分類中,文本的情感強(qiáng)度僅僅通過情緒詞數(shù)目的累加計(jì)算得到,忽略了文本中語義規(guī)則對(duì)于情緒詞所產(chǎn)生的影響.另外,由于微博文本的長度較短,不具備豐富的上下文環(huán)境,因此在利用考慮上下文環(huán)境和句法修辭這一方法對(duì)文本進(jìn)行情緒類別的劃分時(shí),所得到的效果往往不盡人意.針對(duì)上述缺點(diǎn),本文采用情緒詞典和語義規(guī)則集相結(jié)合的方式對(duì)微博文本進(jìn)行情緒類別劃分.
對(duì)微博文本進(jìn)行分詞后得到分詞列表,然后以列表中情緒詞為核心,在微博文本中查找情緒詞前面或者后面出現(xiàn)的修飾詞,根據(jù)查找的結(jié)果構(gòu)成情緒詞組合.
通過對(duì)情緒詞的組合方式進(jìn)行分析后,可以得出以下的語義規(guī)律:以情緒詞為核心,當(dāng)情緒詞前面或后面出現(xiàn)程度副詞時(shí),會(huì)對(duì)情緒的強(qiáng)度產(chǎn)生影響;而當(dāng)情緒詞前面出現(xiàn)否定詞時(shí),會(huì)使情緒的極性發(fā)生反轉(zhuǎn).整理得出常見的情緒詞組合類型如表1所示.
表1 情緒詞組合類型表
3.2.1 情緒詞組合類型情感強(qiáng)度值計(jì)算
對(duì)各情緒詞組合類型按下述規(guī)則計(jì)算情感強(qiáng)度值E:
1)僅含情感詞:情感強(qiáng)度E的值為組合中情緒詞的個(gè)數(shù),即E=1.
2)否定詞+情感詞:情緒詞的情感極性發(fā)生變化,取E=(-1)*1.
3)程度副詞+情感詞:情緒詞的情感強(qiáng)度會(huì)發(fā)生變化,取E=α*1.其中,α表示組合中程度詞的強(qiáng)度權(quán)值.
4)否定詞+程度副詞+情感詞:此種情況否定詞和程度副詞對(duì)于情緒詞產(chǎn)生的影響需要分情況討論.對(duì)于積極情緒詞如“沒有/很/開心”,修飾詞不僅改變了組合的情感極性,還削弱了組合的情感強(qiáng)度,在計(jì)算情感強(qiáng)度時(shí)引入修正權(quán)值m=0.5,取E=(-1)*αm;對(duì)于消極情緒詞如“不/太/討厭”,修飾詞沒有改變組合的情感極性,只削弱了組合的情感強(qiáng)度,此時(shí)取m值設(shè)置為0.2,E=αm.
5)程度副詞+否定詞+情感詞:此時(shí)否定詞對(duì)情緒詞的情感極性產(chǎn)生影響,程度副詞對(duì)情緒詞的情感強(qiáng)度產(chǎn)生影響,情感強(qiáng)度E=(-1)*α.
6)否定詞+否定詞+情感詞:情緒詞的情感極性未發(fā)生改變,情感強(qiáng)度E=(-1)* (-1)*1.
3.2.2 單句情感強(qiáng)度值計(jì)算
計(jì)算完組合情緒詞的情感強(qiáng)度值,得到組合整體在第i類情緒分類下的情感強(qiáng)度值為EWi.單個(gè)句子第i類情緒的情感強(qiáng)度值計(jì)算公式如(6).
(6)
其中變量n表示單個(gè)句子中該類情緒劃分下組合情緒詞的個(gè)數(shù).
句末出現(xiàn)感嘆號(hào),則情緒被加強(qiáng),取權(quán)值為2,修正單個(gè)句子i類情緒強(qiáng)弱程度值公式如(7).
Ei=2*Ei
(7)
句末出現(xiàn)問號(hào),此時(shí)情感偏向消極.對(duì)于整體情緒為積極、消極的句子,分別取權(quán)值-1.5和1.5,修正i類情緒的強(qiáng)弱程度值的計(jì)算公式分別如(8)和(9)所示.
Ei=(-1.5)*Ei
(8)
Ei=1.5*Ei
(9)
若句中包含轉(zhuǎn)折連詞,位于轉(zhuǎn)折連詞后面句子的情感詞組合類型的權(quán)重會(huì)被加強(qiáng).對(duì)于轉(zhuǎn)折連詞后方的情感詞組合類型,仍按照前述計(jì)算得到對(duì)應(yīng)i類情緒的強(qiáng)弱程度值Ei’.此時(shí)引入組合修正權(quán)值4,修正組合整體對(duì)應(yīng)i類情緒的強(qiáng)弱程度值公式如(10)所示.
(10)
3.2.3 文本整體情感強(qiáng)度值計(jì)算
在計(jì)算微博文本整體情感強(qiáng)度時(shí),還需計(jì)算微博中表情符號(hào)的情感強(qiáng)度.對(duì)于第i類情緒,表情符號(hào)的情感強(qiáng)度計(jì)算公式如(11)所示.
EMi=βi
(11)
其中,βi表示該表情符號(hào)在表情符號(hào)詞典中的i分類下的情感強(qiáng)度值.
綜上得到單條微博中第i類情緒的情感強(qiáng)度值的計(jì)算公式如(12)所示.
(12)
其中,變量c表示每條微博文本中劃分子句的個(gè)數(shù),變量n'表示轉(zhuǎn)折連詞后的子句中組合情緒詞的個(gè)數(shù),s為第k類情緒下表情符號(hào)的個(gè)數(shù).
用積極情緒強(qiáng)度值減去消極情緒強(qiáng)度值得到最終微博總體情緒強(qiáng)度值,得到單條微博文本Item的情緒強(qiáng)度值計(jì)算公式如(13)所示.
EItem=E1-E2
(13)
情緒判斷規(guī)則公式如(14)所示.
(14)
對(duì)于單條微博,本文提出的情緒類別識(shí)別方法分為四個(gè)步驟:
1)對(duì)微博文本進(jìn)行預(yù)處理,去除表情符號(hào)、網(wǎng)頁鏈接等噪聲信息,完成過濾操作后,對(duì)微博進(jìn)行分句;
2)對(duì)于每一條句子,對(duì)其進(jìn)行分詞,并在情緒詞典中匹配和查找是否有對(duì)應(yīng)的詞匯,若找到,則進(jìn)一步搜索情緒詞附近是否含有修飾詞語,最終得到組合情緒詞;
3)疊加每個(gè)組合情緒詞在對(duì)應(yīng)情緒類別下的情緒強(qiáng)度;
4)加入微博中表情符號(hào)所對(duì)應(yīng)的情緒強(qiáng)度,得到單條微博最終的情緒強(qiáng)度,并判斷得出微博的情緒類別.
本實(shí)驗(yàn)采用數(shù)據(jù)集包括中國計(jì)算機(jī)學(xué)會(huì)中文信息技術(shù)專業(yè)委員會(huì)發(fā)布的微博測(cè)評(píng)語料集NLP&CC和開源微博數(shù)據(jù)集weibo_senti_100k.考慮到微博不斷更新?lián)Q代,新的表達(dá)方式不斷涌現(xiàn),實(shí)驗(yàn)爬取了近半年“熱門”專欄下發(fā)布的微博內(nèi)容,獲得大約20萬條微博語料,篩除和整理后,選取了其中的7 000條進(jìn)行標(biāo)注,將微博的情感分為積極、中性和消極三大類.
將上述三種語料整合到一起,得到共計(jì)27 768條帶標(biāo)注的數(shù)據(jù),數(shù)據(jù)集中各情緒類別對(duì)應(yīng)的微博條數(shù)如表2所示.
表2 實(shí)驗(yàn)數(shù)據(jù)集的情緒類別分布
本次實(shí)驗(yàn)采用正確率P(Precision)作為指標(biāo)來衡量情緒分類模型的效能,它直觀地反映出了系統(tǒng)識(shí)別情緒類別的精確程度.正確率的求值公式如(15)所示.
(15)
其中,c表示情緒分類模型所判定的情緒類別與人工標(biāo)注的情緒類別相同的微博語料數(shù)量,a是參與判定的微博語料總數(shù).
本文最終構(gòu)建得到的情緒詞典包含了多個(gè)組成成分,包括基礎(chǔ)情緒詞典、表情符號(hào)情緒詞典、網(wǎng)絡(luò)詞匯情緒詞典以及根據(jù)SO-PMI算法擴(kuò)充得到的情緒詞典等.本實(shí)驗(yàn)依照單一變量的原則,以基礎(chǔ)情緒詞典為基準(zhǔn),依次向其中添加各個(gè)附加詞典,以觀察加入不同詞典對(duì)情緒識(shí)別正確率的影響.最終得到的實(shí)驗(yàn)結(jié)果如表3所示.
表3 實(shí)驗(yàn)結(jié)果表格
根據(jù)表3實(shí)驗(yàn)結(jié)果,可以得出以下結(jié)論:
1)單獨(dú)使用中文基礎(chǔ)情緒詞典來判斷微博情感類別時(shí)正確率較低,分析原因可能是因?yàn)楹雎粤宋⒉┲匈嫡Z、方言等非正式用語對(duì)于判斷造成的影響.
2)引入表情符號(hào)詞典和網(wǎng)絡(luò)詞匯詞典后,可以看到機(jī)器識(shí)別的正確率得到了明顯的提升,這說明表情符號(hào)和網(wǎng)絡(luò)詞匯在情緒強(qiáng)度計(jì)算以及情緒類別判斷當(dāng)中起到了重要的作用,成為獨(dú)立于文本的重要判斷依據(jù).
3)使用SO-PMI算法對(duì)情緒詞典進(jìn)行擴(kuò)充之后,可以看到情緒識(shí)別的正確率得到了一定的提升.這說明詞典的完備性在情緒的識(shí)別中也很重要,情緒詞典越完善,微博文本的情緒傾向就更容易被識(shí)別出來.
4)引入規(guī)則集進(jìn)行計(jì)算之后,情緒識(shí)別的正確率提升到了87.18%.這說明分析文本中蘊(yùn)含的語義規(guī)則在情緒識(shí)別中至關(guān)重要,完備的情感強(qiáng)度值計(jì)算體系有助于提高情緒類別劃分的準(zhǔn)確率.
本文對(duì)現(xiàn)有情緒詞典進(jìn)行標(biāo)注和整合,加入表情符號(hào)和網(wǎng)絡(luò)詞匯等輔助詞典,并使用改進(jìn)的SO-PMI算法進(jìn)行新詞擴(kuò)充,得到一個(gè)較為完備的中文情緒詞典.設(shè)計(jì)了一套組合情緒判定規(guī)則,基于此規(guī)則構(gòu)建了情緒分類模型.實(shí)驗(yàn)表明,利用該模型進(jìn)行微博用戶情緒分類具有較高的精確度.