潘 列,曾 誠,2,3*,張海豐,溫超東,郝儒松,何 鵬,2,3
(1.湖北大學計算機與信息工程學院,武漢 430062;2.湖北省軟件工程工程技術研究中心(湖北大學),武漢 430062;3.智慧政務與人工智能應用湖北省工程研究中心(湖北大學),武漢 430062)
隨著網民數量的增長,越來越多的評論信息不斷涌現。網民可以在政府網站、微博等公眾平臺發表對各類事情的看法,表達自己的情感態度。自然語言處理中的情感分析任務在其中扮演越來越重要的角色,發揮重要的作用。從政府的角度來看,通過輿論來分析公眾對社會熱點事件的情感,了解公眾輿論,對政府及管理部門防范危險事件的發生具有一定的意義;從企業角度來看,可以利用輿情提高自身的綜合競爭力;從公眾角度來看,可以利用輿情導向為自身生活工作提供重要的參考依據。當前,無論是在政府平臺,還是網絡電商行業都有情感分析方面的應用,但由于語言的復雜性、多樣性,以及隨著時間發展不斷涌現的網絡詞匯等因素的綜合影響,中文文本情感分析任務仍具有挑戰性,且具有較大的研究價值。
為了更好地應用文本的語義信息、上下文信息以及各通道之間的關聯信息,提升模型對文本情感分析能力,本文將廣義自回歸預訓練語言模型XLNet 與循環卷積神經網絡(Recurrent Convolutional Neural Network,RCNN)相結合,提出了一種基于XLNet-RCNN 的文本情感分析方法。在三個公開情感分析數據集上與其他現有方法進行對比實驗,結果驗證本文方法在文本情感分析任務中的有效性。
文本分類任務中的二分類問題情感分析主要包含兩個重要步驟,首先是文本特征提取,其次是文本特征分析與分類。其中對文本特征的提取與表示,許多相關專業研究者耗費大量時間精力對其進行探索研究。例如傳統機器學習中的分類算法有樸素貝葉斯(Naive Bayes)、支持向量機(Support Vector Machine,SVM)、K 最鄰(K-Nearest Neighbors,KNN)方法等,這些機器學習方法都曾被普遍應用于工業領域,但其缺點是構造分類器之前,需要構建復雜的特征,工程成本較高,并且采用傳統詞袋(Bag-of-Words,BoW)模型表示文本,導致文本特征數據存在維數高、矩陣稀疏等問題,因此導致文本分類效果不佳。
在深度學習研究中,出現了更為有效的文本表示方法。Mikolov 等在2013 年提出Word2Vec 模型對提取到的文本特征進行表示,Pennington 等在2014年提出全局向量(Global Vectors,GloVe)對文本特征進行表示。上述兩種文本特征表示方法雖能有效解決特征表示維度的問題,但是這兩種方法均采用靜態方式對文本特征進行表示,未考慮文本的位置信息,對于同一詞在不同上下文關系卻表示為相同的詞向量,也不能解決一詞多義問題。
為了解決文本信息表示不準確問題,Peters 等提出了基于雙向長短期記憶網絡的語言模型嵌入(Embeddings from Language MOdels,ELMO),Radford 等提出了生成式預訓練(Generative Pre-Training,GPT)模型,其中GPT使用了Transformer 的decoder 結構,但其在文本encoder 方法存在不足。Devlin 等提出了基于Transformers的雙向編碼預訓練語言模型BERT(Bidirectional Encoder Representations from Transformers)避免了GPT 模型出現的問題;Lan 等在2019年提出了輕量化的BERT 模型ALBERT(A Lite BERT);曾誠等提出的ALBERT-CRNN 情感分析方法對情感分類效果進行了提升,但其未充分考慮文本語序問題。基于Transformer-XL特征提取器的提出,Yang 等提出了XLNet,該模型將Transformer-XL 的分割循環機制和相對編碼范式(relative encoding)整合到訓練中,并對Transformer-XL的網絡參數進行修改,移除其模糊性,相較于其他模型提升了效果。
情感分析任務中文本特征分析分類方法可分為三種:詞典和規則方法、傳統機器學習方法和深度學習方法。其中前兩種分析分類方法實現簡單,原理容易理解,但對于不同領域的泛化能力和遷移能力較差,分類的準確度也不高,因此基于深度學習的情感分析分類方法越來越受到關注。Socher 等將循環神經網絡(Recurrent Neural Network,RNN)結合上下文信息應用到自然語言處理任務中。Kim為解決傳統算法不足,提出文本卷積神經網絡(Text Convolutional Neural Network,TextCNN)對輸入文本進行卷積、池化計算,獲取文本的多維信息。Cho 等提出了基于循環神經網絡的長短期記憶(Long Short-Term Memory,LSTM)。在此基礎上,Dey 等改進出LSTM 的另一個變體門控循環單元(Gated Recurrent Unit,GRU)網絡,該模型將長短期記憶網絡的輸入、遺忘門合并修改為更新門,同時也融合細胞、隱含兩種狀態,使得新模型更加簡單實用。由于卷積神經網絡(Convolutional Neural Network,CNN)不能獲得輸入文本中的長期依賴關系,循環神經網絡在提取評論文本特征時可能出現訓練不穩定無法提取深層語義信息的情況,并且對整個評論文本進行單向建模有可能會忽略一些對文本分類重要的局部上下文信息,導致其在一些文本分類任務上出現性能不佳等問題。針對以上所述問題,Lai 等提出了一種結合CNN 與BiGRU 的RCNN 模型,該模型使用BiGRU雙向抽取深層語序信息,并使用CNN獲取文本的重要成分,充分利用了CNN和BiGRU各自的優勢,顯著提升了模型的效果。
現有的預訓練語言模型可分為自回歸(AutoRegression,AR)語言模型和自編碼(AutoEncoder,AE)語言模型。AR 僅能學習到依賴關系,AE 僅能學習到深層雙向語義信息,兩種模型單獨使用都存在一定的不足。
XLNet結合了AR 和AE 的優勢,彌補了單獨使用AR和AE 語言模型的不足,在AR 上實現雙向預測。XLNet 的核心思想是使用排列語言模型(Permutation Language Model,PLM)方法,將句子中的token 隨機排列組合,然后用AR 來預測末尾的token,這樣既可以利用當前token
的雙向位置信息,也可以學習到各token 之間的依賴關系。具體PLM 實例如圖1 所示。假設原始輸入文本為{1,2,3,4,5},使用PLM 隨機打亂序列順序,然后依次使用AR 預測token,每個token 都可以利用前token 信息。圖1 排列語言模型實例Fig.1 Permutation language model instance
XLNet 是一種可以獲得雙向上下文信息的自回歸語言模型,該模型是在大規模無監督語料上訓練所得,可以通過上下文動態計算向量,用來表示字的多義性。該模型的核心是以排列組合的方式重構輸入文本。由于重構方式打亂了句子的順序,而在預測時token 的初始位置信息也非常重要,并且在預測時需要將token 的內容信息遮蔽,如果將待預測的信息輸入,模型就無法學到知識。因此XLNet 采用雙流自注意力(Two-Stream Self-Attention)方法計算:Query Stream 計算每個token,其中包含token 在原始句子中的位置信息,而Content Stream 用于計算每個token 的內容信息。具體計算方法如圖2 所示。
圖2 雙流自注意力計算Fig.2 Two-stream self-attention calculation
Query Stream 用g
表示,Content Stream 用h
表示,使用其對位置進行預測時,Q
(Query)向量是用g
計算得到的,包含token 的位置信息,而K
(key)和V
(value)是通過h
計算得到,其中包含其他token 的內容信息。其中Memory
表示前一個XLNet 中的內容信息。對于XLNet 中的Transformer-XL 在繼承了Transformer 結構的基礎上引入循環機制和相對位置編碼的概念。為了更加快捷地處理數據,首先在評論文本數據輸入階段把文本序列劃分為固定長度的文本片段,其次使用Transformer 提取評論文本片段信息,但是這樣就會遺失相鄰文本序列的語序相關信息,長期以來甚至比不上機器學習模型RNN。因此,引入RNN 來提取隱藏狀態信息,作為文本長期依賴的基礎,Transformer-XL 將隱藏的狀態信息插入片段中,并存儲前一階段提取的文本片段信息,最后將其提供給下一個片段進行預測。這樣不僅可以防止序列信息的丟失,而且可以更充分地挖掘和保留長距離文本信息。圖3 所示為評論文本序列間引入循環機制,從而實現隱性狀態信息循環傳遞,其中灰線表示儲存的狀態信息。因為BERT 模型提取語義信息時沒有儲存前一序列的信息,所以在預測X
時沒有可以利用的信息,從而導致預測過程存在不足。而XLNet 模型則可以利用前一序列中儲存的X
、X
、X
信息,幫助下一序列進行預測,實現了信息的循環傳遞。圖3 XLNet循環機制信息傳遞Fig.3 XLNet cycle mechanism for information transmission
基線Transformer 未充分考慮不同片段中出現同一詞的可能性,而在對評論文本位置編碼過程中這種情況是存在的,如果仍然使用絕對位置編碼,那么同一字在不同語境的表示完全一樣,則不能體現同一個字在不同語境中的區別。絕對編碼公式如下所示:
V
表示當前序列向量編碼;V
表示上一序列向量編碼;TV
表示當前片段文本向量編碼;PV
表示當前序列位置編碼。可以發現不同序列中PV
是不變的,即若文本序列中存在相同的字,則字的編碼表示是一樣的。因此,為了更直觀地體現絕對位置編碼與相對位置編碼之間的區別,列出了基線Transformer 中各文本序列的自注意力機制公式:E
、E
分別表示i
,j
的文本序列向量;U
、U
分別表示字i
,j
的位置向量,因為使用的是絕對位置向量,所以U
=U
;W
表示權重矩陣。引入相對位置編碼后,基線Transformer 的自注意力機制公式變為:R
表示第i
字與第j
字之間的相對位置距離。XLNet 以Transformer-XL 框架為核心,通過引入循環傳遞機制和相對位置信息編碼,可以充分利用文本語境信息,并且結合每個字上下文的信息,更好地表征字的多義性,體現了自回歸模型的優越性。
圖4 GRU結構Fig.4 GRU structure
RCNN 由循環神經網絡與CNN 結合而來,網絡結構如圖5 所示。RCNN 主要由雙向門控循環網絡BiGRU 層和池化層組成。式(5)、(6)將文本預處理得到的特征X
,X
,…,X
輸入到雙向循環神經網絡BiGRU 中學習輸入文本的上下文語境信息得到F
、F
;式(7)將BiGRU 層輸出的上下文特征與預訓練輸入的特征相拼接,并通過tanh 激活函數計算歸一化后文本特征F
;式(8)將計算輸出的文本特征F
進行池化MaxPool 操作得到文本特征F
,池化操作可以使神經網絡將有利于分類的特征放大,提高分類的準確性,最后使用Softmax 進行分類,從而得出文本的情感極性。圖5 RCNN結構Fig.5 RCNN structure
本文提出的XLNet-RCNN 文本情感分析方法主要包括以下步驟:1)對數據集進行清洗,剔除不規范或會對分析結果產生影響的噪聲數據;2)在自回歸語言模型XLNet 上使用截取文本平均長度的方法進行微調(fine-tuning)訓練,得到最優效果,并保存文本的動態特征;3)使用結合BiGRU 與MaxPool 的神經網絡模型RCNN 對文本的動態特征進行訓練,從而獲得每條文本數據的深層語義特征;4)利用Softmax函數對文本的深層語義特征進行分類,最終計算出每條輸入文本數據的情感極性。
XLNet-RCNN 方法的結構如圖6 所示,主要由以下6 個部分組成:輸入層、XLNet 層、RCNN 層(包括BiGRU 層和池化層)、池化層、Softmax 層和輸出層。
圖6 XLNet-RCNN方法結構Fig.6 XLNet-RCNN method structure
具體實驗流程如下:
步驟1 數據預處理。將數據文本進行正則化處理,刪去影響情感分析的文本片段,例如微博數據集中評論的用戶名會對分類結果產生影響,剔除不必要的用戶名片段,提高數據的規范性。
步驟2 數據輸入。在輸入層將清洗后的文本數據輸入到模型XLNet,輸入的文本數據X=
(X
,X
,…,X
),其中X
表示該文本的第i
個字。步驟3 提取文本特征。將XLNet 層輸入的文本數據序列化處理,并將文本數據X
中的每個字轉化為其所在字典中所對應的編號,以獲得序列化的文本數據E=
(E
,E
,…,E
),其中E
表示文本中第i
個字的序列化表示。利用Transformer-XL 自回歸編碼器對序列化后的文本進行訓練,獲取文本數據的動態特征表示。文本數據的特征表示為T
=(T
,T
,…,T
),其中T
表示第i
個字的特征向量。在使用Transformer-XL 自回歸編碼器提取文本特征時,首先計算當前文本中每個字與其他字之間的相對位置關系,然后利用這些相對位置信息去調整每個字的權重,從而獲得句子中每個字新的表征。通過這種方法訓練出的文本特征表示T
充分利用了句子中字的相對位置關系,使得一個字在不同上下文語境中有更好的表達,較好地區分了一個字在不同上下文語境中的不同含義。步驟4 提取深層語義特征。將文本特征T
分別傳給BiGRU 層的前向GRU 層和后向GRU 層。前向GRU 順序提取文本T
的深層語義特征,后向GRU 逆序提取文本深層語義特征,通過多個GRU 隱藏單元的訓練,最終得到兩個文本向量的上下文語義特征,分別記作F
和F
。步驟5 文本特征拼接及分類。將正向深層語義特征F
、文本數據特征T
和反向深層語義特征F
拼接,得到完整的語義特征,最后通過激活函數和全連接層輸出分類。步驟3 中的XLNet 對文本進行排列組合是在Transformer-XL 內部通過Attention Mask 矩陣來實現的,通過Attention Mask 矩陣可以得到不同的輸入文本排列組合,使模型能夠充分提取并融合輸入文本的上下文信息,避免有效信息丟失,彌補了BERT 模型的不足。圖7 所示為XLNet 中Mask 機制實現方式的實例,假設原始輸入文本為{1,2,3,4,5},隨機生成文本序列為{3,2,1,5,4},而在輸入階段輸入的文本仍然是{1,2,3,4,5},那么XLNet 中的掩蓋機制如下所示。對于“1”,它只能利用“2”和“3”兩個的信息,所以在第一行中只保留第二、三位置的信息(圖中用實心表示),而其他位置的信息被掩蓋(圖中用空心表示)。再比如“3”位于第一個位置,沒有可以利用的信息,因此在第三行全部以空心表示。
圖7 XLNet模型Mask機制實例Fig.7 Mask mechanism instance of XLNet model
這種特征提取方式在最大限度上利用了XLNet 模型語義提取的優勢,因此得到了更優的分類效果。
通過對比實驗來驗證所提方法的效果,實驗開發工具使用Pycharm-2021.1,開發語言Python-3.6.8,采用深度學習框架Pytorch-1.2.0,操作系統為Windows,硬件設備為Intel Xeon Gold 5218處理器和NVIDIA GeForce GTX5000-16G顯卡。
本文實驗采用文本情感分類任務中的三個公開中文情感分析數據集weibo_sentiment(簡稱wb)、waimai_10k(簡稱wm10)和ChnSentiCorp(簡稱Chn)測試方法處理情感分析任務的性能。wm10 數據集來源于百度外賣平臺收集的用戶評價,其中包含4 001 條正向情感數據和7 987 條負向情感數據。Chn 數據集來源于哈爾濱工業大學譚松波老師收集整理的酒店、筆記本與書籍三個領域的評論語料,其中包含5 322 條正向情感數據和2 444 條負向情感數據。wb 數據集來源于新浪微博評論,其中包含59 994 條正向情感數據和59 996 條負向情感數據。由于本文使用三個不同的數據集進行模型訓練,因此在訓練時需要對每個數據集的文本長度進行分析,取數據文本平均長度作為最大序列長度,通過數據集文本長度統計將Chn 數據集最大序列長度設置為140、wm10 數據集最大序列長度設置為40、wb 數據集最大序列長度設置為80,并且對超過平均序列長度部分的進行截取剔除,對文本序列長度低于平均序列長度的文本進行空白填充,具體數據集統計情況如表1 所示。
表1 數據集統計信息Tab 1 Dataset statistical information
由于這些數據集正負情感傾向分布極為不均,因此本文對以上數據集進行數據預處理,其中包括剔除影響用戶名信息、將繁體字轉化為漢字、將所有字母轉化為小寫字母等處理。數據清洗清洗過程及結果如表2 所示。最后按照8∶1∶1的比例劃分為訓練集、測試集和驗證集。
表2 數據清洗結果Tab 2 Data cleaning result
Acc
)、精確率(P
)、召回率(R
),F
1 值對分類結果進行分析。計算公式為:TP
表示正樣本被預測為正,FP
表示負樣本被預測為正,TN
表示負樣本被預測為負,FN
表示正樣本被預測為負。實驗中參數的選取直接影響最優的實驗結果。如表3 所示,本文XLNet 模型實驗參數主要包括XLNet 和RCNN 模型的參數。其中XLNet 采用科大訊飛AI 研究院與哈爾濱工業大學社會計算與信息檢索研究中心聯合發布的XLNet中文自回歸語言模型XLNet-base-Chinese,可根據具體訓練來調整超參數值,從而達到最優實驗效果。通過訓練調整參數值,XLNet、RCNN、XLNet-RCNN 方法的訓練參數如表3 所示。
表3 模型的訓練參數Tab 3 Model training parameters
為驗證本文方法的有效性,將本文方法與TextCNN、TextRCNN、BERT、XLNet、XLNet-CNN 和XLNet-RCNN 在wb、wm10、Chn 三個數據集上分別進行對比實驗,其中:TextCNN、TextRCNN 均基于Word2Vec 構建詞向量;BERT 采用Google 發布的中文預訓練模型;XLNet 采用科大訊飛AI 研究院與哈爾濱工業大學社會計算與信息檢索研究中心聯合發布的XLNet-base-Chinese 來進行文本特征表示,并在此模型上進行fine-tuning,微調至結果最優。
P
、召回率R
、和F
1 值結果如表4 所示。由實驗結果可以看出,相較于TextCNN、TextRCNN、BERT、XLNet 和XLNet-CNN,XLNet-RCNN 方法在wb 數據集上的F
1 值分別提高了9.0、8.0、1.4、0.5 和0.3 個百分點;在wm10 數據集上的F
1 值分別提高了6.3、7.6、3.9、0.9 和-0.1 個百分點;在Chn 數據集上的F
1 值分別提高了11.2、10.2、6.0、0.8 和0.7 個百分點。從表4 可以看出,對于wm10 數據集,本文方法相較于XLNet-CNN 效果欠佳,原因是該數據集平均文本長度較短約為40;TextRCNN相較于TextCNN效果較差,原因是TextRCNN 針對短文本數據時無法發揮其優勢導致結果較差。這說明了RCNN 在文本分類任務中較擅長處理中長文本,而對于短文本本文模型提升有限,因此出現以上結果。
表4 各模型在三個數據集上的評價結果 單位:%Tab 4 Evaluation results of models on three datasets unit:%
由實驗結果可以得出,相較于其他Word2Vec 構建詞向量的模型,XLNet 和XLNet-RCNN 在文本情感分析領域分析有明顯的優勢,證明自回歸語言模型提取的文本特征能夠利用句子中字的上下文信息,較好地區分了一個字在不同上下文的不同含義,從而提升了模型在情感分析任務中的效果。總體上來看,XLNet-RCNN 相較于XLNet 及其他模型在文本情感分析任務中有更優的表現,證明融合RCNN 模型能夠充分獲取文本深層語義信息,使本文方法在情感分類任務的效果得到了提升。
由表4 可以發現,相較于TextCNN、TextRCNN、BERT、XLNet,XLNet-RCNN 在文本情感分析中有更優的效果,在三個公開數據集上的準確率分別達到了96.4%、91.8%、92.9%,本文方法在文本情感分析任務中有更好的效果。
使用實驗保存的最優模型,預測單個評論文本數據的情感極性,以驗證本文方法在真實場景下的情感分類準確性。文本樣例測試結果如表5 所示。
表5 文本樣例測試結果Tab 5 Text sample test results
為驗證輸出結果情感極性的正確性,將預測值大于0.5視為正向情感,將預測值小于0.5 視為負向情感。從表5 中的預測結果可以看出,XLNet-RCNN 對文本情感分析結果都是正確的,能夠應用于真實場景中的情感分析任務。
為了更好地將自回歸語言模型XLNet 應用于文本情感分析任務中,本文提出一種結合XLNet 和RCNN 的文本情感分析方法XLNet-RCNN。使用XLNet 解決了傳統情感分析方法在不同語境下無法區分同一個詞的不同語義問題,根據每個字的相對位置來表征字向量;使用RCNN 模型進行特征訓練能夠充分關聯文本的上下文關系,能較好地提取文本的深層文本語義特征。在wb、wm10、Chn 三個公開數據集上進行對比實驗,驗證了XLNet-RCNN 方法在文本情感分析任務中的優越性。但針對短文本數據,本文方法仍存在改進空間。在實驗過程中發現,由于模型參數量較大,對于數據量較大的數據集,短文本分類任務效果提升不明顯,出現實驗花費時間較長、對硬件設施要求高等問題。在下一階段的研究中,考慮將本文方法應用到多情感分析任務中,探究該方法在多情感任務的中的適用性;對XLNet 進行改進,探究影響方法結果的因素,使用知識蒸餾的方法壓縮模型,在不降低較多準確率的情況下,提升模型訓練的速率。將本文技術應用于實際生活,為分析網絡言語情感提供技術支持。