張寶華 ,李奀林 ,張華平 ,商建云
(1.北京理工大學計算機學院,北京 100081;2.軍委訓練管理部,北京 100142)
情感分析是自然語言處理的研究熱點[1],近幾年來,隨著互聯網用戶的增加,情感分析技術已成為對網民進行觀點挖掘的必不可少的技術手段[2]。然而,新詞頻出是互聯網數據的一大特點,很多詞匯不在已知的情感詞典中,如“廢青”“甴曱”等,由于這些詞極性未知,在進行情感分析時會誤認為其情感權重為零,從而導致分析結果不準確。因此,如何計算新情感詞的權重是當前情感分析工作的難點。
現有的情感權重計算方法大多只根據語義信息計算,忽略了情感詞所在語境,在面對語義未知的詞時,很難得到正確的情感權重,因此,通過語義方法計算得到的情感詞典的準確率較低。如在微博評論“香港法官是最大的甴曱,和那些亂港分子、暴力分子里應外合的太明顯了”,其中由于“甴曱”的意思未知,現有的情感權重計算方法很難得到該詞的情感權重。但是,根據語境信息,我們知道 “暴力”是個負面詞,由“和暴力分子里應外合”可得“甴曱”是一個偏向負面的詞。可以看出,基于語境的方法較適合此類語義未知的新詞。
本文根據情感分析的要素,提出了從構字到篇章的情感分析層次體系,并針對每個層次提出了面向上層的表示方法和情感權重計算方法。在此基礎上,本文提出了一種情感語義單元的自動構建方法,從情感語義單元的構字和語境的情感傾向出發推導其情感權重。本文在真實的評論數據上進行了實驗,實驗結果表明,本文提出的方法可以很好地提取出每個領域對應的情感單元并計算其情感權重,由此得到的情感詞典較其他情感詞典構建方法有更高的準確率。同時,本文提出的情感語義單元可以直接在基于規則的方法和深度學習的方法上使用。
本文第2節針對當前常用的情感詞典構建方法進行了總結,第3節提出了情感分析層次體系,并詳細介紹了每層向上層的表示方法和情感計算公式,第4節提出了情感語義單元自動構建的模型,第5節進行了真實評論數據的實驗對比,結果表明,與當前公開的情感詞典在基于規則的情感分析準確率上,本文方法構建的情感語義單元有約9%的提升,在深度學習方法的情感分析準確率上,本文方法構建的情感語義單元有3%的提升。
基于情感詞典的方法是最早用來進行情感分析的,早期的情感詞典都是通過人工構建[3,4],所含情感詞較少,只有一些常見的形容詞如“高興”“開心”“漂亮”等。洪巍等人[5]提出了基于情感詞典的情感分析方法,其原理與斯坦福基于詞典的情感分析方法基本相同,情感詞典的質量決定了實驗效果。基于機器學習的方法主要是通過提取文本的特征,然后根據某種算法進行分類。機器學習的分類器主要包括最近鄰KNN(K-Nearest Neighbor)、最大熵和支持向量機SVM(Support Vector Machine)等。Pang等人[7]對比了最大熵、SVM和樸素貝葉斯3種機器學習算法,發現在影評數據集上SVM的分類效果更好。曹海濤[8]使用上述機器學習算法對愉悅激活優勢PAD(Pleasure Arousal Dominance)情感語義特征進行了實驗,發現SVM算法的實驗效果較優。隨著深度學習的興起,許多研究者開始使用神經網絡進行情感分類。由于長短時記憶LSTM(Long Short-Term Memory)神經網絡可以保存時序信息,Li等人[9]提出了在情感分析上使用LSTM;Li等人[10]采用卷積神經網絡提取文本的特征;Hassan等人[11]將這2種方法結合起來,使用LSTM代替池化層,減少了局部細節信息的丟失;李衛疆等人[12]在LSTM的基礎上,將詞性特征、位置值特征和依存句法特征,以多通道的方式輸入到雙向長短時記憶網絡中,并取得了很好的效果;Wang等人[13]通過研究樹型結構的區域卷積神經網絡與長短時記憶神經網絡結合模型CNN-BiLSTM(Convolutional Neural Network-Bi-directional Long Short-Term Memory),提出了更細粒度的情感分析方法;邱寧佳等人[14]提出的雙通道中文情感模型結合了卷積神經網絡和雙向長短時記憶神經網絡,同時還利用了文本特征和語法規則。可以看出,情感分析已經從早期以獲取文本特征為主發展到同時結合文本特征和語義規則特征,如何將早期情感詞典方法中的規則結合到深度學習模型中是當前的研究方向。但是目前的研究仍然沒有形成完整的體系,文本方面的特征仍以句子特征為主,缺乏對其他維度特征的研究。
在情感詞典構建方面,Liu等人[15]認為構建情感詞典主要有基于手工標注的方法、基于已知詞典的方法和基于語料庫的方法。本文認為情感詞典的構建方法分為以下3種:基于語義的方法、基于統計的方法和基于深度學習的方法。
基于語義的方法主要是通過選取一些種子情感詞,然后利用同義詞和反義詞進行擴展。Hu等人[16]首先將句子中的形容詞提取出來,然后人工給出20個正負面種子情感詞,根據WordNet,如果形容詞的近義詞和反義詞都在種子情感詞中就可以確定其極性,然后不斷迭代。Hatzivassiloglou等人[17]利用種子情感詞和連接詞進行判斷,如and連接的形容詞往往極性相同。Strapparava等人[18]分別在情感詞典中加入了名詞、動詞、副詞和中性詞,擴展了情感詞典。Kamps等人[19]提出了一種迭代公式計算方法EVA(EVAluate),通過該方法可分別計算出情感詞迭代到正負面已知情感詞的次數,利用迭代到負面情感詞的次數減去迭代到正面情感詞的次數,若差值大于0則為正面情感詞,小于0則為負面情感詞。該方法認為如果一個詞的極性更傾向于正面,則迭代到正面情感詞的次數越少,這種方法引入了少量的統計工作。
基于統計的方法是根據語料庫計算某一領域的情感詞典,最常見的是利用點互信息PMI(Pointwise Mutual Information)[20],其認為如果2個詞同時出現的次數越多,則2個詞相似度越高。因此,結合情感詞典中的正負面情感詞就可以計算得出其他詞的情感極性和權重。Tureny[21]提出利用SO-PMI(Semantic Orientation Pointwise Mutual Information)公式來計算未知情感詞的權重,計算情感詞的正面點互信息和負面點互信息的差值。Tai等人[22]針對PMI做了改進,提出了二階點互信息SEC-PMI(SECond-order Point Mutual Information)的算法,可以計算2個由中間詞連接的詞的PMI。張華平等人[23]提出了一種基于貝葉斯公式的算法,其主要思想是一個詞的構字也是具有情感傾向的,根據已知情感詞典和語料庫計算每個字的情感傾向概率,然后利用貝葉斯公式計算未知情感詞的權重。
基于深度學習的方法是基于詞嵌入(word2vec)技術的,楊陽等人[24]在訓練詞向量的基礎上分別使用了權重遞增法、SVM分類法和中心向量法3種方法進行候選情感詞的傾向判斷,實驗表明權重遞增法和SVM分類法的效果不佳,而中心向量法又依賴人工選取中心點。胡家珩等人[25]提出了在word2vec的基礎上使用全連接層訓練情感詞的分類器,然后對候選情感詞進行分類。Tang等人[26]在word2vec的基礎上,修改了詞袋模型,提出了3種神經網絡模型,將語義信息和情感信息加入到了訓練的詞向量中。李永帥等人[27]提出了三層神經網絡結構的方法,通過CBOW(Continuous Bag Of Words)提取情感信息,然后利用2層雙向LSTM和二叉語義依存結構得到高質量的情感詞典。
本文構建了一個情感分析的層次體系,包括字、元情感詞、復合情感詞、單句、復句和篇章。其中元情感詞是本文新提出的,表示不包含否定詞和程度詞的情感詞。情感單元是指每層中最基礎的部分,每一層都可看做是其上層的情感分析單元,在進行情感分析時,根據每層的情感單元計算對應的權重。
本文認為組成情感詞的字同樣具有情感極性,情感詞的極性在本質上受其構字的影響,因此字在情感分析中應該處于最底層。而否定詞和程度副詞會對情感詞的極性和權重產生影響,因此根據情感詞中是否含有否定詞和程度副詞,將情感詞劃分為元情感詞和復合情感詞。元情感詞處于第2層,復合情感詞在其上層。句子是由多個詞構成的,根據句法規則和句型規則[24],句子可分為單句和復句,因此,句子在詞的上層。其中單句表示不能再拆分的句子,復句表示由關聯詞或者標點符號連接的2個以上的單句組成的句子。篇章是由多個復句組成的。因此,篇章為情感分析的最高層,本文構建的情感分析層次體系具體如圖1所示。

Figure 1 Hierarchical of sentiment analysis圖1 情感分析層次體系
對于元情感詞,字是其情感單元,元情感詞是復合情感詞的情感單元,令L表示字,W=L1,…,LNL表示詞,其中NL為W中包含的字L的個數,則復合情感詞Cs表示如式(1)所示:
Cs=(WD|WN)*WS|WS(WD|WN)*
(1)
其中,WN表示否定詞,如“不是”“從未”“絕不”等;WD表示程度詞,如“非常”“有點兒”等;WS表示簡單情感詞也叫元情感詞,即不含否定詞和程度詞的情感詞,如“公平”“仁慈”,*表示存在0個或者多個。
令weigth表示權重,則元情感詞的權重記為:weigth(WS),程度詞的權重記為weigth(WD)。令score表示情感得分,根據其所包含的否定詞和程度副詞以及組成順序,復合情感詞的情感值計算方式如式(2)所示:
score(Cs)=weight(WS)*D
(2)
其中D為情感詞的影響因子,其計算方式如式(3)所示:
(3)
其中,M為比例因子,第4種情況表示較弱的否定詞+情感詞,所以0 記單句為SS,復合情感詞是單句的情感單元,則SS可以表示如式(4)所示: SS=Cs(W|Cs)* (4) (5) 其中,NC為單句SS中包含的復合情感詞Cs的個數,Csi表示第i個復合情感詞。 記復句為MS,關聯詞為WR,單句是復句的情感單元,則MS可以表示如式(6)所示: MS=(WR1)*Ss1(WRi|Ssi)*(SsNS)* (6) 其中,WR1,WRt分別表示復句中的第1個關聯詞和第i個關聯詞,如“雖然”“但是”。Ss1,Ssi分別表示復句中第1個單句和第i個單句,NS為復句MS中單句SS的個數。 綜上所述,復句MS的情感值score(MS)計算公式如式(7)所示: (7) 其中,weight(WR)是關聯詞的權重,具體計算方法由關聯詞的類型決定,計算公式如表1[28]所示,其中SSi和SSj分別表示第i個和第j個單句。 Table 1 Weight of different types of related words on different positions 計算依據為句型規則,句型規則一般有轉折關系、遞進關系、因果關系和假設關系[29,30]。但是,在實驗中發現,由于因果關系和假設關系存在多種情況,如因果關系“因為你喜歡我,所以我也喜歡你”和“因為你喜歡他,所以我不喜歡你”中,2句的前半句的情感詞相同,但是后半句的情感詞完全相反,所以這里只考慮轉折關系和遞進關系。 令Q表示篇章,則: Q=MS(MS)* (8) 由于篇章是由復句組成的,所以其情感值應該等于復合的情感值累加,如式(9)所示: (9) 其中,Msi表示第i個復句,NM為篇章Q中復句MS的個數。 在本文提出的情感分析層次體系中,詞處于最重要的位置,無論是單句、復句還是篇章的情感值,都可以通過情感單元變換,最終由詞的權重計算得到,在基于規則的方法中,詞典本身就是一個重要的因素,在深度學習方法中,復合情感詞也是重要的情感特征。因此,情感詞是情感分析任務中的基礎情感單元,也叫做情感語義單元。 情感語義單元的構字影響著該單元的基本情感傾向,其語境決定最終情感傾向,在計算其情感權重時必須同時考慮到構字和所在語境。對于一個情感單元WS,設WS=L1,…,LNL,其中,NL為WS中包含的字L的個數,WS的上層是Cs,則其情感權重計算公式如下: weight(WS)=λF(score(Cs))+ (10) 基于情感詞構字方法的主要思想是利用貝葉斯公式[23],根據已有的情感詞典,通過計算候選情感詞構字在給定語料庫中的正負面情感傾向概率得到其極性和權重,以下是對文獻[23]所提出的方法的改進: 根據第3節的層次體系,原文選擇的情感詞典既包含元情感詞也包含復合情感詞,如“不猶豫”為褒義詞,而“猶豫”為貶義詞,在計算時,將否定詞“不”也作為情感詞。但是,“不”實際上只是起到改變極性的作用,在復合情感詞中“不”本身并沒有情感傾向,所以在計算之前需要先處理已知情感詞,將復合情感詞中的程度副詞和否定詞去除,并根據式(2)反向計算得到元情感詞權重。同樣,在計算時也應該只計算元情感詞的權重,再根據式(2)計算得出復合情感詞的權重。 (11) (12) 由此: (13) 由于情感詞典中的詞有正負面之分,所以需要分別計算其屬于正負面的概率,如式(14)所示: (14) (15) 其中,σ為一個很大的數,本文選取為數據集總字數。 最后根據權重排名便可以得到準確率較高的情感詞典。 同一個詞在不同語境中可能會有截然不同的情感極性,如,“他講了個笑話,大家笑的很開心”,“小明今天鬧了個笑話,覺得很沒面子”,這2句中的“笑話”一詞在前句中為褒義詞,在后一句中為貶義詞。因此,在計算情感詞的情感權重時必須考慮到其所在語境。 基于候選情感詞語境的思想是,在一個單句中,句內的情感傾向保持一致,其組成該單句的所有復合情感詞具有相同的極性,假設每個情感單元對SS的情感值貢獻了相同的情感得分,則可據此推測出未知復合情感詞的極性和情感得分。再由式(2)反推出元情感詞的權重。如果某一單句中不含已知情感詞,無法通過已知情感詞典直接計算得出該句的情感值,可以通過句間關系來計算,在表1中提到過4種句型規則,同樣選取轉折關系和遞進關系,具體計算方法如表2所示。 表2中H為權重因子,表示遞進句后句較前句的強烈程度,H>1。綜上所述,未知復合情感詞的權重計算公式如式(16)所示: (16) 其中,NS為包含該情感詞的句子個數,n為單句中包含的復合情感詞的個數。 在實驗中發現,部分詞的情感極性不明顯,既在負面情感句中出現,也在正面情感句中出現,且出現的頻率相差不大。為了避免這部分詞對最終結果造成影響,對所計算的情感單元增加置信度權重,根據其在正負面句子中出現的概率分別計算其正負面置信度,最終根據置信度的大小確定其極性。 Table 2 Calculation method and example of the sentiment score of compound sentiment words 將基于構字和基于語境的方法以最終加權的方式結合,即可得到準確率較高的情感詞典,其中基于情感語義單元語境的權重計算方法的權重較高。由于本文的2種方法都是基于已知情感詞典的,在每次計算出未知情感詞典之后,都可將其加入到已知情感詞典中進行迭代計算。同時對于已知情感詞典中的情感詞權重,該方法也會進行更新調整,最終得到更準確的情感詞典。本文將2種方法加權結合的方法稱為基于層次體系的方法。 本文的數據集選自真實評論數據,包含譚松波酒店評論數據(Hotel)正負面各3 000條,京東上采集的水果(Fruit)、衣服(Clothes)和平板電腦(Ipad)評價,正負面各5 000條,以及豆瓣(Douban)上采集的17萬條電影評論,篩選后保留正負面影評各5萬條。本文的情感詞典選自臺灣大學的NTUSD(National Taiwan University Sentiment Dictionary)、清華大學李軍中文褒貶義詞典以及知網的HowNet,將3部詞典中極性相同的詞放到一起,極性不同的詞去除不用。本文的否定詞詞典和程度詞詞典選自知網,其中程度詞按照知網的分類給予不同的權重,權重對應如表3[28]所示,關聯詞選自新華字典,具體如表4所示。 Table 3 Weight of intensifiers Table 4 Transition words and progressive words 根據文獻[23]中提到的方法,對結果按照計算得出的權重排序,計算排名前200的情感詞的準確率。本文將基于情感語義單元構字的權重計算方法(4.1節)、基于情感語義單元語境的權重計算方法(4.2節)、基于點互信息(SO-PMI)的權重計算方法、基于詞向量的權重計算方法與本文基于情感層次體系的權重計算方法進行對比,實驗結果如表5所示。 Table 5 Accuracy of different methods on the first 200 words with positive and negative sentiment 表5的結果表明,基于構字方法構建的情感詞典的準確率較差,而只使用語境的方法得到的情感詞典的準確率接近構字和語境都用的方法,這說明語境對情感詞的影響較大。同時與基于構字的方法相比,本文方法在準確率上有約3%的提升,所得到的情感詞典更加準確。表6為由層次體系方法得到的情感詞權重的部分結果示例。在實驗結果中發現,基于構字的方法計算得到的情感詞典會出現矛盾的情況,如表7所示,如在水果評論的數據集中“貴”和“不貴”的情感傾向是相同的,表7的結果表明在不加入情感層次體系區分元情感詞和符合情感詞前,基于構字的方法在元情感詞及其組成的復合情感詞權重上有很大的誤差。如“貴”和“挺貴”的權重相同,“大”和“不大”的權重相同。在引入情感層次體系之后,所得情感詞權重符合情感層次體系,根據不同的組成,使不同的復合情感詞有不同的權重。 Table 6 Examples of weight of some sentiment words Table 7 Comparison of partial results of the sentiment hierarchy and the original method 實驗結果主要從精確率P(Precision)、召回率R(Recall)、F1值和準確率acc(accuracy)4個方面進行分析,分別計算5.2節中的5種方法在正負面數據集上的P、R、F1,以及整體的準確率。 實驗設置如下:在Ipad、水果、衣服和豆瓣的評論數據集上,使用基于情感詞典的方法,分別使用5.2節中的5種方法構建適用于該語料的情感詞典,然后用基于規則的方法對語料進行情感評分,結果如表8所示。 Table 8 Experimental results of sentiment dictionary obtained by five methods based on sentiment words in sentiment analysis method 從表8可以看出,本文方法得出的情感詞較原有情感詞在計算情感值時準確率提升了9%。這表明本文方法得到的情感詞典更準確且更適合這個領域,證明了本文方法的有效性。 為了驗證本文提出的情感語義單元構建方法的貢獻,本文在BiLSTM(Bi-directional Long Short-Term Memory)模型上進行了深度學習的對比實驗,實驗設置如下:所有實驗均采用jieba分詞,利用word2vec得到詞向量,最后使用BiLSTM模型進行訓練。前2組實驗輸入為整句,不同的是,第2組實驗在jieba 分詞前將基礎情感詞典加入到用戶詞典中。剩下的6組在訓練數據輸入BiLSTM模型之前都要進行處理,去掉不在情感詞典中的詞。其中第3組使用公開情感詞典的情感詞,第4組是通過SO-PMI[9]方法構建的情感詞典,第5組是使用word2vec權重遞增法[21]構建的情感詞典,第6組是使用構字方法得到的情感詞典,第7組是使用語境方法得到的情感詞典,第8組是使用層次體系方法得到的情感詞典。將數據集隨機選擇30%作為測試集進行實驗,準確率如表9所示。 從表9可以看到,第1組和第2組的結果相差不大,但是前2組的結果要比后6組的結果差,這說明情感詞在情感分析中起著重要的作用,準確、全面的情感詞典可以提高情感分析的準確率。后6組只使用情感詞的實驗表明,較當前的情感詞典構建方法構建的情感詞典,本文方法構建的情感詞典在情感分析實驗上準確率更高,表明了本文方法的有效性。 Table 9 Accuracy of different methods on different datasets 本文首先提出了從字到篇章的情感分析層次體系,針對每層都提出了該層的情感權重表示方法和計算公式,可以通過下層情感單元計算得到相應的情感權重。在此基礎上,本文提出了基于構字和語境的情感語義單元自動構建,同時使用情感詞的構字情感傾向和語境的情感值計算其權重,可以提取出更適合該語料的情感詞典,提高對該語料情感分析的準確率。通過真實評論數據集的實驗,驗證了本文提出的情感語義單元構建方法可以提升情感詞典構建的準確率。與基于規則方法和深度學習方法的情感分析對比實驗表明,本文構建的情感語義單元均有良好的表現,較當前的公開詞典和構建算法構建的詞典,本文方法構建的詞典的情感分析準確率分別提升了9%和3%。
4 情感語義單元的自動構建


4.1 基于情感語義單元構字的權重計算方法


4.2 基于情感語義單元語境的權重計算方法

5 實驗與分析
5.1 數據集與情感詞典


5.2 基于候選情感詞構成的情感詞典構建方法對比



5.3 基于情感詞典方法的對比實驗

5.4 基于深度學習方法的對比實驗

6 結束語