黃澤民,吳曉鸰,吳迎崗,凌 捷
(廣東工業大學計算機學院,廣東 廣州 510006)
通信領域的快速發展,促進了社交平臺和網絡運營商的發展,參與其中的網絡用戶越來越多,用戶在各種平臺上評論熱點事件,發表自己的意見,從而產生海量的帶有情感傾向的文本信息,而這些情感傾向對輿論監控、社會風氣的分析、市場營銷和政府部門有很大的作用[1]。但是,要利用這些情感文本,僅靠人工處理存在工作程序繁雜和實時性較差等問題[2]。自然語言處理領域的文本情感分析[3]又稱意見挖掘,就是通過計算機來幫助人們自動獲取、整理、歸納和推理文本,對評論文本進行傾向性分析,從而得到文本的情感傾向。
情感分析方法主要有基于機器學習和基于神經網絡的方法。基于機器學習的文本情感分類方法,通過分析文本來構造結構化的特征數據,采用多種機器學習算法進行情感分析,如Pang等人[4]利用SVM(Support Vector Machine)、樸素貝葉斯、貝葉斯和最大熵等機器學習算法來對評論文本進行情感極性預測。但是,機器學習方法過多地依賴人工標注和領域知識去構造規范化的文本,使得遷移性差且耗費人力物力。基于神經網絡的文本情感分類方法,就是將文本編碼成向量,然后應用到下游的神經網絡訓練模型中。Salur等人[5]將不同的詞向量化方法(如FastText、word2vec和字符級嵌入)與不同的深度學習方法(如CNN(Convolutional Neural Networks)、GRU(Gated Recurrent Unit)、LSTM(Long Short-Term Mermory network)、BiLSTM(Bi-directional Long Short-Term Mermory network)等)策略性地級聯在一起,用不同的模型提取不同的特征,然后結合這些特征得到文本的情感極性。諶志群等人[6]采用了BERT(Bidirectional Encoder Representations from Transformers)模型生成文本的向量表征,然后將這些詞向量輸入到雙向 LSTM 網絡中進行情感分類,在測試集上取得了不錯的預測結果。Zhou等人[7]在雙層LSTM基礎上使用雙層的注意力機制,在句子級別上提取特征,取得了不錯的預測效果。Wang 等人[8]將注意力機制融合到神經網絡中,對反映實體關系的詞語給予更大的權重,結合改進的目標函數來提高關系提取的效果。Baziotis等人[9]將glove預訓練學習到的詞向量輸入到2層的雙向長短時記憶網絡LSTM后,注入注意力機制來提升模型的預測能力。
自然語言預訓練模型[10]包括靜態模型和動態模型,靜態模型有word2vec模型[11,12]和glove模型等,動態模型有ELMO(Embedding from Language MOdels)模型[13]、GPT(Generative Pre-Training)模型[14]和BERT[15,16]模型等。雖然自然語言處理領域因靜態預訓練技術得到了極大發展,但是靜態詞向量無法較好地表征多義詞,比如“蘋果”一詞,由于語境不同,可以理解為水果,或者蘋果公司,還有可能是指書名或者電影名稱,如果利用靜態詞嵌入技術,只會用一種向量來表示這3種含義。2018年,動態詞向量技術ELMO的出現有效地解決了多義詞問題,隨后,基于Transformer模型的GPT和BERT等新型預訓練模型的相繼提出,尤其是BERT模型的提出,使自然語言處理領域的很多任務有了強有力的預訓練工具,是自然語言處理領域的一個重要突破。ELMO預訓練模型的網絡結構采用了雙層雙向LSTM,它能根據當前的上下文信息對詞嵌入進行動態調整,但其特征融合能力相比BERT模型較弱;GPT模型雖然采用特征提取能力強的Transformer模型,但是只關注上文信息卻拋棄了下文信息,使之無法充分結合文本上下文語義信息;BERT模型的提出彌補了ELMO和GPT存在的問題,它是以字為級別的向量,通過參考上下文,進行語義提取,故不存在一詞多義的問題。
最早把注意力機制應用在自然語言處理任務中的是Bahdanau等人[17],他們將注意力機制應用在機器翻譯模型上,構造了當時翻譯效果最好的機器翻譯模型。隨后,有研究人員對注意力機制進行改造和加強,如Tang等人[18]提出了一種漸進地自監督注意力的學習算法,能在模型參數估計過程中約束注意力機制的學習,使模型能夠漸進地挖掘文本中重要的監督信息,從而解決了對高頻詞過度關注,而忽略了低頻詞的問題,在實踐中證明了該模型提出的漸進注意力機制應用在多個前沿模型上能取得顯著的性能提升。文本情感分類任務中應用注意力機制是提高模型預測能力的一種有效方法,孫小婉等人[19]使用多頭注意力機制對上游模型的輸出進行多次不同的線性變換后,得到特定方面詞語的注意力信息和結合上下文的自注意力信息,實現了特定方面情感極性的預測;韓萍等人[20]提出了結合情感融合和多頭自注意力機制的文本情感分析模型來進行文本情感極性的預測。
使用基于機器學習的方法雖然提高了準確率,但需要先驗知識來結構化數據集,才能將其作為模型訓練的語料集合,大大降低了效率。完成基于神經網絡技術的自然語言處理任務的一個關鍵是如何將文字符號編碼為融合文本語境的數字特征,若以word2vec和glove學習到的詞向量作為詞表征,學習到的只是靜態向量,即不能學習到多義詞的多重語義,會降低文本情感傾向的預測準確率,故本文提出了結合BERT和BiSRU-AT的文本情感分類模型BERT-BiSRU-AT(model combined with BERT and Bidirectional Simple Recurrent Unit with ATtention),使用BERT預訓練模型生成語料的詞向量,以解決多義詞表征問題。本文不采用BERT模型的句首標志[CLS]來預測情感極性,而是引入了注意力機制來對雙向簡單循環網絡每個時間步的輸出分配權重,對情感分析貢獻大的詞將賦予更高的權重,讓模型分析出句子中每個詞語對準確預測情感傾向的貢獻,以突出重點信息,進而提高模型預測性能。

Figure 1 Model combined with BERT and BiSRU-AT圖1 結合BERT和BiSRU-AT的文本情感分類模型
結合BERT和BiSRU-AT(Bidirectional Simple Recurrent Unit with ATtention)的文本情感分類模型如圖1所示,該模型共有6層,分別是數據預處理層、詞嵌入層、BERT層、文本上下文語義二次提取層、注意力機制層和預測層。其中,數據預處理是對數據集去噪和分詞,只保留含有語義信息的文本;文本詞匯的向量化利用預訓練模型得到對應分詞的靜態向量表示;BERT層對靜態詞向量進一步學習獲得融合語境的動態向量表示;BiSRU二次提取句子的上下文信息;注意力機制層能得到每個分詞對句子情感分析的貢獻,以側重有價值的詞語并獲取到句子級別的整體語義信息;最后加權求和得出句子的情感極性概率分布。
由于評論文本存在大量的噪聲數據,需對評論文本利用正則表達式進行去噪,如去除標點符號、表情和俚語等;然后對數據集的每一個句子進行字符級別的分詞,并且去除停用詞,分詞后的句子只包含具有語義信息的字符,且保證句子最大長度不超過設置的句子長度減2,因為剩下的2個位置需用來存放句首標志([CLS])和分句標志([SEP]);預處理后會對句子的每個字符進行向量映射,得到淺層向量表示,此時的詞向量還是靜態向量,不能解決多義詞的表征問題,該詞向量作為BERT預訓練模型的輸入之一,訓練完成后會得到融合文本語境的動態詞向量。
BERT模型采用了融合文本能力強大的Transformer模型,通過結合自注意力機制考慮了每個詞語對其他詞語的重要程度,預訓練出來的向量表示效果更好。BERT預訓練模型如圖2所示,其中e1,…,en為BERT模型的輸入向量,T1,…,Tn為BERT模型的輸出向量。

Figure 2 Network structure of BERT model圖2 BERT模型的網絡結構
輸入向量ei的形成過程如圖3所示,ei由3種不同的向量對應元素相加而成。每個句子的第1個向量是[CLS]標志,可以用于下游的分類任務,句尾向量[SEP]標志用作不同句子的分隔符,由于本文是句子級別的情感分析,即輸入是一個句子,故僅使用一個句向量;詞嵌入向量是詞的靜態編碼;位置向量PE記錄分詞在句子中的位置,計算公式如式(1)和式(2)所示。
PE(pos,2i)=sin(pos/100002i/d)
(1)
PE(pos,2i+1)=cos(pos/100002i/d)
(2)
其中,pos表示分詞在句子中的位置;2i、2i+1分別表示詞向量的偶數維度和奇數維度;d表示分詞向量的維度,也是輸出向量PE的維度。

Figure 3 Input structure of BERT model圖3 BERT模型的輸入結構
BERT預訓練模型的Transformer結構如圖4所示。Transformer包括1個編碼器和1個解碼器,編碼器由6個Encoder堆疊組成,解碼器由6個Decoder連續堆疊而成。

Figure 4 Structure of Transformer model圖4 Transformer模型結構
BERT在實際操作中是基于矩陣計算的,將全部輸入拼接成向量矩陣E={e1,…,en},輸入到編碼器。多頭注意力機制由8個自注意力機制組成,自注意力的輸入為3個不同的向量矩陣:Query查詢矩陣(Q)、Key鍵矩陣(K)和Value值矩陣(V),由向量矩陣E分別乘以3個線性變陣矩陣WQ、WK和WV得到。利用Q,K,V這3個向量矩陣通過式(3)可計算自注意力機制的輸出:
(3)

得到自注意力的輸出后,通過式(4)和式(5)可以計算出多頭注意力機制的輸出X。
X=MultiHead(Q,K,V)=
concat(Attention1,…,Attentioni,…,Attentiong)·WO
(4)
(5)

多頭注意力的輸出X經過殘差和層標準化運算后得到Z(如圖4的虛線所示),將Z輸入到全連接前饋網絡(FFNN),FFNN由2層全連接層組成,計算公式如式(6)所示:
(6)

全連接前饋神經的輸出經過殘差和層標準化運算后,將其結果輸入到下一個Encoder。第一個Encoder的輸入為句子詞向量矩陣,后續 Encoder的輸入是前一個Encoder的輸出,最后一個 Encoder輸出就是編碼器編碼后的矩陣,這一矩陣將會作用到每個Decoder。Decoder的計算過程類似于Encoder,但加了一層Masked的多頭注意力機制,其輸出的Masked矩陣作為下一子層的輸入之一。將BERT最后一層的輸出矩陣記為Tr={T1,…,Tn},Tr矩陣行列維度與BERT輸入矩陣相同,每個行向量表示分詞的無歧義深度向量,作為下游任務的輸入。
長短期記憶網絡LSTM的出現,解決了傳統循環網絡RNN的梯度消失[21]和歷史連接問題,但LSTM無法實現并行化訓練,導致參數估計速度太慢。SRU(Simple Rucurrent Unit)[22]不僅擁有與LSTM網絡相同的能力,而且還能實現訓練的并行化,縮短了文本分析時間,其網絡模型如圖5所示。

Figure 5 Network structure of SRU model圖5 SRU模型的網絡結構
在圖5中,Tt表示在時刻t的輸入,是BERT層輸出矩陣Tr的一個詞向量;ft,rt,At,At-1分別表示遺忘門、重置門、當前時刻t的隱藏狀態和前一時刻t-1的隱藏狀態;ht表示時刻t的輸出;σ和g代表Sigmoid函數和激活函數;⊙表示矩陣對應元素的乘法運算。
在SRU模型中,當前時刻的輸入不再依賴ht-1了。式(7)~式(11)是SRU模型的計算公式:
ft=σ(WfTt+bf)
(7)
rt=σ(WrTt+br)
(8)
yt=σ(W*Tt)
(9)
At=ft⊙At-1+(1-ft)⊙yt
(10)
ht=rt⊙g(At)+(1-rt)⊙Tt
(11)
其中,Wf,Wr和W*是參數矩陣,bf和br是偏置,都是訓練時要學習的參數向量。
從式(7)~式(9)可以看出,輸入沒有了ht-1,從而式(10)和式(11)可以實現并行化計算,以提高訓練速度。
句子語義信息不僅與文本的上文信息有關,還與下文信息有關,故利用雙向SRU進一步提取語義信息。BiSRU模型是由2個SRU網絡上下疊加構成的,每一個時間步存在方向相反的2個SRU,將BERT層輸出矩陣Tr的每個詞向量分別輸入到每個時間步的正反序SRU,將同一個時間步的正序和反序輸出進行拼接,得到每個時間步的輸出。每一個時間步的輸出結果Ht的計算公式如式(12)所示:
(12)

將BiSRU層的輸出送入注意力機制層,其原理是先對每個時間步的輸出Ht都乘以矩陣Wg得到ut,Wg是訓練過程需要學習的參數;用激活函數tanh對ut去線性化;再進行權重計算得到句子中每個分詞的權重值αt;Softmax函數能將權重αt概率化在[0,1];最后將每個時間步的Ht與對應權重αt相乘,再將所有時間步加權后的結果相加,得到注意力特征表示R。具體原理如式(13)~式(15)所示:
ut=tanh(WgHt+bg)
(13)
(14)
(15)
其中,Wg和bg分別表示參數向量和偏置,是要在訓練時學習的;exp()為指數函數。
經過注意力機制處理后,將R映射到情感分類空間S,用Softmax函數得到句子級別的情感概率分布PR。具體如式(16)所示:
PR=Softmax(WSR+bS)
(16)
其中,WS和bS分別表示參數向量和偏置,是要在訓練時學習的。
得到情感概率分布后,取概率值最大的為預測結果。
本文實驗的開發環境為Keras,開發工具為Jupter notebook,開發語言為Python,使用CPU運行程序。采用的實驗數據集為中文版本的Twitter數據集和酒店評論數據集,其中Twitter數據集包含20 000多條中文標注評論語料,訓練集包含積極情感句子8 600多個,消極句子8 300多個,測試集有2 111多條語料,驗證集有2 111條語料;酒店評論訓練集包含積極情感句子2 400多個,消極句子2 400個,測試集有600條語料,驗證集有600條語料。由于訓練集各類情感樣本的數目不一致,數據不平衡會導致分類器偏向樣本多的類別,使模型的綜合性能大大下降,因此,本文在訓練分類器時會保證2類樣本數目的一致。
為驗證本文模型在文本情感分析中的有效性,使用的評價標準有準確率(Precision)、召回率(Recall)和F1,其計算公式如式(17)~式(19)所示:
(17)
(18)
(19)
其中,s表示積極類預測為積極類的數目;m為消極類預測為積極類的數目;tp為積極類預測為消極類數目。由于準確率和召回率經常矛盾,故引入F1值作為平均指標。
實驗參數的設置對實驗結果具有很大的影響,經過實驗對比后,模型參數取值如下:句子最大長度為128;預訓練詞向量維度為768維;BiSRU隱藏層的輸出維數為128維;隨機參數更新比例dropout率為0.5;損失函數為交叉熵函數;優化器為Adam,學習率為1E-5; Twitter數據集和酒店評論數據集的訓練epoch都設置為10,Batch_size都為32。
為驗證本文模型的有效性,在相同的實驗環境下,將本文情感分析模型分別與其他情感分析模型進行對比,在中文版本的Twitter訓練集上進行訓練,最后在測試集上的預測結果如表1所示。

Table 1 Comparison of model results on the Twitter test set表1 在Twitter測試集上的模型結果對比 %
表1中,模型1將BERT模型輸出的句首分類標志[CLS]向量輸入到Softmax層得到預測結果;模型2用word2vec工具得到文本的詞向量,再將詞向量輸入到下游模型BiSRU-AT中得到預測結果;模型3用ELMO預訓練技術得到文本的詞向量,再將詞向量輸入到下游模型BiSRU-AT中得到預測結果;模型4用BERT預訓練技術得到文本的詞向量,再將詞向量輸入到下游模型BiSRU中得到預測結果;模型5用BERT預訓練技術得到文本的詞向量,再將詞向量輸入到下游模型BiRNN-AT(Bidirectional Recurrent Neural Network with ATtention)中得到預測結果;模型6用BERT預訓練技術得到文本的詞向量,再將詞向量輸入到下游模型BiLSTM-AT中得到預測結果;模型7為本文模型。由表1可知,本文引入的雙向循環網絡和注意力機制使模型準確率上升了近3個百分點;為了驗證BERT的有效性,與模型2、模型3進行了對比。使用基于word2vec獲得的詞向量表示方法在測試集的各個指標明顯最低,因為其無法解決多義詞問題,且無法感知長距離語義信息;基于ELMO的詞向量表征雖然解決了多義詞問題,實現了詞向量的動態表征,但是ELMO是基于LSTM網絡的,其融合文本能力比基于注意力的Transformer網絡模型弱;對比模型4是為了對比利用句首標志[CLS]與利用注意力機制分別預測情感傾向的效果,從表1中得知,在各個指標中,利用注意力機制的預測效果略優于利用句首標志[CLS]的,注意力機制的引入可以使模型聚焦到對情感分析更為重要的詞語,進一步提升模型的預測性能。對比模型5和模型6是為了驗證BiSRU模型的有效性,由于LSTM網絡和SRU網絡能對歷史信息進行策略性的保留和過濾以保留有利信息,使得語義學習能力更強,而RNN網絡很難學習到有效的參數來處理長期依賴問題。
為了進一步驗證本文模型的性能,在相同的實驗環境下,將本文情感分析模型分別與其它情感分析模型在酒店評論訓練集上進行訓練,最后在測試集上的預測結果如表2所示,表中數據進一步驗證了本文模型的有效性。
將本文模型分別與BERT-BiLSTM-AT、BERT-LSTM-AT和BERT-SRU-AT等模型的每一個epoch的訓練時間進行比較,每個對比模型所使用的參數都為3.3節中的參數,并使用Twitter數據集訓練,對比結果如圖6所示。在使用雙向循環網絡的條件下,本文采用的雙向SRU網絡相比雙向LSTM網絡訓練時間明顯減少,在不利用雙向循環網絡前提下,SRU網絡的訓練速度也優于LSTM的。BERT預訓練模型總參數大小為110 MB,如果利用計算復雜度高的LSTM網絡作為下游任務的模型,無疑會導致模型訓練時間大大增加,故本文利用了SRU網絡的并行化計算能力,在保證準確率的前提下,能有效減少訓練時間。

Table 2 Comparison of model resultson the hotel comment test set表2 在酒店評論測試集上模型結果對比 %

Figure 6 Training time of each epoch圖6 每個epoch訓練時間
綜上所述,相比其它模型,本文提出的模型在各種評價指標上的表現更好。本文利用BERT預訓練模型解決多義詞表征問題和利用雙向SRU更深層次地挖掘文本語義并利用其并行化能力來加快模型的訓練速度;本文引入的注意力機制使模型對能準確預測文本情感的詞語給予更高的權重,以側重有價值的詞語。本文使用了谷歌的預訓練模型Chinese_L-12_H-768_A-12,BERT的輸入向量是任務語料在大語料集合中映射出來的,而非在任務語料中學習得到的,使BERT模型訓練出來的向量具有更高的泛化程度。BERT預訓練模型也存在不足,BERT模型主要聚焦原始語言內部信號,對語義知識單元較少建模,導致模型很難獲取到語義知識單元的整體語義,這個缺陷在訓練中文語料時較為明顯,且BERT預訓練模型在下游任務微調時并不會使用到掩碼機制,致使在訓練階段和模型使用階段會存在數據偏差,對實際預測效果有一定影響。
本文提出的結合BERT和BiSRU-AT的文本情感分析模型實現了句子級別的情感分類,利用BERT預訓練模型得到融合語境的詞向量表征,使網絡模型能更好地理解文本語義信息,再通過微調模型來完成下游任務。在測試集上的實驗結果表明,本文提出的模型在各種評價指標上都得到了預期效果,且在訓練速度上有著明顯的提升。本文模型考慮了情感二分類問題,在接下來的工作中,將會考慮使用BERT的優化模型和XLNet(transformer—XL Network)[23]等新型預訓練模型去分析多元情感傾向文本,得到更為豐富的情感傾向。