余本功,王惠靈,朱曉潔
1.合肥工業(yè)大學 管理學院,合肥 230009
2.合肥工業(yè)大學 過程優(yōu)化與智能決策教育部重點實驗室,合肥 230009
情感分析(sentiment analysis,SA)是自然語言處理(natural language processing,NLP)的一個子領(lǐng)域,在現(xiàn)實生活中有著非常廣泛的應用場景。例如企業(yè)可以對淘寶商品評價、餓了么外賣評價等進行情感分析,判斷其中蘊含的情感傾向,從而更好地洞悉用戶需求,推動產(chǎn)品更新迭代。
傳統(tǒng)的情感分析只關(guān)注評論表現(xiàn)出來的整體情感,對其中信息的挖掘往往不夠深入。方面級別情感分析(aspect-level sentiment analysis,ALSA)是一種細粒度的情感分析任務,旨在分析文本針對不同方面的情感極性。如圖1所示,在“Staffs are not that friendly,but the taste covers all.”這句評論中,對于方面詞“service”,句子表現(xiàn)出消極的情感極性。而對于方面詞“food”,句子表現(xiàn)出積極的情感極性。其中,“service”和“food”都是預定義的方面類別。通過方面級別情感分析,可以挖掘產(chǎn)品在各個維度的優(yōu)劣,進一步明確如何改進產(chǎn)品。
圖1 方面級別情感分類的例子Fig.1 Example of ALSA
早期,人們主要使用機器學習方法來處理ALSA任務,如支持向量機(SVM)[1]。近年來,深度學習的方法漸漸成為主流,如LSTM[2]、記憶網(wǎng)絡[3]等。與傳統(tǒng)的情感分析任務不同的是,ALSA任務不僅需要考慮句子上下文的信息,如何將方面詞的信息融合到模型結(jié)構(gòu)中也是需要研究的重點。
注意力機制[4]最初被用于圖像處理領(lǐng)域中,現(xiàn)在已經(jīng)成為神經(jīng)網(wǎng)絡中的一個重要概念。通過對輸入的各個部分賦予不同權(quán)重,注意力機制可以使模型高度關(guān)注重要信息。目前,結(jié)合注意力機制的神經(jīng)網(wǎng)絡主要包括基于注意力機制的卷積神經(jīng)網(wǎng)絡(CNN)和基于注意力機制的循環(huán)神經(jīng)網(wǎng)絡(RNN)。RNN及其衍生網(wǎng)絡(如LSTM、GRU等)適合處理序列信息,具有很強的上下文依賴能力。而CNN類模型利用濾波器抽取特征,能夠有效地提取局部信息。基于此,本文提出了基于雙重注意力機制的BG-DATT-CNN模型。該模型結(jié)合了CNN和RNN各自的優(yōu)勢,能夠同時提取方面詞和上下文相關(guān)信息,實現(xiàn)對文本信息的深層次挖掘。
方面級別情感分析本質(zhì)上屬于NLP領(lǐng)域的分類問題。傳統(tǒng)的方法首先會定義情感詞典[5]、語法規(guī)則等一系列特征,然后采用SVM、樸素貝葉斯[6]等分類器進行分類。這種方法雖然在特定領(lǐng)域有良好的表現(xiàn),但是往往需要耗費大量的人工成本。
近年來,隨著深度學習的發(fā)展,越來越多的神經(jīng)網(wǎng)絡模型[7-9]被應用到ALSA領(lǐng)域中。起初這些模型都沒有考慮到方面詞的信息,導致分類的準確率不高。有學者[10]指出40%的分類錯誤是忽略方面詞信息導致的。
后來人們開始嘗試將方面詞信息融入到模型中。根據(jù)方面詞的不同類別可將ALSA任務分為兩個子任務。一類基于目標詞(aspect-target),另一類基于方面類別(aspect-category),即本文的研究重點。兩種任務最大的區(qū)別是基于目標詞的任務的方面詞就在句子中,而基于方面類別的任務的方面詞是預定義的具有高度概括性的詞匯。換句話說,基于方面類別的ALSA任務不關(guān)心句子中各個具體的實體對應的情感極性,而是關(guān)心句子在幾個特定維度上表現(xiàn)出來的情感。例如在“The hamburger is delicious but expensive”這句話中,“hamburger”是一個目標詞,而“food”為方面類別,是一個具有概括性的詞匯。
RNN類序列模型適合處理文本信息,在ALSA領(lǐng)域應用十分廣泛。Tang等[11]提出了TD-LSTM和TC-LSTM。TD-LSTM將句子分成左右兩個部分,分別對目標詞的上下文用LSTM建模,最后將隱藏向量連接起來輸入到softmax函數(shù)中進行分類。TC-LSTM是在TD-LSTM基礎(chǔ)上的改進,通過將目標詞向量和上下文詞向量連接起來輸入到前后兩個LSTM中,從而實現(xiàn)方面詞和文本的交互。Tang等[3]還引入了記憶網(wǎng)絡[12]解決ALSA問題,捕捉不同的上下文單詞對于特定方面詞的重要性,改善了RNN、LSTM等網(wǎng)絡記憶能力較差的問題。以上模型主要是為了解決基于目標詞的ALSA任務。
目前,注意力機制在情感分析、關(guān)系抽取[13]、閱讀理解[14]等NLP任務中應用十分廣泛。在針對方面類別的ALSA任務上,ATAE-LSTM[15]首次將注意力機制應用到模型中,先將方面詞向量和上下文詞向量組合作為LSTM的輸入,再通過注意力機制給上下文單詞賦予不同的權(quán)重,極大地改善了模型表現(xiàn)。Tay等[16]認為簡單的拼接會增加模型的參數(shù)成本和訓練難度,因此提出在LSTM層后接入方面詞-文本融合層,首先對方面詞和上下文之間的關(guān)系進行建模,然后使注意力層專注于學習經(jīng)過融合后的上下文的相對重要性。使用單層注意力機制可能不足以提取長文本中的重要特征。IAN[17]、AOA[18]、MGAN[19]都是針對基于目標詞任務設計的交互式注意力模型,首先通過對目標詞和文本分別建模,然后利用交互注意力機制獲取兩者的交互信息。孫小婉等[20]提出了結(jié)合多頭注意力機制的雙注意力網(wǎng)絡模型,使得模型能夠更全面地理解句中單詞之間的依賴關(guān)系。
CNN能有效提取句子局部特征,具有訓練速度快和權(quán)值共享等優(yōu)點。Xue等[21]提出了一種基于CNN和門控機制的方面級別情感分析模型,設計了GTRU門控單元有選擇地提取相關(guān)信息。梁斌等[22]結(jié)合位置、詞性、目標詞三種注意力機制來構(gòu)造多注意力機制卷積神經(jīng)網(wǎng)絡模型,能有效識別不同目標詞的情感極性,證明了注意力機制和CNN結(jié)合的有效性。
綜上,現(xiàn)有的基于RNN的模型忽略了局部特征的重要性,而基于CNN的模型不能捕捉長距離依賴的信息?;诖?,本文提出了基于雙重注意力機制的BG-DATTCNN模型,將RNN和CNN的優(yōu)勢相結(jié)合,并設計了一種基于綜合權(quán)重的雙重注意力機制同時獲取方面詞和上下文相關(guān)信息。該模型首先采用BERT[23]對句子和方面詞分別編碼獲得文本的深層特征表示,再利用Bi-GRU提取全局特征,然后通過雙重注意力機制強化特征,給重要程度不同的單詞賦予不同的權(quán)重,最后利用CNN分兩階段提取重要特征,從而實現(xiàn)對文本信息更深層次的抽取。
本文的任務是基于方面類別的ALSA任務。以下提到的方面詞均為方面類別。
對于長度為n的句子和m個預定義的方面詞v={a1,a2,…,am}。本文的目標是針對不同的方面詞分析句子的情感極性。例如句子“The price is reason‐able although the appetizers is poor.”,對于給定的方面詞“price”,模型輸出的是積極的情感極性,而對于給定的方面詞“food”,模型輸出的是消極的情感極性。本文利用BERT[23]將每一個單詞映射成低維空間的連續(xù)詞向量,得到上下文詞向量矩陣E=[x1;x2;…;xn]∈Rn×dw和方面詞向量V∈R1×dw,其中dw為詞向量維度。
注意力機制的作用是在訓練過程中,通過計算權(quán)重的方式讓模型了解輸入數(shù)據(jù)中哪一部分信息是重要的。本文通過雙重注意力機制計算兩類權(quán)重。外部注意力機制根據(jù)方面詞和上下文的相關(guān)程度計算權(quán)重,內(nèi)部注意力機制根據(jù)單詞對上下文語義重要程度計算權(quán)重。
(1)外部注意力機制
對于ALSA任務而言,外部注意力機制的作用是獲取文本和方面詞的依賴關(guān)系,強化文本的方面詞相關(guān)特征。通過計算方面詞和句子中各個單詞的注意力得分,給和方面詞相關(guān)度不同的單詞賦予不同的權(quán)重。例如在“Staffs are friendly,but the taste is bad.”這句話中,“friendly”是用來形容“service”的,而“ok”是用來形容“food”的。因而在該句中,單詞“friendly”相比“bad”與方面詞“service”相關(guān)程度更高,因此應該被賦予更大的權(quán)重。假設句子的向量表示為h,方面詞的向量表示為V,外部注意力計算公式如下:
首先采用縮放點積注意力計算h和V之間的相似度,然后通過softmax函數(shù)歸一化得到注意力權(quán)重α1。其中d為詞向量維度。
(2)內(nèi)部注意力機制
內(nèi)部自注意力機制即自注意力機制,是注意力機制的一種特殊形式。通過計算句子中每一個單詞的注意力得分,給重要程度不同的賦予不同的權(quán)重。比如在“The place is so cool.”這句話中,相比其他單詞,“cool”這個詞直接體現(xiàn)了情感傾向,對句子語義的影響更大,應該被賦予較大的權(quán)重。
根據(jù)文獻[24]提出的計算文本中注意力的方式,本文首先將句子的向量表示h輸入到一個單層的感知機中得到u作為h的隱層表示。為了衡量每個單詞的重要性,本文用u和一個隨機初始化的上下文向量uw的相似度來表示,然后經(jīng)過softmax操作獲得了歸一化的注意力權(quán)重α2。公式表示如下:
其中,tanh為非線性激活函數(shù),w、uw為參數(shù)矩陣,b為偏置。
BG-DATT-CNN模型的整體結(jié)構(gòu)如圖2所示。模型共由6個子模塊組成,分別為詞嵌入層、Bi-GRU層、雙重注意力層、K-Max池化層、CNN層和輸出層。首先將上下文詞向量矩陣E輸入到Bi-GRU中獲取句子的全局特征,然后通過雙重注意力機制強化句子的上下文相關(guān)特征和方面詞相關(guān)特征,再利用K-Max池化和TextCNN分兩步提取特征,增強模型的特征提取能力。最后將得到的特征輸入到全連接層中得到結(jié)果。
圖2 BG-DATT-CNN模型結(jié)構(gòu)圖Fig.2 Architecture of BG-DATT-CNN
(1)Bi-GRU提取全局特征
GRU是一種序列模型,可用于文本建模,雙向的GRU可以從前后兩個方向?qū)渥咏?,同時考慮到上下文的信息。因此,本文將上下文詞向量矩陣E輸入到Bi-GRU中提取句子的全局特征。前向的GRU產(chǎn)生一個隱藏向量h1∈Rn×dh,后向的GRU產(chǎn)生一個隱藏向量h2∈Rn×dh,最終的輸出hs由h1和h2連接起來得到。公式表示如下:
其中,dh為隱藏單元個數(shù)。
(2)雙重注意力機制強化重要特征
根據(jù)上文提出的計算文本中雙重注意力的方式,本文首先對Bi-GRU層輸出的隱藏向量hs計算內(nèi)部注意力得到注意力權(quán)重αin,再對hs和V計算外部注意力注意力權(quán)重αout。然后將兩者相加得到綜合權(quán)重α。最后將hs和α相乘得到加權(quán)后的句子表示s。公式表示如下:
(3)K-Max池化提取前K個重要特征
在NLP領(lǐng)域,池化層主要用來提取特征。最大池化為比較常見的池化操作,做法是保留其中最重要的特征,但這樣會不可避免地丟失部分重要特征。K-Max池化可以取所有特征值中得分在Top-K的值,并保留這些特征值原始的先后順序,即通過保留更多有價值的信息供后續(xù)階段使用。本文對注意力層輸出的向量s表示采用K-Max池化,保留前K個注意力分值較大的向量,得到前K個詞的組合特征向量γ。
(4)CNN提取局部特征
本文采用類似于TextCNN模型[25]的結(jié)構(gòu)進一步提取局部特征。該網(wǎng)絡第一層為輸入層,將K-Max池化層提取的前K個向量γ作為輸入;第二層為卷積層,使用多個大小不同的濾波器對輸入的向量進行卷積運算;第三層為池化層,執(zhí)行最大池化操作,提取最重要的特征,重新構(gòu)建一個特征向量r。
最后將r輸入到全連接網(wǎng)絡,通過softmax函數(shù)分類,得到每個文本所屬類別的概率分布值p,最大值的類別即為預測類別。公式表示如下:
其中,w'為參數(shù)矩陣,b'為偏置。C為情感類別數(shù)。
其中,i為文本序號,j為類別序號。λ‖θ‖2為交叉熵正則項。
本文采用國際語義評測大賽SemEval 2014的Res‐taurant數(shù)據(jù)集(https://alt.qcri.org/semeval2014/)來驗證模型的有效性。該數(shù)據(jù)集一共包含3 518條評論,每條評論包含若干個方面詞和對應情感類別。其中方面詞包含“Food”“Aspect”“Service”“Ambience”和“Anecdotes”,情感類別分為“Positive”“Negative”和“Neutral”。實驗的任務是根據(jù)輸入評論文本和給定的方面詞,輸出對應的情感類別。表1給出了本文實驗使用數(shù)據(jù)統(tǒng)計。
表1 實驗使用數(shù)據(jù)統(tǒng)計Table 1 Statistic of datasets
本文實驗中的詞向量有兩種,分別為斯坦福開源的Glove詞向量(https://nlp.stanford.edu/projects/glove/)和BERT預訓練得到的詞向量,其中Glove每個詞向量維度為300維,詞典大小為1.9 MB。BERT預訓練詞向量為768維。其他參數(shù)如表2所示。
表2 模型參數(shù)設置Table 2 Parameter settings
本文選取了基于方面類別任務的5種基準模型在相同的數(shù)據(jù)集上進行對比實驗。
(1)Bi-LSTM:即雙向循環(huán)神經(jīng)網(wǎng)絡,不考慮方面詞信息,直接將前后兩個隱藏向量拼接后作為句子表示,輸入到softmax分類器中。
(2)Bi-GRU:將Bi-LSTM中的LSTM單元換成了GRU。
(3)AT-LSTM:由Wang等[15]提出,首先通過LSTM對文本上下文建模,然后將隱藏向量和方面詞向量連接后輸入到注意力網(wǎng)絡中,再由注意力向量輸入到softmax中進行分類。
(4)ATAE-LSTM[15]:在AT-LSTM基礎(chǔ)之上將方面詞向量和上下文詞向量拼接后作為模型的輸入,進一步加強方面詞和上下文的交互。
(5)AF-LSTM[16]:相對于ATAE-LSTM模型,最大的不同就是增加了一個word-aspect融合層,代替了原來的直接拼接的操作。
(6)BG-DATT-CNN:本文模型。
本文采用準確率(Accuracy)作為模型分類性能的評估標準,對比實驗結(jié)果如表3所示。
表3 不同模型準確率對比Table 3 Accuracy of different models
由表3可知,本文提出的BG-DATT-CNN模型在和幾個基準模型的對比實驗中取得了最好的分類效果,基于Glove詞向量的BG-DATT-CNN分類準確率達到了77.69%,相比AF-LSTM提升了2.50個百分點,從而驗證了模型的有效性。而基于BERT預訓練詞向量的BGDATT-CNN準確率達到了78.24%,比基于Glove詞向量的BG-DATT-CNN準確率提升了0.55個百分點。這說明了BERT預訓練詞向量比Glove詞向量質(zhì)量更高,包含了更多的語義信息。
將Bi-LSTM和Bi-GRU對比可知,Bi-GRU的效果略優(yōu)于Bi-LSTM。并且前者的結(jié)構(gòu)更簡單,訓練速度更快。這也是本文模型選擇Bi-GRU提取全局特征的原因。
Bi-LSTM和Bi-GRU由于沒有考慮到方面詞信息,僅僅對上下文建模,因此效果相對較差。AT-LSTM改進了這一點,將LSTM的隱藏向量和方面詞向量連接后再利用注意力機制對重要程度不同的單詞賦予不同的權(quán)重,使得準確率有了較大的提升。這也說明了注意力機制的重要作用,即能使模型在訓練過程中高度關(guān)注部分信息,忽略不相關(guān)的信息。
ATAE-LSTM在AT-LSTM基礎(chǔ)上進一步融合了方面信息,將方面詞向量和上下文向量連接后作為模型的輸入,使得效果更優(yōu)。然而簡單拼接并不是一種很好的融合方式,ATAE-LSTM不能使注意力機制專注于對上下文單詞之間的關(guān)系或方面詞和上下文的關(guān)系進行建模,并且增加了參數(shù)成本。AF-LSTM摒棄了直接拼接的方式,設計了方面詞-上下文融合層,改進了融合方式,使得準確率提高了1.74個百分點。
以上基于注意力機制的模型都只采用了一種注意力機制,BG-DATT-CNN采用了雙重注意力機制,能夠提取到更加豐富的特征,并且結(jié)合了Bi-GRU和CNN各自的優(yōu)勢,因此取得了最高的分類準確率。
3.4.1 不同注意力機制作用分析
BG-DATT-CNN模型采用了內(nèi)外兩種注意力機制對上下文和方面詞建模,為了更深入地探究不同注意力機制對模型的影響,本文設計了多組對比實驗進行分析。實驗模型如下:
(1)BG-CNN。不使用任何注意力機制,將Bi-GRU層得到的隱藏向量直接輸入到CNN層進行特征提取。
(2)BG-IATT-CNN。僅使用內(nèi)部注意力機制,其他部分與BG-DATT-CNN相同。
(3)BG-EATT-CNN。僅使用外部注意力機制,其他部分與BG-DATT-CNN相同。
(4)BG-DATT-CNN。本文模型。
表4為上述4種模型在SemEval 2014的Restaurant數(shù)據(jù)集上的實驗結(jié)果,詞向量均使用Glove。
表4 不同模型準確率對比Table 4 Accuracy of different models
由表4可得,在不使用注意力機制的情況下,BG-CNN的準確率僅為74.21%。BG-IATT-CNN在BG-CNN的基礎(chǔ)上加上了內(nèi)部注意力,能夠使模型訓練時更加專注于上下文重要信息,使得準確率提升了0.81個百分點。BGEATT-CNN在BG-CNN的基礎(chǔ)上加上了外部注意力,能夠使模型訓練時更加專注于與方面詞相關(guān)信息,使得準確率提升2.07個百分點。BG-DATT-CNN將兩種注意力結(jié)合,取得了最好的效果。
將BG-IATT-CNN和BG-EATT-CNN對比可以發(fā)現(xiàn),外部注意力機制的效果明顯好于內(nèi)部注意力機制。這說明了在ALSA任務中,方面詞信息對于最終分類結(jié)果有著更加重要的作用。
3.4.2 K值分析
本文模型在CNN層采用了兩階段特征提取的方式,先利用K-Max池化層將前K個權(quán)重較大的向量提取出來,再輸入到TextCNN中進行下一步處理。因此K的取值尤為重要。為了得到最佳K值,本文進行了多次實驗,繪制了準確率隨著K值變化的曲線,如圖3所示。
圖3 準確率隨著K值的變化曲線Fig.3 Curve of accuracy with K changing
從整體上看,模型分類準確率隨著K值的增加而上升,說明了K-Max池化層起到了一定的作用。當K=8時,準確率達到最高,之后呈緩慢下降的趨勢。因此本文KMax池化層的K值設為8。
3.4.3 分類結(jié)果分析
為了分析方面詞對分類結(jié)果的影響,本文統(tǒng)計了不同方面的分類準確率,如圖4所示。
由圖4可知,除了“Anecdotes”這一方面外,其他方
圖4 不同方面的分類準確率Fig.4 Classification accuracy of different aspects
面的分類準確率均在80%以上。其中,“Price”方面的準確率最高,達到了83.33%。并且雖然各個方面的數(shù)據(jù)總量不一,但對分類結(jié)果并無明顯影響。至于“Anecdotes”方面的分類準確率遠遠低于其他方面,一個最主要的原因即為方面詞的概括性較差。例如“The food was just ok but I would never go back”這句評論,對于“Food”,句子表現(xiàn)為正面的情感;對于“Anecdotes”,句子表現(xiàn)為負面的情感。顯然,“I would never go back”這種表述方式不夠直接,“Anecdotes”并不能很好地概括這一方面,因此容易導致模型分類錯誤。同時,這也印證了方面詞信息的重要性。方面詞與句子的相關(guān)性越高,概括性越好,越有利于模型融入重要的信息,從而做出正確的判斷。
為了分析模型對于不同情感傾向的句子的分類效果,本文繪制了模型在“positive”“neutral”“negative”三種情感傾向下的分類準確率,如圖5所示。
圖5 模型在三種情感傾向下的分類準確率Fig.5 Classification accuracy of model towards three sentiment polarities
由圖5可知,模型在正向評論數(shù)據(jù)上準確率最高,為84.26%,負面評論數(shù)據(jù)上準確率次之,中立評論數(shù)據(jù)上準確率最低,只有52.71%。這一方面與數(shù)據(jù)量大小有一定關(guān)系,因為正向評論數(shù)據(jù)量遠遠高于其他兩類。另一方面,正向和負向情感的評論一般都有明確的情感詞,而中立評論的情感傾向表現(xiàn)得較為模棱兩可,給模型判斷增加了很大的難度。這也是后續(xù)工作需要解決的一個問題。
本文根據(jù)方面級情感分析任務的特點,設計了一種新的模型。首先本文采用了基于Transformer結(jié)構(gòu)的BERT模型獲得句子和方面詞的向量表示。為了更加充分地提取上下文特征和方面詞相關(guān)特征,本文采用了基于綜合權(quán)重的雙重注意力機制,并設計了BG-DATTCNN混合網(wǎng)絡提取特征。實驗表明,模型具有良好的分類性能。然而,由于公開的數(shù)據(jù)集較小易造成過擬合,且存在個別方面詞概括性較差的情況,導致分類準確率依然不高。在后續(xù)的工作中本文將考慮通過引入語言學知識等方式進一步提升模型效果。