王璐琳 馬 力
(西安郵電大學計算機學院 陜西 西安 710061)
文本情感分類任務面向用戶生成的文本,分析文本的情感信息,最終得到文本的情感傾向:正向、負向或中性[1]。目前,文本情感分析已經廣泛應用于諸多領域,如電子商務平臺、電影推薦和輿情分析等[2]。
詞向量是一種文本數據的數值化表示方法,是自然語言處理的基礎工作[3]。Hinton[4]在1986年提出詞的分布式表示,奠定了文本詞語建模的發展理論基礎。最早的一種比較直觀的詞向量生成方式稱為獨熱編碼(One-Hot Encoding),先將語料庫中的所有詞匯匯總得到N個詞匯,并將每個文檔生成一個N維向量,每個維度體現了該文檔中特定詞匯的個數[5-7]。Bengio等[8]提出了一種神經網絡語言模型(Neural Network Language Model,NNLM),通過一個三層的神經網絡、Softmax分類、反向傳播算法實現詞向量映射。文獻[8-9]提出了Word2vec工具,主要包含兩種詞向量模型:跳字模型(Skip-Gram)和連續詞袋模型(Continuous Bag of Word,CBOW)。文獻[10-11]又提出了Sentence2vec和Doc2vec語言模型,使用一種更簡單的網絡模型結構來訓練長度不定的文本向量表示方法,不僅減少了參數,還能避免模型過擬合。Pennington等[12]于2014年提出了一個基于全局詞頻統計的詞表征工具(Global Vectors for Word Representation,GloVe)。GloVe融合了矩陣分解的全局統計信息,加快了模型的訓練速度。2016年,Facebook開源了一種FastText文本分類工具,該模型在詞向量訓練時引入了字符級別的N-gram特征,將幾個字符N-gram向量進行疊加,用疊加向量表示某個單詞[13]。Word2vec、GloVe等模型的問題是詞向量是固定不變的,無法學習不同上下文中的詞匯多義性[14]。例如英文單詞“bank”,既有“銀行”的意思,也可用作動詞表示“堆積”,但上述模型無法區分這種一詞多義。因此,Allen研究所于2018年發布了一種來自于語言模型的詞向量表示(Embedding from Language Model,ELMo)[15],ELMo是一種深度語境化的單詞表示,利用了深度上下文單詞表征,詞向量根據上下文而隨時改變,能夠很好地解決一詞多義問題。
注意力機制(Attention Mechanism)是Treisman等[16]提出的一種人腦模擬模型,該模型能夠通過計算概率分布來突出輸入的關鍵信息對模型輸出結果的影響,從而優化模型。Attention機制能夠充分地利用句子的全局和局部特征,給重要的特征賦予更高的權重,從而提高特征抽取的準確性。因此,本文提出一種基于ELMo和Attention機制的文本情感分類方法,將ELMo模型生成的動態詞向量作為雙向長短期記憶網絡(Bidirectional Long-Short Term Memory,BiLSTM)模型的輸入特征,并引入Attention機制進行情感分類。實驗結果表明此方法能夠提升模型分類的準確性。
ELMo是一種新型深度語境化詞表征,可對詞的復雜特征(如句法和語義)和詞在語言語境中的變化進行建模,即對多義詞進行建模。ELMo詞向量是深度雙向語言模型(Bidirectional Language Model,BiLM)內部狀態的函數,在一個大型文本語料庫中預訓練而成。ELMo模型的特點如下:
(1) 模型的輸入是字母而不是單詞,先通過字符卷積(Char-CNN)再輸入到LSTM中。因此模型可以利用子字詞單元來計算有意義的表示,對于詞典外的詞(如FastText)也是如此。
(2) ELMo是L層BiLM激活的串聯。BiLM的不同層對單詞上的不同類型的信息進行編碼,如在BiLSTM神經網絡中,詞性標注在較低層編碼,而詞義消歧用上層編碼更好。連接所有層可以自由組合各種文字表示,以提高下游任務的性能。
1.1.1 Char-CNN

(1) 輸入層。原始輸入為單個詞的字符表示,即(特征維度,字符數量),ELMo模型中使用的是(16,50)。
(2) 卷積層。ELMo使用的卷積核個數為2 048個,分別是[1,32]、[2,32]、[3,64]、[4,128]、[5,256]、[6,512]、[7,1 024]。
(3) 池化層。對每一行進行最大池化,將池化結果拼接起來,形成維度為卷積核個數的詞向量。ELMo中的初始詞向量是2 048維,經過線性變換轉化為512維。

圖1 Char-CNN網絡結構
1.1.2雙向語言模型BiLM
給定有N個字符的序列t1,t2,…,tN,前向語言模型(Language Model,LM)通過對序列t1,t2,…,tk-1進行建模,然后計算字符tk的概率:
(1)
后向LM類似于前向LM,只是它反過來運行序列,預測給定上下文的前一個字符的概率:
(2)

BiLM同時具有前向和后向LM的功能,將前后兩個方向的對數似然最大化:
(3)

1.1.3 ELMo模型
ELMo是雙向語言模型BiLM的多層表示的組合,其模型結構如圖2所示,其中Tk為Softmax層最終輸出的詞語tk的動態詞向量。對于某一個詞語tk,一個L層的BiLM能夠由2L+1個向量表示:
(4)


圖2 ELMo模型結構圖

(5)

Attention機制在自然語言處理領域的應用最早是在Encoder-Decoder中,將其用在機器翻譯或者人機對話等任務中,其核心思想為模擬人的注意力機制。在處理一段文字信息時,人們通常會將注意力集中在個別關鍵的文字上,而不是平均分配到所有文字上。將Attention機制引入特征提取和分類模型,能夠對模型中的不同數據賦予不同的權重,在分類時可以側重權重較高的信息值,從而提高模型的分類效果。Attention模型的基本結構如圖3所示。

圖3 Attention模型結構圖
可以看出,從初始的隱藏層狀態到新的隱藏層狀態的向量s是初始的隱藏層狀態ht和每個隱藏層狀態在新隱藏層狀態占比重大小的權值系數at乘積相累加的總和,其計算式為:
ei=vitanh(wihi+bi)
(6)
(7)
(8)
式中:ei為i時刻隱藏層的狀態向量hi決定的能量值;vi和wi是i時刻的權值系數矩陣;bi為對應的偏置量。通過式(6)-式(8)可以實現由初始狀態轉換到新的注意力狀態。
本文將ELMo動態詞向量和Attention機制相結合,把ELMo動態詞向量作為BiLSTM網絡的輸入特征,并引入Attention機制提升模型的準確性,從而進行文本情感分類。
ELMo是利用預訓練的BiLM模型,在訓練集上動態生成詞的向量表示。由于BiLM模型的預訓練工作量非常大,本文使用ELMo模型的提出者提供的BiLM預訓練模型,在訓練集上使用該模型訓練生成最終的ELMo詞向量。訓練流程如圖4所示。

圖4 ELMo訓練流程
(1) 準備詞典和訓練文件。詞典文件中每個詞占一行,必須包含‘S’作為句子開始標志,‘/S’作為句子結束標志,以及‘UNK’作為非詞典內詞的標記。順序按照訓練數據中詞的頻率大小排列,詞典大小為793 471。訓練文件每一句占一行,不能包含‘S’、‘/S’字符。
(2) 將文本里的詞轉化為字符id。首先初始化文本中每個詞的字母數組,默認一個詞的最大長度是50。然后初始化字母,對詞中的每個字母按照UTF-8格式進行編碼,編碼的結果在0~255之間。其次將編碼結果轉化為16維的矩陣。最后將字母拼接成詞,再將詞拼接成句子。
(3) 優化模型。每次輸入128個句子,通過Softmax層計算下一個詞,通過計算前向和后向LM的對數似然函數來優化模型。
基于Attention機制的BiLSTM模型主要分為三個部分:輸入層,隱含層,輸出層,其中隱含層包括BiLSTM層和Attention層。其模型結構如圖5所示,其中:bx_ht為前向LSTM隱藏層的輸出;fx_ht為后向LSTM隱藏層的輸出。

圖5 基于Attention機制的BiLSTM模型結構圖
在訓練集上利用2.1節的方法訓練得到ELMo動態詞向量表示x0,x1,…,xt,將該向量輸入到BiLSTM網絡中,得到對應隱藏層的輸出h0,h1,…,ht。圖5中F表示BiLSTM網絡中各獨立方向上隱藏層狀態的加和值,為網絡的終態,a代表所有時刻各隱藏層狀態對最終狀態的注意力概率分布,ht為t時刻時各獨立方向的狀態的加和,Fatt為注意力加權過后的文本特征向量,可由式(6)-式(8)計算得到。
在得到了引入Attention機制的文本特征向量Fatt后,為了得到情感類別的預測值,使用Softmax函數進行情感分類,得到測試文本的情感分布如下:
(9)
(10)
式中:C表示情感類別總數;V為模型輸出層的權值矩陣;Pc代表模型預測的文本d歸于類別c的概率,將d歸到Pc最大的類別c中。
本文利用Adam優化網絡模型,計算模型損失函數的梯度并更新模型參數,從而達到收斂。為了目標函數能夠更加平穩地趨于收斂并提高算法的訓練效率,一次只用一小批樣本進行訓練。模型采用交叉熵函數作為損失函數,并加入L2正則以防模型過擬合,計算式表示為:
(11)

本文采用IMDB和Yelp13兩個數據集,將每個數據集按8 ∶1 ∶1的比例分配訓練集、驗證集和測試集。具體信息如表1所示。

表1 數據集分布情況
IMDB數據集包含來自IMDB的50 000條影評,被標記為正面和負面兩種評價。Yelp2013為2013年Yelp數據庫中的評論,評分等級為1星至5星,星級越高表示用戶對產品的滿意度越高。
本實驗的運行環境為Windows 10系統、Intel(R) Xeon(R) CPU E5-262 v4@ 2.10 GHz處理器,顯卡為NVIDIA Tesla P100 GPU,采用Python編程語言和TensorFlow深度學習框架。實驗的具體參數設置如表2所示。

表2 參數設置
在已經訓練好的各個網絡模型上使用測試集進行測試,采用精確率(P)、準確率(A)、召回率(R)、F1值作為評價標準。具體計算式表示為:
(12)
(13)
(14)
(15)
式中:TP為把正類預測為正類的數量;TN為把負類預測為負類的數量;FP為把負類預測為正類的數量;FN為把正類預測為負類的數量。
選擇以下幾種算法作為基準實驗進行對比來驗證本文方法的有效性:
(1) SVM:使用Word2vec將單詞轉換為詞向量,利用SVM進行文本情感分類。
(2) LSTM:使用Word2vec將單詞轉換為詞向量,作為LSTM網絡模型的輸入特征。
(3) BiLSTM:使用Word2vec將單詞轉換為詞向量,作為BiLSTM網絡模型的輸入特征。
(4) BiLSTM+Attention:使用Word2vec將單詞轉換為詞向量,作為BiLSTM網絡模型的輸入特征,并引入Attention機制優化模型。
(5) ELMo+BiLSTM:使用ELMo模型生成上下文相關的動態詞向量,作為BiLSTM網絡模型的輸入特征。
(6) ELMo+BiLSTM+Attention:使用ELMo模型生成上下文相關的動態詞向量,作為BiLSTM網絡模型的輸入特征,并引入Attention機制優化模型。
TensorFlow框架中的TensorBoard可視化工具能夠保存并實時展示模型訓練過程中每個參數的變化。圖6、圖7分別給出了TensorBoard中BiLSTM、ELMo+BiLSTM+Attention模型在IMDB數據集上訓練時損失函數值隨迭代次數的變化趨勢。

圖6 BiLSTM模型訓練損失變化

圖7 ELMo+BiLSTM+Attention模型訓練損失變化
可以看出,模型在訓練時整體的函數損失值都呈下降趨勢,并最終維持穩定收斂狀態。將ELMo詞向量與Attention機制相結合的模型,相比于使用Word2vec生成詞向量的BiLSTM模型,由于模型復雜度的增加,每輸入一批訓練樣本,詞向量都會根據上下文做相應的調整,造成起始的損失值變大,但收斂速度更快,且Attention機制的引入能進一步提高模型的準確性,從而使最終的損失值更小。由此可見,將ELMo詞向量和Attention機制相結合能有效地提高模型分類的準確性。
表3、表4分別是不同分類模型在IMDB和Yelp13數據集上的評價結果比較。

表3 在IMDB數據集上的評價結果

表4 在Yelp13數據集上的評價結果
可以看出在IMDB和Yelp13數據集上結果差異較大,這是因為ELMo動態詞向量更適用于訓練數據較少的分類任務,并且Yelp13數據集中每個類別的訓練樣本分布不均衡也會對分類準確率產生一定的影響。
對比表中分類模型SVM和LSTM的結果可以看出,基于LSTM分類模型的文本情感分類效果比傳統機器學習分類模型的分類效果要好,原因在于循環神經網絡為深度訓練模型,能夠更好地進行文本特征提取,并且考慮了上下文關聯,從而能夠得到更好的分類效果。對比LSTM和BiLSTM的結果,BiLSTM網絡相較LSTM網絡來說能夠更好地捕捉雙向的語義依賴,因此分類效果比LSTM網絡模型的分類效果好。對比BiLSTM+Attention和ELMo+BiLSTM的結果可以看出,將Attention機制引入BiLSTM網絡模型和將ELMo動態詞向量作為BiLSTM網絡模型的輸入特征都可以有效提高分類效果。因為引入Attention機制使模型能夠更加充分地考慮到文本特征與結果的相關性,而ELMo動態詞向量可對詞的復雜特征和詞在語言語境中的變化進行建模,更好地學習詞匯多義性,從而取得更好的分類效果。本文提出的ELMo+BiLSTM+Attention網絡模型在兩個數據集上都取得了最佳的分類效果,相比于ELMo+BiLSTM模型準確率分別提高了0.017和0.011,說明本文提出的結合ELMo詞向量和Attention機制的網絡模型能夠在一定程度上提升模型的分類效果,適合用于文本情感分類。
本文提出結合ELMo詞向量和Attention機制的文本情感分類方法。實驗結果表明此方法具有較好的分類效果,利用雙向語言模型生成的動態詞向量能夠更好地學習不同上下文中的詞匯多義性,達到消歧的目的,而Attention機制能夠進一步優化網絡模型,提高模型的完備性。本文方法雖然取得了預期的分類效果,但在訓練網絡模型的選擇和構建上還存在一些可以改進的地方。LSTM網絡不具有并行計算能力,對于特別長期的依賴現象處理能力也有限。在未來的工作中,將進一步優化訓練網絡模型,提高情感分類的準確率。