王璐琳 馬 力
(西安郵電大學(xué)計算機學(xué)院 陜西 西安 710061)
文本情感分類任務(wù)面向用戶生成的文本,分析文本的情感信息,最終得到文本的情感傾向:正向、負向或中性[1]。目前,文本情感分析已經(jīng)廣泛應(yīng)用于諸多領(lǐng)域,如電子商務(wù)平臺、電影推薦和輿情分析等[2]。
詞向量是一種文本數(shù)據(jù)的數(shù)值化表示方法,是自然語言處理的基礎(chǔ)工作[3]。Hinton[4]在1986年提出詞的分布式表示,奠定了文本詞語建模的發(fā)展理論基礎(chǔ)。最早的一種比較直觀的詞向量生成方式稱為獨熱編碼(One-Hot Encoding),先將語料庫中的所有詞匯匯總得到N個詞匯,并將每個文檔生成一個N維向量,每個維度體現(xiàn)了該文檔中特定詞匯的個數(shù)[5-7]。Bengio等[8]提出了一種神經(jīng)網(wǎng)絡(luò)語言模型(Neural Network Language Model,NNLM),通過一個三層的神經(jīng)網(wǎng)絡(luò)、Softmax分類、反向傳播算法實現(xiàn)詞向量映射。文獻[8-9]提出了Word2vec工具,主要包含兩種詞向量模型:跳字模型(Skip-Gram)和連續(xù)詞袋模型(Continuous Bag of Word,CBOW)。文獻[10-11]又提出了Sentence2vec和Doc2vec語言模型,使用一種更簡單的網(wǎng)絡(luò)模型結(jié)構(gòu)來訓(xùn)練長度不定的文本向量表示方法,不僅減少了參數(shù),還能避免模型過擬合。Pennington等[12]于2014年提出了一個基于全局詞頻統(tǒng)計的詞表征工具(Global Vectors for Word Representation,GloVe)。GloVe融合了矩陣分解的全局統(tǒng)計信息,加快了模型的訓(xùn)練速度。2016年,F(xiàn)acebook開源了一種FastText文本分類工具,該模型在詞向量訓(xùn)練時引入了字符級別的N-gram特征,將幾個字符N-gram向量進行疊加,用疊加向量表示某個單詞[13]。Word2vec、GloVe等模型的問題是詞向量是固定不變的,無法學(xué)習(xí)不同上下文中的詞匯多義性[14]。例如英文單詞“bank”,既有“銀行”的意思,也可用作動詞表示“堆積”,但上述模型無法區(qū)分這種一詞多義。因此,Allen研究所于2018年發(fā)布了一種來自于語言模型的詞向量表示(Embedding from Language Model,ELMo)[15],ELMo是一種深度語境化的單詞表示,利用了深度上下文單詞表征,詞向量根據(jù)上下文而隨時改變,能夠很好地解決一詞多義問題。
注意力機制(Attention Mechanism)是Treisman等[16]提出的一種人腦模擬模型,該模型能夠通過計算概率分布來突出輸入的關(guān)鍵信息對模型輸出結(jié)果的影響,從而優(yōu)化模型。Attention機制能夠充分地利用句子的全局和局部特征,給重要的特征賦予更高的權(quán)重,從而提高特征抽取的準(zhǔn)確性。因此,本文提出一種基于ELMo和Attention機制的文本情感分類方法,將ELMo模型生成的動態(tài)詞向量作為雙向長短期記憶網(wǎng)絡(luò)(Bidirectional Long-Short Term Memory,BiLSTM)模型的輸入特征,并引入Attention機制進行情感分類。實驗結(jié)果表明此方法能夠提升模型分類的準(zhǔn)確性。
ELMo是一種新型深度語境化詞表征,可對詞的復(fù)雜特征(如句法和語義)和詞在語言語境中的變化進行建模,即對多義詞進行建模。ELMo詞向量是深度雙向語言模型(Bidirectional Language Model,BiLM)內(nèi)部狀態(tài)的函數(shù),在一個大型文本語料庫中預(yù)訓(xùn)練而成。ELMo模型的特點如下:
(1) 模型的輸入是字母而不是單詞,先通過字符卷積(Char-CNN)再輸入到LSTM中。因此模型可以利用子字詞單元來計算有意義的表示,對于詞典外的詞(如FastText)也是如此。
(2) ELMo是L層BiLM激活的串聯(lián)。BiLM的不同層對單詞上的不同類型的信息進行編碼,如在BiLSTM神經(jīng)網(wǎng)絡(luò)中,詞性標(biāo)注在較低層編碼,而詞義消歧用上層編碼更好。連接所有層可以自由組合各種文字表示,以提高下游任務(wù)的性能。
1.1.1 Char-CNN
(1) 輸入層。原始輸入為單個詞的字符表示,即(特征維度,字符數(shù)量),ELMo模型中使用的是(16,50)。
(2) 卷積層。ELMo使用的卷積核個數(shù)為2 048個,分別是[1,32]、[2,32]、[3,64]、[4,128]、[5,256]、[6,512]、[7,1 024]。
(3) 池化層。對每一行進行最大池化,將池化結(jié)果拼接起來,形成維度為卷積核個數(shù)的詞向量。ELMo中的初始詞向量是2 048維,經(jīng)過線性變換轉(zhuǎn)化為512維。
圖1 Char-CNN網(wǎng)絡(luò)結(jié)構(gòu)
1.1.2雙向語言模型BiLM
給定有N個字符的序列t1,t2,…,tN,前向語言模型(Language Model,LM)通過對序列t1,t2,…,tk-1進行建模,然后計算字符tk的概率:
(1)
后向LM類似于前向LM,只是它反過來運行序列,預(yù)測給定上下文的前一個字符的概率:
(2)
BiLM同時具有前向和后向LM的功能,將前后兩個方向的對數(shù)似然最大化:
(3)
1.1.3 ELMo模型
ELMo是雙向語言模型BiLM的多層表示的組合,其模型結(jié)構(gòu)如圖2所示,其中Tk為Softmax層最終輸出的詞語tk的動態(tài)詞向量。對于某一個詞語tk,一個L層的BiLM能夠由2L+1個向量表示:
(4)
圖2 ELMo模型結(jié)構(gòu)圖
(5)
Attention機制在自然語言處理領(lǐng)域的應(yīng)用最早是在Encoder-Decoder中,將其用在機器翻譯或者人機對話等任務(wù)中,其核心思想為模擬人的注意力機制。在處理一段文字信息時,人們通常會將注意力集中在個別關(guān)鍵的文字上,而不是平均分配到所有文字上。將Attention機制引入特征提取和分類模型,能夠?qū)δP椭械牟煌瑪?shù)據(jù)賦予不同的權(quán)重,在分類時可以側(cè)重權(quán)重較高的信息值,從而提高模型的分類效果。Attention模型的基本結(jié)構(gòu)如圖3所示。
圖3 Attention模型結(jié)構(gòu)圖
可以看出,從初始的隱藏層狀態(tài)到新的隱藏層狀態(tài)的向量s是初始的隱藏層狀態(tài)ht和每個隱藏層狀態(tài)在新隱藏層狀態(tài)占比重大小的權(quán)值系數(shù)at乘積相累加的總和,其計算式為:
ei=vitanh(wihi+bi)
(6)
(7)
(8)
式中:ei為i時刻隱藏層的狀態(tài)向量hi決定的能量值;vi和wi是i時刻的權(quán)值系數(shù)矩陣;bi為對應(yīng)的偏置量。通過式(6)-式(8)可以實現(xiàn)由初始狀態(tài)轉(zhuǎn)換到新的注意力狀態(tài)。
本文將ELMo動態(tài)詞向量和Attention機制相結(jié)合,把ELMo動態(tài)詞向量作為BiLSTM網(wǎng)絡(luò)的輸入特征,并引入Attention機制提升模型的準(zhǔn)確性,從而進行文本情感分類。
ELMo是利用預(yù)訓(xùn)練的BiLM模型,在訓(xùn)練集上動態(tài)生成詞的向量表示。由于BiLM模型的預(yù)訓(xùn)練工作量非常大,本文使用ELMo模型的提出者提供的BiLM預(yù)訓(xùn)練模型,在訓(xùn)練集上使用該模型訓(xùn)練生成最終的ELMo詞向量。訓(xùn)練流程如圖4所示。
圖4 ELMo訓(xùn)練流程
(1) 準(zhǔn)備詞典和訓(xùn)練文件。詞典文件中每個詞占一行,必須包含‘S’作為句子開始標(biāo)志,‘/S’作為句子結(jié)束標(biāo)志,以及‘UNK’作為非詞典內(nèi)詞的標(biāo)記。順序按照訓(xùn)練數(shù)據(jù)中詞的頻率大小排列,詞典大小為793 471。訓(xùn)練文件每一句占一行,不能包含‘S’、‘/S’字符。
(2) 將文本里的詞轉(zhuǎn)化為字符id。首先初始化文本中每個詞的字母數(shù)組,默認(rèn)一個詞的最大長度是50。然后初始化字母,對詞中的每個字母按照UTF-8格式進行編碼,編碼的結(jié)果在0~255之間。其次將編碼結(jié)果轉(zhuǎn)化為16維的矩陣。最后將字母拼接成詞,再將詞拼接成句子。
(3) 優(yōu)化模型。每次輸入128個句子,通過Softmax層計算下一個詞,通過計算前向和后向LM的對數(shù)似然函數(shù)來優(yōu)化模型。
基于Attention機制的BiLSTM模型主要分為三個部分:輸入層,隱含層,輸出層,其中隱含層包括BiLSTM層和Attention層。其模型結(jié)構(gòu)如圖5所示,其中:bx_ht為前向LSTM隱藏層的輸出;fx_ht為后向LSTM隱藏層的輸出。
圖5 基于Attention機制的BiLSTM模型結(jié)構(gòu)圖
在訓(xùn)練集上利用2.1節(jié)的方法訓(xùn)練得到ELMo動態(tài)詞向量表示x0,x1,…,xt,將該向量輸入到BiLSTM網(wǎng)絡(luò)中,得到對應(yīng)隱藏層的輸出h0,h1,…,ht。圖5中F表示BiLSTM網(wǎng)絡(luò)中各獨立方向上隱藏層狀態(tài)的加和值,為網(wǎng)絡(luò)的終態(tài),a代表所有時刻各隱藏層狀態(tài)對最終狀態(tài)的注意力概率分布,ht為t時刻時各獨立方向的狀態(tài)的加和,F(xiàn)att為注意力加權(quán)過后的文本特征向量,可由式(6)-式(8)計算得到。
在得到了引入Attention機制的文本特征向量Fatt后,為了得到情感類別的預(yù)測值,使用Softmax函數(shù)進行情感分類,得到測試文本的情感分布如下:
(9)
(10)
式中:C表示情感類別總數(shù);V為模型輸出層的權(quán)值矩陣;Pc代表模型預(yù)測的文本d歸于類別c的概率,將d歸到Pc最大的類別c中。
本文利用Adam優(yōu)化網(wǎng)絡(luò)模型,計算模型損失函數(shù)的梯度并更新模型參數(shù),從而達到收斂。為了目標(biāo)函數(shù)能夠更加平穩(wěn)地趨于收斂并提高算法的訓(xùn)練效率,一次只用一小批樣本進行訓(xùn)練。模型采用交叉熵函數(shù)作為損失函數(shù),并加入L2正則以防模型過擬合,計算式表示為:
(11)
本文采用IMDB和Yelp13兩個數(shù)據(jù)集,將每個數(shù)據(jù)集按8 ∶1 ∶1的比例分配訓(xùn)練集、驗證集和測試集。具體信息如表1所示。
表1 數(shù)據(jù)集分布情況
IMDB數(shù)據(jù)集包含來自IMDB的50 000條影評,被標(biāo)記為正面和負面兩種評價。Yelp2013為2013年Yelp數(shù)據(jù)庫中的評論,評分等級為1星至5星,星級越高表示用戶對產(chǎn)品的滿意度越高。
本實驗的運行環(huán)境為Windows 10系統(tǒng)、Intel(R) Xeon(R) CPU E5-262 v4@ 2.10 GHz處理器,顯卡為NVIDIA Tesla P100 GPU,采用Python編程語言和TensorFlow深度學(xué)習(xí)框架。實驗的具體參數(shù)設(shè)置如表2所示。
表2 參數(shù)設(shè)置
在已經(jīng)訓(xùn)練好的各個網(wǎng)絡(luò)模型上使用測試集進行測試,采用精確率(P)、準(zhǔn)確率(A)、召回率(R)、F1值作為評價標(biāo)準(zhǔn)。具體計算式表示為:
(12)
(13)
(14)
(15)
式中:TP為把正類預(yù)測為正類的數(shù)量;TN為把負類預(yù)測為負類的數(shù)量;FP為把負類預(yù)測為正類的數(shù)量;FN為把正類預(yù)測為負類的數(shù)量。
選擇以下幾種算法作為基準(zhǔn)實驗進行對比來驗證本文方法的有效性:
(1) SVM:使用Word2vec將單詞轉(zhuǎn)換為詞向量,利用SVM進行文本情感分類。
(2) LSTM:使用Word2vec將單詞轉(zhuǎn)換為詞向量,作為LSTM網(wǎng)絡(luò)模型的輸入特征。
(3) BiLSTM:使用Word2vec將單詞轉(zhuǎn)換為詞向量,作為BiLSTM網(wǎng)絡(luò)模型的輸入特征。
(4) BiLSTM+Attention:使用Word2vec將單詞轉(zhuǎn)換為詞向量,作為BiLSTM網(wǎng)絡(luò)模型的輸入特征,并引入Attention機制優(yōu)化模型。
(5) ELMo+BiLSTM:使用ELMo模型生成上下文相關(guān)的動態(tài)詞向量,作為BiLSTM網(wǎng)絡(luò)模型的輸入特征。
(6) ELMo+BiLSTM+Attention:使用ELMo模型生成上下文相關(guān)的動態(tài)詞向量,作為BiLSTM網(wǎng)絡(luò)模型的輸入特征,并引入Attention機制優(yōu)化模型。
TensorFlow框架中的TensorBoard可視化工具能夠保存并實時展示模型訓(xùn)練過程中每個參數(shù)的變化。圖6、圖7分別給出了TensorBoard中BiLSTM、ELMo+BiLSTM+Attention模型在IMDB數(shù)據(jù)集上訓(xùn)練時損失函數(shù)值隨迭代次數(shù)的變化趨勢。
圖6 BiLSTM模型訓(xùn)練損失變化
圖7 ELMo+BiLSTM+Attention模型訓(xùn)練損失變化
可以看出,模型在訓(xùn)練時整體的函數(shù)損失值都呈下降趨勢,并最終維持穩(wěn)定收斂狀態(tài)。將ELMo詞向量與Attention機制相結(jié)合的模型,相比于使用Word2vec生成詞向量的BiLSTM模型,由于模型復(fù)雜度的增加,每輸入一批訓(xùn)練樣本,詞向量都會根據(jù)上下文做相應(yīng)的調(diào)整,造成起始的損失值變大,但收斂速度更快,且Attention機制的引入能進一步提高模型的準(zhǔn)確性,從而使最終的損失值更小。由此可見,將ELMo詞向量和Attention機制相結(jié)合能有效地提高模型分類的準(zhǔn)確性。
表3、表4分別是不同分類模型在IMDB和Yelp13數(shù)據(jù)集上的評價結(jié)果比較。
表3 在IMDB數(shù)據(jù)集上的評價結(jié)果
表4 在Yelp13數(shù)據(jù)集上的評價結(jié)果
可以看出在IMDB和Yelp13數(shù)據(jù)集上結(jié)果差異較大,這是因為ELMo動態(tài)詞向量更適用于訓(xùn)練數(shù)據(jù)較少的分類任務(wù),并且Yelp13數(shù)據(jù)集中每個類別的訓(xùn)練樣本分布不均衡也會對分類準(zhǔn)確率產(chǎn)生一定的影響。
對比表中分類模型SVM和LSTM的結(jié)果可以看出,基于LSTM分類模型的文本情感分類效果比傳統(tǒng)機器學(xué)習(xí)分類模型的分類效果要好,原因在于循環(huán)神經(jīng)網(wǎng)絡(luò)為深度訓(xùn)練模型,能夠更好地進行文本特征提取,并且考慮了上下文關(guān)聯(lián),從而能夠得到更好的分類效果。對比LSTM和BiLSTM的結(jié)果,BiLSTM網(wǎng)絡(luò)相較LSTM網(wǎng)絡(luò)來說能夠更好地捕捉雙向的語義依賴,因此分類效果比LSTM網(wǎng)絡(luò)模型的分類效果好。對比BiLSTM+Attention和ELMo+BiLSTM的結(jié)果可以看出,將Attention機制引入BiLSTM網(wǎng)絡(luò)模型和將ELMo動態(tài)詞向量作為BiLSTM網(wǎng)絡(luò)模型的輸入特征都可以有效提高分類效果。因為引入Attention機制使模型能夠更加充分地考慮到文本特征與結(jié)果的相關(guān)性,而ELMo動態(tài)詞向量可對詞的復(fù)雜特征和詞在語言語境中的變化進行建模,更好地學(xué)習(xí)詞匯多義性,從而取得更好的分類效果。本文提出的ELMo+BiLSTM+Attention網(wǎng)絡(luò)模型在兩個數(shù)據(jù)集上都取得了最佳的分類效果,相比于ELMo+BiLSTM模型準(zhǔn)確率分別提高了0.017和0.011,說明本文提出的結(jié)合ELMo詞向量和Attention機制的網(wǎng)絡(luò)模型能夠在一定程度上提升模型的分類效果,適合用于文本情感分類。
本文提出結(jié)合ELMo詞向量和Attention機制的文本情感分類方法。實驗結(jié)果表明此方法具有較好的分類效果,利用雙向語言模型生成的動態(tài)詞向量能夠更好地學(xué)習(xí)不同上下文中的詞匯多義性,達到消歧的目的,而Attention機制能夠進一步優(yōu)化網(wǎng)絡(luò)模型,提高模型的完備性。本文方法雖然取得了預(yù)期的分類效果,但在訓(xùn)練網(wǎng)絡(luò)模型的選擇和構(gòu)建上還存在一些可以改進的地方。LSTM網(wǎng)絡(luò)不具有并行計算能力,對于特別長期的依賴現(xiàn)象處理能力也有限。在未來的工作中,將進一步優(yōu)化訓(xùn)練網(wǎng)絡(luò)模型,提高情感分類的準(zhǔn)確率。