付曉杰 張曦煌
(江南大學(xué)物聯(lián)網(wǎng)工程學(xué)院 無錫 214000)
以往的情感分析工作都是依賴人工方式去完成的,主要是根據(jù)一些專家發(fā)布的情感詞典和文本分析模板逐條分析句子的情感色彩,需要消耗大量的人力物力。隨著深度學(xué)習(xí)在各個領(lǐng)域的應(yīng)用中不俗的表現(xiàn),許多學(xué)者開始嘗試去運用深度學(xué)習(xí)去解決文本情感分析問題。例如Socher 等[1~3]的遞歸神經(jīng)網(wǎng)絡(luò)RNN(Recurrent Neural Network,RNN);Kalchbrenner等[4]用卷積神經(jīng)網(wǎng)絡(luò)解決Twitter 的極性判斷問題等;陳珂等[5]使用多通道卷積神經(jīng)網(wǎng)絡(luò)解決中文微博情感分析任務(wù);申昌,冀俊忠等[6]利用雙通道卷積神經(jīng)網(wǎng)絡(luò)解決中文情感分析問題等。這種基于深度學(xué)習(xí)的訓(xùn)練方法省時省力,而且準(zhǔn)確率極高。卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)是深度學(xué)習(xí)算法的一種,具有學(xué)習(xí)時間短、效率高、結(jié)構(gòu)簡單和非線性映射關(guān)系的能力,已經(jīng)在人臉識別、圖像識別、場景識別等任務(wù)中得到廣泛的應(yīng)用[7~8]。傳統(tǒng)的CNN網(wǎng)絡(luò)應(yīng)用在情感分類中存在幾個缺點:1)多數(shù)應(yīng)用中使用單一的情感向量特征表示,難以正確表示句子的語義信息。2)傳統(tǒng)的Max-pooling 只提取一個最大特征,忽略了句子的語法結(jié)構(gòu),比如轉(zhuǎn)折句式,這樣導(dǎo)致一部分句子的情感識別出現(xiàn)錯誤。3)傳統(tǒng)的CNN 網(wǎng)絡(luò)末端都使用的是softmax 分類器。由于卷積神將網(wǎng)絡(luò)的參數(shù)較多,多次迭代訓(xùn)練過程中容易出現(xiàn)過擬合現(xiàn)象。
本文提出基于分段多池卷積神經(jīng)網(wǎng)絡(luò)(Sentiment analysis based on piecewise multi-pooling convolution neural network,PMPCNN)模型:第一部分是構(gòu)建多種特征組合的情感詞向量作為模型的輸入矩陣;第二部分是根據(jù)句子結(jié)構(gòu),采用分段卷積,并進行多池操作提取多種特征;第三部分是介紹Dropout 算法。在模型最后的softmax 層加入了Dropout 算以提高算法的泛化能力,避免模型過度擬合,提高整個模型的準(zhǔn)確率。
對于一個句子,將其轉(zhuǎn)換成對應(yīng)的n 個詞條,即s={x1,x2,…,xn} ,其中xi示該句子s 的第i 個詞條。根據(jù)中文的語法結(jié)特征可知,詞條不僅具有詞義特征,還具有情感極性特征,而特征又會因為詞條在句中所出的位置不同而發(fā)生相應(yīng)的改變。由文獻[9]可知,模型的詞向量矩陣可以融合多種特征因素。這樣可以將詞條的多種特征因素拼接而成的詞向量矩陣作為模型的輸入,使模型能夠提取出更為多樣的隱含信息。
基于分段多池卷積神經(jīng)網(wǎng)絡(luò)模型的輸入詞向量矩陣部分一共由三部分組成,分別是語義詞向量、情感詞向量和位置向量。
對于詞條的語義詞向量的構(gòu)建,依據(jù)谷歌的skip-gram[10]模型。該能夠非常準(zhǔn)確地根據(jù)詞條信息構(gòu)建出相應(yīng)的語義詞向量xsem。假設(shè)句子s 中詞條xi的順序為x1,x2,…,xn,其目標(biāo)是最大化式(1)中的條件概率:
其中,c 表示的是以中心詞為中心而構(gòu)建出的相關(guān)上下文的詞數(shù)。c 值越大,詞向量的構(gòu)建就越好。
構(gòu)建情感詞向量采用公認的HowNet 情感詞典。通過情感詞典,獲得了每個詞條對應(yīng)的情感詞向量xsen。
因為語句數(shù)據(jù)集中包含著大量的轉(zhuǎn)折句,而轉(zhuǎn)折句式的數(shù)據(jù)集的情感判斷存在著較大的難度,并且該部分的數(shù)據(jù)集在總的數(shù)據(jù)集中占有相當(dāng)?shù)谋戎兀D(zhuǎn)折句式數(shù)據(jù)集的情感判斷,影響了整個模型的識別準(zhǔn)確率。所以針對轉(zhuǎn)折句式數(shù)據(jù)集,通過標(biāo)注轉(zhuǎn)折詞來進行特殊的處理。如表1 展示了一些模型中考慮的轉(zhuǎn)折詞。
表1 轉(zhuǎn)折詞表
對于情感屬性特征,使用一個情感詞特征表,如表2所示。假如模型的輸入部分是一個長度為n的句子s ,而每個詞條xi的長度為k 維,即xi∈Rk,那么就會根據(jù)表2 對每個詞條進行詞性標(biāo)注,“0”表示“否”,“1”表“是”。
表2 詞性標(biāo)注
因為數(shù)據(jù)集大部分都是以句子的形式出現(xiàn)的,而詞條在句子中出現(xiàn)的位置,也隱含了整個句子的情感傾向。詞條的位置向量也應(yīng)該構(gòu)建。計算詞條在句子s 中表示的位置信息:
其中i 表示詞條wi句子s 中的位置,len(s)表示句子s 的長度,max len 表示模型輸入的句子所允許的最大值,p(wi)表示經(jīng)過計算得出的詞條wi的位置值。把每個位置映射到一個d 維向量,即xpos(i)∈Rd,其中xpos(i)為第i 個位置值的向量。
假設(shè)x 為情感詞向量,則表示為
本文的分段多池卷積神經(jīng)網(wǎng)絡(luò)模型一共分成了四個部分,分別是多特征詞向量的輸入、分段卷積、多池化和情感分類輸出。如圖1所示。
1)輸入層:模型的輸入部分應(yīng)該是融合了詞條多種特征的詞向量矩陣X ,該矩陣包含了三部分:語義詞向量、情感詞向量和位置向量,其對應(yīng)的長度分別表示為lsem,lsen和lpos。令xi∈Rl,其中l(wèi)=lsem+lsen+lpos。對應(yīng)的的長度為n 的句子轉(zhuǎn)化成的輸入多特征矩陣就為進一步表示為x ∈Rl×n。
圖1 基于分段多池卷積神經(jīng)網(wǎng)絡(luò)模型
2)分段卷積層:卷積層主要是為了提取特征矩陣中的信息,并將提取到的信息映射到特征矩陣中。不同的卷積核權(quán)重可以提取不同的特征信息。xi:i+h-1是詞xi,xi+1,…,xi+h-1組成的特征局部矩陣。本文利用大小為h×n 的卷積核權(quán)重,其中n 代表卷積核權(quán)重的寬度,h 代表提取的詞向量的數(shù)量:
其中ci代表權(quán)重提取的第i 特征值,1 ≤i ≤nh+1;f(·)代表的是卷積核函數(shù);w 代表卷積核權(quán)重;h 為卷積核權(quán)重大?。粁i:i+h-1代表提取的詞向量;b 代表著偏置項。
當(dāng)然,為了提取多個特征,可以設(shè)置多個卷積核權(quán)重。假如有m 個權(quán)重W=w1+w2+…+wm,則卷積運算可以表示為
其中,1 ≤j ≤m,卷積結(jié)果為矩陣C ∈Rm×(n-h+1)。
而本文的分段卷積層與通常的卷積層相比,是在卷積開始之前,先依據(jù)轉(zhuǎn)折詞對情感詞向量進行分段,分成兩個獨立的句子,再進行卷積操作,如圖1 所示。每個卷積核都會對分段的特征向量進行獨立卷積操作,提取不同的特征值,參與最后的多池操作。
3)多池層:通常卷積神經(jīng)網(wǎng)絡(luò)在池化層部分都采用單一的最大池化方法。該方法雖然計算簡單,但是往往會因為丟失其他重要特征而導(dǎo)致情感誤判。因為每一個句子都暗藏多個重要特征。為了捕獲多個關(guān)鍵特征,模型采用多池的方法。如圖1所示,情感詞拼接矩陣被轉(zhuǎn)折詞“但是”分成了上下兩部分,然后對每部分矩陣分別進行卷積,得到特征向量c1ji,其中1 ≤j ≤m,1 ≤i ≤n。將c1ji進行分段池化(圖1中最大池化窗口是3)操作。最后綜合所有計算出來的最大特征值組成一個一維向量,然后對該向量做非線性運算。
4)輸出層:傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)的最有一層都是全連接層。在該層中,引入了Dropout 算法來防止過擬合現(xiàn)象。Dropout算法的思想就是將原始輸入數(shù)據(jù)按照一定的比例ρ隨機置零,因為每次置零的參數(shù)都是隨機的,這樣做就有效地避免模型的過擬合現(xiàn)象。在softmax 層的訓(xùn)練過程中引入了Dropout算法,提高了情感分類的準(zhǔn)確性,同時根據(jù)模型的輸出結(jié)果和實際標(biāo)簽進行對比,反向調(diào)整模型權(quán)重參數(shù)。假設(shè)分段多池層得到的向量為p,則:
其中,y ∈{+1,-1},Ws∈,bs為偏置項。
本文提出的模型主要是用來進行情感分類的,所以需要優(yōu)化的參數(shù)一共是兩部分,分別是多個特征的詞向量和模型網(wǎng)絡(luò)參數(shù)。設(shè)詞向量為E ,網(wǎng)絡(luò)參數(shù)為H ,分類器的參數(shù)為D ,令θ={E,H,D}。設(shè)數(shù)據(jù)集為 Ω={(S1,R1),(S2,R2),…,(Sn,Rn)},n >0 。其中Si表示第i 個句子,Ri表示句子Si對應(yīng)的情感類別,n 表示數(shù)據(jù)集的數(shù)量。 p(Ri|Si,θ)表示在參數(shù)θ 的情況下,Si被識別為Ri的概率。則優(yōu)化的目標(biāo)函數(shù)為
為了進一步防止模型過擬合的現(xiàn)象,又采用了L2 正則化,其中λ代表正則化的參數(shù)。訓(xùn)練過程中,采用隨機梯度下降訓(xùn)練方法,無需所有的參數(shù)參與運算,這樣可以簡化計算過程,提高模型的訓(xùn)練速度,以最快的速度訓(xùn)練出模型。則參數(shù)的更新方法為
其中,α 為學(xué)習(xí)率。
訓(xùn)練數(shù)據(jù)集一部分來自中國科學(xué)院計算技術(shù)研究所譚松波整理的酒店評論語料[11],另一部分來自從網(wǎng)上爬取到的微博評論數(shù)據(jù)集。將所有的數(shù)據(jù)集分成兩個部分:訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集。從中選取7000 條帶有極性的數(shù)據(jù)作為訓(xùn)練數(shù)據(jù)集,其中正面極性數(shù)據(jù)4312 條,負面極性數(shù)據(jù)2688條。然后再選取3000 條帶有極性的數(shù)據(jù)作為測試數(shù)據(jù)集,其中正面極性數(shù)據(jù)1798 條,負面極性數(shù)據(jù)1202 條。同時需要注意的一點是,無論是訓(xùn)練數(shù)據(jù)集還是測試數(shù)據(jù)集中,其中都包含約有30%的轉(zhuǎn)折句式語料,以便測試模型是否可以正確地判別轉(zhuǎn)折句式。
上文提到,情感詞向量部分采用的是HowNet情感詞典;在詞向量部分使用的是谷歌開源項目的word2vec 工具的skip-gram 模型。在數(shù)據(jù)集劃分之后,就要對參與計算的句子提前進行固定長度的操作。首先給定一個句子的固定長度,然后統(tǒng)計參與計算的句子的長度,對于那些長度不夠的句子進行補零處理,以使其滿足句子長度的要求。這樣就統(tǒng)一了所有句子的長度。然后采用矩陣計算,這樣可以提高程序的效率。當(dāng)然,這里還會進行一些其他的操作,比如去除特殊符號、糾正錯別字、格式轉(zhuǎn)換、訓(xùn)練詞向量等。
實驗中,本文提出的卷積神經(jīng)網(wǎng)絡(luò)采用的是Rectified linear 函數(shù),實驗過程中使用了Zeiler[12]提出的Adadelta 的更新規(guī)則。文獻[13]通過研究發(fā)現(xiàn)詞向量維度、學(xué)習(xí)率、dropout、隱藏層參數(shù)數(shù)量對分類效果有較大的影響。以下實驗中的參數(shù)都是經(jīng)過多次反復(fù)試驗最終確定最優(yōu)組合,模型的參數(shù)設(shè)置如表3 所示。目標(biāo)函數(shù)在訓(xùn)練時迭代次數(shù)達到50 次時已經(jīng)處于收斂狀態(tài),達到最低值,且不再發(fā)生變化,所以迭代次數(shù)為50次。
表3 參數(shù)設(shè)置
為了驗證模型的有效性和準(zhǔn)確性,設(shè)計如下實驗對比:
1)典型的機器學(xué)習(xí)。選取幾個比較有代表性的傳統(tǒng)機器學(xué)習(xí)模型進行比較,分別是高斯混合模型(GMMs)、支持向量機(SVM)[14]、卷積神經(jīng)網(wǎng)絡(luò)(CNN)[15]。
2)MCCNN。文獻[5]提出的模型,并利用skip-gram模型訓(xùn)練詞向量。
3)TSCD-CNN。文獻[6]提出的模型,并利用skip-gram模型訓(xùn)練詞向量。
4)PMPCNN。本文提出的分段多池卷積神經(jīng)網(wǎng)絡(luò)。
5)PMPCNN+Dropout。本文提出的分段多池卷積神經(jīng)網(wǎng)絡(luò),并增加Dropout的優(yōu)化方法。
本次實驗,通過三個指標(biāo)來對各個模型的可行性和準(zhǔn)確性進行評估對比,分別是精確率、召回率和F1-Measure。其中,F(xiàn)1 值就是綜合精確率和召回率的一個均值,即綜合評價指標(biāo)。各個模型在數(shù)據(jù)集的測評結(jié)果見表4。
表4 情感分類結(jié)果
從表4 可以看出,相比其他模型,本文提出的PMPCNN 模型明顯取得了更高的精確度,其中PMPCNN 取得了88.62%的精確度,PMPCNN+Dropout取得了所有模型中最高的91.19%的精確度。下面對實驗結(jié)果對比進行詳細的分析。
相對于傳統(tǒng)的機器學(xué)習(xí)方法,無論是高斯混合模型、還是支持向量機,CNN的精確率是最高的,達到75.21%,F(xiàn)1-Measure 也達到79.70%。相比GMMs 的精確度高了17.89%,比SVM 也高了10.39%。這足以說明相比其他傳統(tǒng)的機器學(xué)習(xí)算法,CNN模型在文本情感分析上具有其他模型所不具備的優(yōu)勢。這也從側(cè)面說明了,在文本情感分析上針對CNN模型的改進的正確性。
本文模型PMPCNN 與MCCNN 模型和TSCD-CNN相比,取得精確度更高,比MCCNN高出了6.07%,比TSCD-CNN 模型高出了6.2%。對于MCCNN 模型來說,雖然采用了多通道機制對詞向量進行多特征提取,但是因過于注重輸入模型詞向量部分的特征提取,導(dǎo)致了其他一些次要特征被提取出來并放大,影響了最后情感的識別。而TSCD-CNN 模型雖然在池化層做了動態(tài)池化的改進,但是忽略了詞向量輸入部分的特征獲取,畢竟所有情感分析的判斷,都是基于正確的特征輸入。實驗對比,充分說明了本文PMPCNN模型在文本情感分析方面的優(yōu)勢。
與前所述,Dropout 方法可以有效地防止模型過擬合。為了證明這一點,在實驗中測試了PMPCNN 和PMPCNN+Dropout 兩種模型。而測試的最終結(jié)果可以看出,加入了Dropout 優(yōu)化方法的PMPCNN模型的準(zhǔn)確率最高,取得了所有模型中的最高準(zhǔn)確率。這說明使用Dropout優(yōu)化方法的正確性,有效地提高了模型情感識別的準(zhǔn)確率。
為了進一步驗證本文PMPCNN改進的有效性,設(shè)計了10 組實驗,采用三種不同的PMPCNN 模型,所有實驗均采用同樣的數(shù)據(jù)集,實驗結(jié)果如圖2 所示。PMPCNN1 模型未采用多特征情感詞向量,使用單一的情感詞向量,但是采用了Dropout 算法;PMPCNN2 模型采用了多特征情感詞向量,但是未采用Dropout算法防止過擬合;PMPCNN3 模型就是完整的PMPCNN 模型,既采用了多特征情感詞向量,同時在最后采用了Dropout 算法防止過擬合。經(jīng)過10 組對比實驗可以看出,PMPCNN1 模型依靠Dropout 算法防止模型過擬合,精確度一直比較穩(wěn)定,但是由于未采用多特征情感詞向量,未能充分挖掘句子隱含信息,所以識別率不高。而PMPCNN2模型正好相反,多次取得較高精確度,但是沒有防止過擬合機制,所以訓(xùn)練出來的模型容易陷入過擬合,精確值起伏較大。而本文提出的PMPCNN模型,也就是實驗中的PMPCNN3模型,不但取得了實驗中的最高精確度,同時還具有很好的穩(wěn)定性。這充分說明了,本文對模型改進的可行性和正確性。
圖2 PMPCNN對比實驗
通過上面的諸多的對比試驗可以看出,在同樣條件的情況下,本文提出的分段多池卷積神經(jīng)網(wǎng)絡(luò)相比其他網(wǎng)絡(luò)模型,取得了最好的實驗效果,情感識別準(zhǔn)確率最高。這說明了分段多池卷積神經(jīng)網(wǎng)絡(luò)模型能夠較好分析句子結(jié)構(gòu)信息,捕捉多種句子隱含特征,準(zhǔn)確地進行情感判斷。
本文提出的分段多池卷積神經(jīng)網(wǎng)絡(luò)(piecewise multi-pooling convolution neural network,PMPCNN)情感分析模型,該模型在情感詞向量部分采用了多種特征向量拼接的方式作為整個模型的輸入,同時在卷積過程中,對轉(zhuǎn)折句式進行格外的分段處理。在多池部分,采用了多池策略,多段提取最大特征值。在最后的網(wǎng)絡(luò)輸出部分,加入Dropout算法,避免了模型快速過擬合,并提升模型的泛化能力。在實驗中,與多種模型進行比較,在同樣的數(shù)據(jù)集情況下,分段多池卷積神經(jīng)網(wǎng)絡(luò)PMPCNN模型取得了更好的效果,體現(xiàn)出該模型對情感分類的可行性和魯棒性。