徐逸舟,林 曉,陸黎明
(上海師范大學 信息與機電工程學院,上海 200234)
電影評論的文本情感分類任務(wù)與文本分類[1]類似,本質(zhì)上是將文本歸類到某一預定義標簽的特定類別。目前常用的方法可以分為3類:①基于詞典和語義分析等方法[2]。這類方法主要通過人工制定語義規(guī)則,通常需要針對特定領(lǐng)域來建立相應(yīng)情感詞典,有很大的局限性。②使用傳統(tǒng)機器學習的方法[3]。主要基于監(jiān)督學習,利用樸素貝葉斯[4]、支持向量機[5]等算法。這些方法都可以被劃分為淺層學習方法[6]。它們計算量雖小,但泛化能力較差。③使用深度學習。這類方法主要基于卷積神經(jīng)網(wǎng)絡(luò)和長短期記憶網(wǎng)絡(luò)(long short-term memory,LSTM)等神經(jīng)網(wǎng)絡(luò)。
為了實現(xiàn)對電影影評情感傾向的準確分類,本文提出了一種基于分層式CNN的pos-ACNN-CNN長文本情感分類模型。常見的文本分類模型對于短文本已經(jīng)取得較好的結(jié)果,但對于長文本,由于句子較長較多,且情感語義貢獻度不同的原因,其分類的準確度并沒有達到預期效果。本文提出的模型針對電影長評,兼顧上下文內(nèi)容,提取出對分類貢獻度大的特征,從而提高情感分類的準確性。
近年來,隨著深度學習的不斷發(fā)展,許多原本應(yīng)用在計算機視覺領(lǐng)域的神經(jīng)網(wǎng)絡(luò)模型開始在自然語言處理領(lǐng)域中嶄露頭角,并取得了不錯的進展。文本分類技術(shù)是自然語言處理中最常用的技術(shù)之一,同時也是一個多學科交叉的研究方向,涉及到語言學、統(tǒng)計學、數(shù)據(jù)挖掘等多個領(lǐng)域的理論和方法。
2014,原本應(yīng)用在計算機視覺領(lǐng)域的CNN模型被引入到文本分類任務(wù)中。Ko等[7]提出多層卷積神經(jīng)網(wǎng)絡(luò),并將其運用在字符級別的識別和分類中。Vieira等[8]則在句子層使用卷積神經(jīng)網(wǎng)絡(luò)進行文本分類。Tang等[9]為了對句子之間的關(guān)聯(lián)關(guān)系進行建模,提出層次化循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)模型。Zhou等[10]使用LSTM解決跨語言情感分析任務(wù),解決了循環(huán)神經(jīng)網(wǎng)絡(luò)存在的梯度爆炸和梯度消失的問題。
注意力機制可以根據(jù)上下文信息找到真正對語義起作用的詞語,對解決情感極性判別問題非常有效。Yin等[11]提出一種基于注意力機制的卷積神經(jīng)網(wǎng)絡(luò),并將該網(wǎng)絡(luò)模型運用在句子對的建模任務(wù)中,驗證了注意力機制和CNN結(jié)合的可行性。Wang等[12]利用那個多層注意力機制和卷積神經(jīng)網(wǎng)絡(luò)結(jié)合的方式進行句子關(guān)系分類??偟膩碚f,深度學習方法能夠?qū)μ卣餍畔⑦M行自動提取,在自然語言處理的多個領(lǐng)域問題上,減少了傳統(tǒng)方法繁瑣復雜的特征工程步驟,具有很大的優(yōu)勢。
上述的算法模型在短文本的分類中總能取得較好的效果,當訓練集和測試集中評論的詞語不超過140字時,其分類效果顯著。但當處理較長的文本時,準確度將會明顯下降。這是因為長文本具有句子多、文本長的特點,因此需要能夠更加精煉提取其關(guān)鍵信息,分析上下文情感關(guān)系,從而準確判斷作者的情感極性。
針對電影評論的文本情感分類任務(wù),本文在卷積神經(jīng)網(wǎng)絡(luò)的模型基礎(chǔ)上,提出基于注意力機制和卷積神經(jīng)網(wǎng)絡(luò)結(jié)合的分層式長文本情感分類模型pos-ACNN-CNN。模型由pos Embedding層、ACNN層和CNN層組成。其中,pos Embedding層是帶有位置信息的詞嵌入層,ACNN層是由基于注意力機制的CNN模型構(gòu)成,最后的CNN層則是由基于文本層的CNN模型構(gòu)成。pos-ACNN-CNN模型如圖1所示。
圖1 基于分層式CNN的pos-ACNN-CNN長文本情感分類模型
電影評論通常包含強烈的情感傾向,且在表達上多有前后因果關(guān)系,因此構(gòu)造句子對更能提取出關(guān)鍵性的信息。據(jù)此,將影評中前后兩個句子組成一個句子對,針對每個句子首先通過Word2vec獲得詞向量表示,根據(jù)詞語位置添加位置編碼信息。使用ACNN模型提取句子對之間的特征信息,再將所有句子對的特征信息輸入到CNN模型中,通過CNN模型提取整個文本的全局特征,最終得到輸出分類結(jié)果。
詞向量的表示方法有多種,過去最常用的是詞袋模型。然而詞袋模型并沒有考慮句子中詞與詞之間的上下文關(guān)系,僅僅考慮詞本身的權(quán)重,而權(quán)重只與詞語在文本中出現(xiàn)的頻率有關(guān)。另一方面,詞袋模型會出現(xiàn)數(shù)據(jù)稀疏和特征向量維度過高等問題,不易計算且計算量大。
本文采用Word2vec[13]獲取文本詞向量表示。Word2vec是Google的開源工具,它改進了神經(jīng)語言模型,結(jié)合了人工神經(jīng)網(wǎng)絡(luò)和概率模型。Word2vec包含了兩種訓練模型,CBOW模型和Skip-gram。本文使用CBOW模型得到詞向量,作為模型的輸入。
本文以詞為單位,對于長度為n的句子,其句向量可表示為詞向量進行拼接后的結(jié)果
E1∶n=E1⊕E2⊕…⊕En
(1)
其中,⊕為拼接操作符。
由于本文基于卷積神經(jīng)網(wǎng)絡(luò),保留句子序列信息的能力并不強。而序列信息代表著全局的結(jié)構(gòu),又尤為重要。因此為了充分利用句子本身的順序性,本文在每個單詞中增加了該單詞在句子中的相對位置編碼信息。有多種方法來構(gòu)建位置編碼信息函數(shù),此處本文采用正弦和余弦函數(shù)[14]。該方法可以適用測試集中句子長度長于訓練集實例的情況
PE(pos,2i)=sin(pos/100002i/d)
(2)
PE(pos,2i+1)=cos(pos/100002i/d)
(3)
POS=PE(pos,2i)⊕PE(pos,2i+1)
(4)
POS表示該詞的位置編碼信息向量。其中pos是該詞在句子中的位置,d表示詞向量的維度,i表示詞向量中的第i個元素,⊕為拼接操作符。
編碼信息與詞嵌入向量矩陣的維度相同,可以直接疊加求和,再進行后面的計算。所以在本文的模型中,ACNN模型的輸入層是詞嵌入向量與位置編碼向量之和。pos-Embedding層模型如圖2所示。
圖2 帶位置信息的pos-Embedding層
在pos-Embedding層之后,提出基于注意力機制的卷積神經(jīng)網(wǎng)絡(luò)ACNN模型,如圖3所示。ACNN主要由輸入層、寬卷積層、基于注意力機制的池化層和合并層組成。輸入層接收的是pos-Embedding層的輸出,即句子對中每個詞語的詞向量特征矩陣;寬卷積利用其本身特點對輸入層的基本單位進行卷積操作提取特征;在池化層添加注意力機制提取不同詞語之間的情感極性;最后通過合并層將兩個句子的特性信息進行融合,得到該句子對的特征表示向量。
圖3 ACNN模型框架
2.3.1 寬卷積
假設(shè)有大小為k的卷積核和長度為n的句子。Li∈d是該句子中第i個詞的d維向量表示,L∈n×d代表輸入句子,向量m∈k×d表示卷積操作使用的卷積核。對于句子中的第j個位置,可以根據(jù)卷積核大小得到同樣大小的窗口向量矩陣。它由k個連續(xù)詞向量組成
wj=[Lj,Lj+1,…,Lj+k-1]
(5)
卷積核m對每個位置的窗口向量(k-gram)進行卷積。一維卷積背后的思想是將卷積核m與句子L中的每個k-gram做矩陣的元素相乘運算,得到特征映射cj為
cj=f(mTwj+b)
(6)
其中,b是偏置項,f(x)是一個非線性變換函數(shù),常用sigmoid、tanh、reLU等激活函數(shù)。本文使用reLU激活函數(shù)。
對于窄卷積,如圖4所示,也就是常提到的卷積,j的范圍從1到n-m。然而在進行這樣的窄卷積時,使用卷積核對矩陣操作往往對處于邊緣的數(shù)據(jù)無法操作。此處本文使用zero-padding的方法,對于輸入值范圍外的當j<1或者j>n-m都設(shè)為0。這樣可以將卷積核應(yīng)用在所有輸入尺寸的矩陣上。最終可以獲得一個更大的矩陣輸出。而這種填充0的方法被稱為寬卷積,如圖5所示。
圖4 窄卷積
圖5 寬卷積
假設(shè)輸入節(jié)點為L1到Ln,卷積核m的大小為k,經(jīng)過窄卷積操作后只剩下(n-k+1)個節(jié)點,而處于邊緣的(k-1)/2個節(jié)點沒有相應(yīng)的卷積操作,因此會失去關(guān)于這兩個節(jié)點的相關(guān)信息;我們采用zero-padding法,首先在矩陣邊緣添加(k-1)/2個節(jié)點,再進行卷積運算則得到(n+k-1)個節(jié)點,甚至比原矩陣更大。
經(jīng)過寬卷積之后得到特征向量C為
C=(c1,c2,…,cn+k-1)
(7)
寬卷積相比窄卷積能確保卷積核中所有權(quán)重能達到整個句子,包括邊緣的單詞。故本文在輸入層之后進行寬卷積操作,盡最大可能保留句子中的所有信息,以提高最后分類的準確性。
2.3.2 基于Attention的池化層
為了使模型在訓練過程中區(qū)分重要信息,本文在池化層中添加注意力機制,使模型高度關(guān)注這些信息。
在卷積層部分,我們將兩個連續(xù)的句子進行寬卷積操作從而得到的兩個不同的輸出向量,命名為CL和CR。利用這兩個向量進行如下公式計算可以得到注意力權(quán)重向量矩陣A
Ai,j=MatchScore(CL[:,i],CR[:,j])
(8)
Aij代表FL的第i列向量和FR的第j列向量的距離度量。其定義方法為1/(1+|L-R|),|L-R|表示左右兩個向量的距離度量,計算方法有多種,如歐幾里得距離、余弦相似度、曼哈頓距離等等,此處使用歐幾里得距離,效果較好。
獲取注意力權(quán)重向量矩陣A之后,計算卷積向量權(quán)重,給每個卷積層輸出一個權(quán)重值。左向量(7 col)每個單元對應(yīng)的Attention權(quán)重aL,j是由權(quán)重向量矩陣A中的列向量求和的值作為權(quán)重值
aL,j=∑A[j,:]
(9)
右向量(9 col)中每個單元的權(quán)重值aR,j是權(quán)重向量矩陣A的行向量求和得到
aR,j=∑A[:,j]
(10)
在池化的時候,將卷積后輸出的特征矩陣,基于Attention的權(quán)重值,相乘求和,提取出重要的特征信息,再連接成一個向量,得到池化層的輸出。其中,C∈(L+w-1)×d表示卷積層輸出,而整個句子池化后得到
(11)
其中,x有L和R兩個選項,分別代表一個句子對的左句子和右句子。d是向量維度。ax,k是句子x對應(yīng)的Attention權(quán)重值,Cx是句子x卷積后得到的句子向量。而Px是x句子池化后得到的句子特征。最終在合并層,將PL和PR進行拼接操作,得到句子對的特性信息向量P
P=PL⊕PR
(12)
經(jīng)過2.3節(jié),最終得到基于注意力機制的卷積神經(jīng)網(wǎng)絡(luò)的句子對的信息特征。對于某一待分類的文本,共有s個句子。前后兩個句子組成給句子對,共s-1個句子對,經(jīng)過ACNN層得到句子對的輸出結(jié)果P,共s-1個特征向量P。整個文本的特征向量可以表示為
F=P1⊕P2⊕P3⊕…⊕Ps-1
(13)
其中,⊕表示拼接操作。
將得到的文本特征向量F輸入到CNN模型中,整個CNN模型由以下4個部分組成。圖6為CNN模型框架示意圖。
圖6 CNN框架
(1)輸入層:ACNN模型的輸出結(jié)果F是整個文本的特征向量,同時也是該CNN層的輸入層。其中,F(xiàn)∈(s-1)×2×d。
(2)卷積層:卷積層使用的是2.3.1節(jié)提到的窄卷積,通過多個不同尺寸的卷積核對向量矩陣F進行信息提取。
(3)池化層:通過采用最大池化的方式,提取卷積層的最優(yōu)特征。
(4)全連接層:通過softmax函數(shù)進行計算,輸出樣本文本在各個標簽上的概率分布,得到最終的分類結(jié)果。
本實驗的實驗環(huán)境參數(shù)見表1。
表1 實驗環(huán)境參數(shù)
為了檢驗本文提出的模型性能,本文采用了來自國外長文本電影評論數(shù)據(jù)集:互聯(lián)網(wǎng)電影資料庫IMDB。這個數(shù)據(jù)集是情感分類中最常用的英文影評數(shù)據(jù)集,分類目標是將評論分為正類和負類。實驗數(shù)據(jù)總共包括50 000篇電影評論,為測試模型在長文本中的效果,本文根據(jù)評論文本的長度將其劃分為兩個子數(shù)據(jù)集,其中少于140字的稱之為短文本,長于140字的稱之為長文本??梢詫Ρ饶P驮诙涛谋竞烷L文本上的效果。實驗中將標注好的數(shù)據(jù)集劃分為訓練集、驗證集和測試集,分別占總數(shù)據(jù)集規(guī)模的70%、20%和10%。表2為IMDB影評數(shù)據(jù)集樣本示例。
表2 IMDB數(shù)據(jù)集樣本示例
為了驗證本文提出的基于分層式CNN的神經(jīng)網(wǎng)絡(luò)模型pos-ACNN-CNN在長文本情感分類上的有效性,對以下5種模型進行對比實驗。
(1)CNN:使用了普通卷積神經(jīng)網(wǎng)絡(luò)的模型。
(2)CNN-CNN:使用了雙層卷積神經(jīng)網(wǎng)絡(luò)模型。
(3)ACNN:基于注意力機制的卷積神經(jīng)網(wǎng)絡(luò)模型,在詞嵌入部分不包含位置信息。
(4)pos-ACNN:基于注意力機制的卷積神經(jīng)網(wǎng)絡(luò)模型,在詞嵌入部分包含位置信息。
(5)pos-ACNN-CNN:本文提出的實驗模型。
在訓練過程中,使用Adam優(yōu)化模型,卷積層的激活函數(shù)使用ReLU函數(shù)。其它具體參數(shù)見表3。
表3 實驗參數(shù)
本文采用精確率(Precision,P)、召回率(Recall,R)和準確率(Accuracy)這3個常用指標作為評價標準。具體的計算方式如下所示
(14)
(15)
(16)
其中,TP是真實類別為正類且預測為正類的樣本個數(shù);FN是真實類別為正類且預測類別為負類的樣本個數(shù);FP將真實類別為負類且預測類別為正類的樣本個數(shù);TN是真實類別為負類且預測類別為負類的樣本個數(shù)。
本文將5組實驗在IMDB數(shù)據(jù)集上進行實驗。表4給出了各個組實驗進行文本情感分類的結(jié)果,包括準確率、精確度和召回率。
表4 不同類型的文本情感分類模型結(jié)果對比
從表4中可以看出,整體上基于深度學習的模型在IMDB數(shù)據(jù)集上都取得了不錯的分類效果,其中本文提出的pos-ACNN-CNN模型的表現(xiàn)性能最優(yōu),在準確率、精確度和召回率3個衡量指標上都達到了最高。
對比CNN和ACNN模型可以看出,ACNN的性能遠勝CNN。這是因為注意力機制對比分析了文本中每個詞的重要程度,因此更好地把握了文本中的重點詞匯給文本情感傾向帶來的影響,從而提高情感分類的準確率。對比CNN和CNN-CNN模型可以看出,多層模型的性能更好,說明在面對數(shù)據(jù)量較大的情況下,復雜模型更具優(yōu)勢。多層模型可以更好地提取長文本中特征信息。對比ACNN、pos-ACNN和pos-ACNN-CNN這3個模型,可以看出pos-ACNN相較于ACNN,性能略有提升,這是因為pos-ACNN增加了位置編碼信息,保留了詞語的位置信息,因此其準確率更高。而pos-ACNN-CNN在pos-ACNN的基礎(chǔ)上多增加了一層CNN,能夠更好適用復雜數(shù)據(jù)集。
另一方面,對比所有模型在短文本和長文本方面的表現(xiàn),顯然單層模型在短文本上表現(xiàn)更好,但在長文本上表現(xiàn)不佳。而本文提出的基于分層式CNN模型pos-ACNN-CNN在長文本上的表現(xiàn),在精確率和準確率上與在短文本上表現(xiàn)基本持平,而在召回率上高出0.0093,驗證了pos-ACNN-CNN模型在長文本上的適用性。一方面是因為復雜的分層式模型更加適用于長文本的特征提取,另一方面則是注意力機制的運用和位置信息的結(jié)合使得提取的特征更加準確,更能夠反映文本的情感傾向。
本文提出基于分層式CNN的pos-ACNN-CNN文本情感分類模型,融合了卷積神經(jīng)網(wǎng)絡(luò)的模型優(yōu)勢,并通過注意力機制抓住了文本的重要特征,同時在此嵌入層增加位置編碼信息,從而提高了文本分類的精確性。為驗證該模型的性能,將其在經(jīng)典文本情感分類IMDB數(shù)據(jù)集上進行實驗,并設(shè)計了多組對比實驗。該模型在實驗中獲得了較優(yōu)的分類效果,驗證該模型可以更加精確地提取文本特征,更加適合長文本的情感分類工作。
在未來的工作中,將考慮分層注意力機制,將普通的文本分類拆分成從句子層的分類和從文本層進行的分類,同時結(jié)合LSTM等序列信息模型,以此來探索多種組合模型在更廣泛的領(lǐng)域上的適用性。