柴變芳,楊蕾,王建嶺,李仁玲
(1. 河北地質大學 信息工程學院,河北 石家莊 050031;2. 河北中醫學院 圖書館,河北 石家莊 050200)
隨著社交媒體的快速發展,微博、微信等網絡平臺逐漸進入公眾的生活且帶來了極大的便利.人們足不出戶就能知道社會熱點問題及現象,因此越來越多的人不只是瀏覽信息,而是經常發表自己的情感態度及觀點看法.通過對這些信息進行情感分析,可以幫助國家政府部門正確引導社會輿論方向.目前,情感分析技術已經廣泛應用在輿情監控、商業決策、信息預測等領域[1].
自從Nasukawa等[2]在2003年提出情感分析概念以來,便受到了越來越多研究者的關注.當前主要的研究方法有3類:1)基于詞典和規則的方法[3-4].該類方法根據經驗提取文本中的情感詞,然后按照特定的規則對文本進行打分,最后根據分值判斷文本的情感極性.2)基于經典機器學習的方法[5-6].此類方法通過特征工程獲得每個訓練文檔的特征,然后基于訓練集學習情感分類模型,新文檔利用該模型實現情感預測.3)基于深度學習的方法[7-11].該類方法不需要特征工程,以情感分類任務為目標利用深度學習模型自動提取特征,進而訓練情感分類神經網絡模型.
近年來,一些研究者大量使用基于詞典和規則的方法進行情感分類.文獻[3]提出了一種利用單詞的統計特征創建文本分類中特征空間的表達方法.文獻[4]在已有的情感詞典基礎上,通過LDA模型從語料中提取主題詞來擴展特定領域詞典,并在多個領域數據集上進行應用且取得不錯效果.該類方法適用的語料范圍較廣,但靈活度不高,分類結果過于依賴情感詞典.隨著機器學習的發展,基于經典機器學習方法在文本情感分析任務中得到了廣泛的應用.文獻[5]提出了一種基于表情符號的文本自動標注方法.首先從文本中篩選出情感傾向明顯的表情符號作為訓練集,然后用機器學習的方法訓練分類器,最后在人工標注的測試集中驗證并取得了較高的準確率.文獻[6]使用集成機器學習技術來提高所提出方法的效率和可靠性,同時將支持向量機與決策樹合并,在準確性方面提供了更好的分類結果.此類方法雖然提高了分類準確率,但泛化能力較差,需要大量數據且難以充分挖掘文本中詞語更深層次的語義信息.
近來,深度學習在情感分析任務中也取得了一些成果.Le等[7]提出了一種具有不同尺寸卷積核和多類型池化的CNN用于文本分類.陳珂等[8]提出了一種多通道卷積神經網絡,通過將詞向量特征、情感詞特征和位置特征進行組合形成不同通道,再使用CNN進行分類,最終獲得了比普通卷積神經網絡更好的性能.文獻[7]和[8]使用卷積神經網絡模型,利用詞向量、詞語位置信息等來獲取詞語間深層次的情感信息,但對于較長的文本,該方法不能記憶長距離的全局情感信息,只能提取文本的局部特征,導致分類準確率不高.Irsoy等[9]使用循環神經網絡(recurrent neural network,RNN)及長短期記憶網絡(long short-term memory,LSTM)為情感分類構建了深度學習模型.李洋等[10]提出了一種CNN和BiLSTM特征融合模型,有效提高了文本分類準確率.文獻[9]和[10]使用循環神經網絡模型及其各種變體,充分考慮了文本序列的前后依賴關系,但該模型認為文本中各部分信息對分類結果的影響相同,忽略了情感詞語相比于普通詞語對情感傾向影響更大.Araque等[11]提出了一種結合詞語淺層特征和深層特征的模型,充分利用詞語的多方面情感信息進行分類并取得了很好的效果.該文獻將深度學習自動提取的特征和傳統方法手動提取的特征相結合,既充分考慮詞語間深層次信息,又通過傳統方法提取更準確的情感信息.
由于集成分類器在提高效率和準確率方面具有明顯的優勢,一些研究者也將其應用在情感分析任務中.蘇兵杰等[12]采用XGBoost算法對網絡上的商品評論進行情感分析,通過對數據集中的訓練集提取特征,利用XGBoost算法訓練分類器獲得情感分類模型.龔維印等[13]提出了一種基于卷積神經網絡和XGBoost的文本分類模型CNNs-XGB.首先利用word2vec對預處理后的數據進行詞向量表示,其次利用多尺寸卷積核的卷積神經網絡進行數據特征提取,最后利用XGBoost對深度提取的特征進行分類處理.
為了全面考慮文本中詞語表達的情感信息及各部分情感信息的重要程度,提出一種集成多卷積核的卷積神經網絡和注意力雙向長短期記憶網絡模型(MCNN_Att-BiLSTM)的情感分類方法,提高分類準確率.利用注意力機制為BiLSTM獲取的全局特征分配1個權重向量,充分考慮各部分特征對分類結果的影響大小;利用多種不同大小的卷積核,獲取詞語間更全面的局部信息;然后融合這2部分特征,利用集成分類器XGBoost進行情感分類,提高分類的準確率和效率.
提出一個利用深度特征實現文本情感分類的模型MCNN_Att-BiLSTM.針對融合CNN和BiLSTM特征的情感分類方法沒有充分考慮詞語間情感信息的問題,利用多卷積核的卷積神經網絡(MCNN)模型實現局部特征的提取,在CNN中使用多種大小的卷積核,以詞為單位,將提取的不同詞語間特征進行拼接,從而獲得更準確的情感信息.針對CNN_BiLSTM模型未考慮提取的上下文特征對情感分類結果的影響程度問題,利用Att-BiLSTM實現全局關鍵特征提取,在BiLSTM基礎之上增加注意力層,為隱層輸出特征賦予1個權重,可獲得不同特征對情感分類影響程度的量化值.為了進一步提高情感分類的準確率,融合基于MCNN和Att-BiLSTM特征,輸入集成分類器XGBoost實現文本情感分類.基于MCNN_Att-BiLSTM模型的情感分類模型訓練流程如圖1所示.首先對文本進行數據處理,將文本中的每個詞語利用嵌入技術進行向量表示,然后利用MCNN和Att-BiLSTM模型學習文本特征,最后送入集成分類器XGBoost訓練分類模型.新來一個待預測文本,利用此流程可得其情感分類結果.

圖1 MCNN_Att-BiLSTM模型流程Fig.1 MCNN_Att-BiLSTM model flow chart
情感分類模型的輸入為大量的積極和消極評論的文本數據.首先對讀取的每個文本進行分詞處理(英文數據通過空格進行分詞,中文數據使用jieba庫進行分詞),將每個文本數據轉換為詞語的集合.為了提高效率,需要去除其中的停用詞,即一些沒有特定含義的詞語,如英文中的“the”,“is”,“a”等,中文中的“一些”、“一個”等.
文本分詞完成后,根據詞語在文本數據中出現的頻率的大小生成文本詞典.然后將每個文本中的詞語和詞典中的詞序號一一對應形成一種映射關系,使每個文本由詞語的集合轉換為每個詞語在詞典中位置序號的集合.最后將所有文本打亂順序,按照8∶2的比例劃分訓練集和測試集.
在文本情感分析任務中,計算機不能識別英文單詞或中文詞語,因此需要將數據通過編碼向量化.最簡單的一種編碼方式為one-hot編碼[14],為每個文本定義一個由0和1組成的一維向量,長度為文本詞典中詞語的數量,每維表示對應詞語是否在文本中出現,出現為1,否則為0.雖然one-hot編碼可以將詞語轉化為向量,但是形成的向量非常稀疏且維度巨大,不能保留文本的語義關系,使得分類效果并不準確.
為了將詞語轉化為向量且保留文本語義關系,本文選擇Tensorflow框架中的嵌入方式.首先初始化一個符合均勻分布的-1到1的向量矩陣,行數為文本詞典中詞語的數量,列的數量為詞語編碼的維度數量;然后根據數據處理后的位置序號集合在初始化的向量矩陣中查找每個詞語序號對應的向量,使每個文本由詞序號集合轉化為由詞向量構成的向量矩陣.最后將所有的向量矩陣根據batch_size劃分批次,分批輸入2類神經網絡模型中進行訓練.
多卷積核的卷積神經網絡在處理文本時的模型如圖2所示.該模型包括輸入層、多核卷積層、池化層及全連接層4部分.
1) 輸入層.文本矩陣Sj={V(W(1)),…,V(W(m))}.其中V(W(i))∈RK代表矩陣Sj中第i個K維詞向量,Sj∈Rm×K,m代表文本矩陣Sj中的詞語數量.
2) 卷積層.利用多種大小為r×K的卷積核提取文本矩陣Sj的局部特征,具體公式如下:
ci=f(F·V(W(i∶i+r-1))+b),
(1)
其中,ci為文本矩陣卷積后的第i個局部特征;F為r×K的卷積核,b為偏置向量;f為激活函數;V(W(i∶i+r-1))代表Sj中從i到i+r-1共r行向量.在文本矩陣Sj中,卷積核以步長1從上到下滑動,最終得到局部特征向量集合C如下:
C={c1,c2,...,ch-r+1},
(2)
其中,h表示文本中詞的個數,即文本矩陣中的寬.

圖2 MCNN網絡結構Fig.2 MCNN network structure
3) 池化層.采用最大池化的方法提取局部特征中值最大的特征.
di=maxC.
(3)
4) 全連接層.將所有池化后的特征進行組合得到向量
U={d1,d2,...,dn},
(4)
其中,n表示池化層得到的特征向量數.
最后將U輸入softmax分類器中得到分類結果.模型利用訓練數據中的標簽,通過反向傳播算法進行參數優化.
由于RNN適用于處理序列數據,所以被廣泛應用于自然語言處理任務中,但RNN存在梯度消失和梯度爆炸問題.LSTM模型[15]利用門機制控制每一個LSTM單元記憶歷史信息和當前輸入的信息,保留重要的特征,丟棄不重要特征.LSTM單元的門機制表達式如圖3所示.

圖3 LSTM單元模型Fig.3 LSTM unit model
1) 遺忘門
fi=σ(Wf·[ht-1,xt]+bf),
(5)
其中,Wf為權重矩陣,[ht-1,xt]表示把前一單元的隱層輸出和當前的輸入拼接成一個向量,bf為偏置向量,σ是sigmoid函數.
2) 輸入門
it=σ(Wi·[ht-1,xt]+bi),
(6)
(7)

3) 更新單元狀態
(8)
其中,Ct為當前單元狀態,Ct-1為前一時刻單元狀態.
4) 輸出門
ot=σ(W0·[ht-1,xt]+b0),
(9)
其中,ot表示輸出值,W0為權重矩陣,b0為偏置項.
5) LSTM單元最終輸出
ht=ot·tanh(Ct).
(10)
在文本情感分析任務中,標準的LSTM模型可根據前面詞語推測后面詞語的情感信息,后面詞語可根據前面詞語的語義得到更準確的語義表示.雙向長短期記憶網絡(BiLSTM)模型[16]在正向的LSTM基礎上增加反向LSTM,從2個方向收集詞語情感語義表示.為了進一步得到更準確的詞語語義,增加注意力機制,使每個詞語語義表示由其與各個詞語表示的相關性來確定.該相關性對應一個權重向量,最終詞語表示由權重向量與LSTM層輸出的隱含特征相乘再加上偏置向量得到,其通過不斷學習進行優化.Att-BiLSTM模型結構如圖4所示.

圖4 Att-BiLSTM模型Fig.4 Att-BiLSTM model
陳天奇在2014年首次提出XGBoost算法[17],它是一種傳統的Boosting方法,也是一種提升樹模型.該算法將許多樹模型集成在一起,形成一個強分類器,其中樹模型多為CART回歸樹模型.在CART回歸樹模型中使用二叉樹,通過信息增益函數確定最優的劃分屬性.
XGBoost算法的核心思想是通過不斷添加新的回歸樹,不斷進行特征分裂進而生長一棵樹[18].每次添加1棵樹即學習1個新函數用來擬合上次預測的殘差.在預測一個新樣本的分數時,根據該樣本的特征,在每棵樹中對應1個葉子節點,每個葉子節點對應1個分數,最后將每棵樹對應的分數相加即為該樣本的預測值.
(11)
其中F={f(x)=wq(x)}(q∶Rm→T,w∈RT),表示q(x)CART結構,即x在某一個CART樹中葉子節點的位置信息;Wq(x)表示輸入x在某棵CART樹中的分數;T為樹中葉子節點數;fk表示1個CART樹,由樹的結構q和葉子節點的權重w確定.

(12)
其中,Wv為權重矩陣,bv為偏置向量.同時利用反向傳播算法訓練模型,優化參數,使用dropout機制避免過擬合,通過最小化交叉熵調整模型參數,具體公式如下:
(13)

經過網絡模型訓練后得到最終的文本特征,將該特征輸入XGBoost分類器中進行分類獲得最終分類結果.同時使用一階導數和二階導數最小化下列目標函數,優化模型參數
(14)

本文模型的整體流程如圖5所示.

圖5 模型整體流程Fig.5 Overall flow chart of the model
2.1.1 實驗數據
實驗使用3個數據集:第一,Keras內部集成的IMDB影評英文數據集,實驗使用其中的12 500條正面評論和12 500條負面評論進行訓練和測試;第二,由Pang和Lee在2004年ACL會議上使用的txt-sentoken英文數據集[19],包含1 000條正面評論和1 000條負面評論;第三,譚松波-酒店評論中文數據集,包含7 000條正面評論和3 000條負面評論.
2.1.2 數據集劃分
數據經過分詞、去停用詞及向量化處理后按照80%和20%的比例劃分訓練集和測試集.具體劃分如表1所示.

表1 數據集劃分
2.1.3 實驗參數
實驗參數的選取直接影響實驗結果,根據固定參數法,本文分別比較了最大句子長度為100、120、150個詞;將卷積神經網絡的卷積核大小由{3,4,5}擴充到{2,3,4,5,6,7},卷積核數分別取64和128進行比較;dropout對比了0.5、0.7和0.8,BiLSTM層數比較了1層和2層,網絡批次大小(batch_size)對比了100和128對實驗結果的影響.通過以上等參數的對比,發現在各參數取表2的參數值時,模型準確率較好.

表2 模型實驗參數
為了驗證各個模型的分類性能,將融合CNN和BiLSTM特征的模型(CNN_BiLSTM)與本文改進的融合CNN和Att-BiLSTM特征的模型(CNN_Att-BiLSTM)、融合MCNN和Att-BiLSTM特征后輸入XGBoost分類器的模型(MCNN_Att-BiLSTM)在3個數據集上進行了測試.
各個模型在3個數據集1次實驗的損失函數如圖6所示,其中橫軸表示迭代數,縱軸表示訓練集上的損失函數值.由實驗數據可知,在多次迭代后,損失函數值波動較小且趨于穩定.在IMDB數據集上,CNN_BiLSTM模型損失函數值趨向于0.387,CNN_Att-BiLSTM模型損失函數值趨向于0.318,MCNN_Att-BiLSTM模型損失函數值趨向于0.267.在txt-sentoken數據集上,3個模型的損失函數值比較接近,都趨向于0.000 1.在酒店評論數據集上,CNN_BiLSTM模型損失函數值趨向于0.127,CNN_Att-BiLSTM模型損失函數值趨向于0.032,MCNN_Att-BiLSTM模型損失函數值趨向于0.071.
從上述數據和圖6中可以看出,CNN_Att-BiLSTM模型和MCNN_Att-BiLSTM模型的損失函數比CNN_BiLSTM模型收斂速度快,且損失函數值低于CNN_BiLSTM模型.每個模型在3個數據集上都取得了很好的收斂效果.

a.IMDB;b.txt-sentoken;c.譚松波-酒店評論.圖6 各數據集的損失函數Fig.6 Loss of each data set
各個模型在3個數據集上的準確率結果如圖7所示,其中橫軸表示迭代數,縱軸表示測試集準確率.從圖7中可以看出CNN_Att-BiLSTM模型和MCNN_Att-BiLSTM模型的準確率比CNN_BiLSTM模型波動較小.經過計算CNN_Att-BiLSTM模型和MCNN_Att-BiLSTM模型準確率均高于CNN_BiLSTM模型.
本文各模型在3個數據集的上的準確率、召回率、F值分別如表3、表4、表5所示.從表中可以發現,本文改進的MCNN_Att-BiLSTM模型在準確率、召回率及F值方面均優于其他模型.在準確率方面,增加注意力機制的CNN_Att-BiLSTM模型比CNN_BiLSTM模型在IMDB數據集上準確率提升了0.70%,在txt-sentoken數據集上提升了0.66%,在酒店評論數據集上提升了2.89%.增加卷積核和注意力機制的MCNN_Att-BiLSTM模型比CNN_BiLSTM模型在IMDB數據集上準確率提升了1.75%,在txt-sentoken數據集上提升了1.67%,在酒店評論數據集上提升了3.81%.



a.IMDB;b.txt-sentoken;c.譚松波-酒店評論.圖7 各模型的準確率Fig.7 Accuracy of each model

表3 各個模型在測試集上的準確率

表4 各個模型在測試集上的召回率

表5 各個模型在測試集上的F值
在召回率和F值方面,融合CNN和BiLSTM特征模型在IMDB數據集上召回率達到77.0%,F值達到76.8%,在txt-sentoken數據集上召回率達到76.5%,F值達到76.4%,在酒店評論數據集上召回率達到83.5%,F值達到84.0%.而增加注意力機制的CNN_Att-BiLSTM模型考慮了特征對分類結果的不同影響,使得召回率和F值都得到了提升,在IMDB數據集上召回率達到80.1%,F值達到78.6%,在txt-sentoken數據集上召回率達到78.1%,F值達到78.0%,在酒店評論數據集上召回率達到86.7%,F值達到86.9%.本文模型MCNN_Att-BiLSTM通過增加卷積核和注意力機制,不僅提取了詞語間全面的情感信息,而且還考慮了特征對分類結果的不同影響,召回率得到了進一步的提高.在IMDB數據集上召回率達到80.9%,F值達到79.8%,在txt-sentoken數據集上召回率達到79.6%,F值達到78.7%,在酒店評論數據集上召回率達到87.5%,F值達到87.0%.
本文在CNN_BiLSTM模型基礎上,改進了2種模型分別為CNN_Att-BiLSTM模型和MCNN_Att-BiLSTM模型.2種模型能夠充分考慮詞語間局部特征和上下文特征中的重要程度,同時提高了訓練速度.在接下來的工作中,將研究詞語語義特征對分類結果的影響,即將語義特征和詞向量進行融合,通過上述模型實現情感分類.