馮浩甲,李 旸,王素格,2,符玉杰,慕永利
(1.山西大學 計算機與信息技術學院,山西 太原 030006;2.山西大學 計算機智能與中文信息處理教育部重點實驗室,山西 太原 030006;3.山西財經大學 金融學院, 山西 太原 030006)
隨著社交網絡的飛速發展,越來越多的人們在微博、Facebook、淘寶等平臺發布帶有主觀情緒傾向的文本信息,如何對這些帶有主觀情緒傾向的網絡文本進行處理,需要情感分析技術的支持。與大多數研究者僅關注于情緒識別和分類問題的研究不同,Lee等[1]首次提出了情緒原因抽取(ECE)任務,其目的是抽取情緒相對應的原因,并將其定義為字級別的序列標注問題。之后,Gui等[2]發布了中英文開放語料庫,并且將ECE任務定義為子句級別。目前,該語料庫已受到研究者的廣泛關注,并成為ECE任務的基準數據集。然而,對于ECE任務,需要首先標注子句的情緒,從而限制了ECE任務的實際應用,另一方面,再對情緒進行標注時,并沒有考慮情緒與原因之間的相互聯系。因此,Xia等[3]提出了情緒原因對抽取(ECPE)任務,其目標是抽取文檔中潛在的情緒子句及其對應的原因子句。例如,表1給出一個情緒原因對抽取的示例。

表1 情緒原因對抽取示例
表1中包括了文檔的四個子句,其中,子句c3為情緒子句,包含情感詞“感動”,與之對應的原因子句為c2,情緒原因對抽取任務是直接獲得
為了抽取情緒原因對,Xia等[4]提出的ECPE-2D模型以矩陣形式表示候選情緒原因對,并在此矩陣上進行交互和預測。Fan等[5]將該抽取任務看作基于動作轉移的有向圖構建過程,根據模型生成的帶有標簽的邊,同時抽取情緒子句和原因子句。Chen等[6]提出的IE-CNN模型將情緒標簽和因果標簽組合,把情緒原因對視為序列標注問題。現有的這些模型雖然使用深度學習方法從不同的角度抽取情緒原因對,但是情緒子句和原因子句是相互聯系的[3],情感詞在情緒子句編碼時可以豐富其情感信息,進而促進情緒子句和原因子句的抽取性能。因此,本文在情緒原因對抽取建模時引入情感詞典,提出了一個使用情感詞典、圖網絡和多頭注意力(Sen-BiGAT-Inter)的情緒原因對抽取方法。該方法利用BERT[7]建立了一個融合情感詞匯信息的子句詞向量表示方法,再利用兩個圖注意力網絡分別學習情緒子句間的關系以及原因子句間的關系,在此基礎上,利用多頭注意力機制建模候選句對間的關系,進而得到具有因果關系的情緒原因對。實驗結果顯示,Sen-BiGAT-Inter模型達到當前最好的性能。本文主要貢獻概括如下:
(1) 將情感詞匯信息引入到子句的表示中,使句子在編碼時包含豐富的情感信息和上下文語義信息。
(2) 建立兩個圖注意力網絡,用于學習情緒子句和原因子句表示,以獲取候選情緒原因對的表示。應用多頭注意力機制,使情緒子句與原因子句對間進行有效交互,從而學習候選情緒原因對的全局信息。
(3) 提出的Sen-BiGAT-Inter模型,在中文情緒原因對數據集上進行實驗,取得了情緒原因對抽取目前最好的性能。
目前,情感原因抽取方法主要包括基于規則、統計機器學習以及深度學習。Lee等[1]構建了情感原因抽取的人工規則集,并標注了情感原因抽取語料庫,在此工作上,針對新聞文本,使用一種語言學規則驅動的方法[8],抽取情緒表達及其對應的原因。Gui等[9]將規則集的匹配結果作為部分特征,加上其他語言學特征,使用多核SVM 對情感原因子句進行分類,取得了不錯效果。此類方法存在的問題是需要人工構造大量的規則集,然而,規則的建立、特征的提取和篩選需要經驗指導,且制定的規則并不能完全覆蓋所有的語言現象,同時該方法還缺乏對上下文語義信息的建模。Gui等[10]將深度學習方法引入情感原因抽取問題,提出了一種新的基于卷積操作的深度記憶網絡,通過使用深度神經網絡學習詞語向量化表示。Chen等[11]提出了一種基于神經網絡的情感分類和情感原因抽取聯合方法,試圖捕獲兩個子任務的相互影響。Fan等[12]提出了一種基于層次神經網絡模型和基于知識正則化的方法提取情感原因,其目的是在融合語境信息的基礎上,利用情感詞匯和常識來約束參數。Li等[13]提出了一種基于上下文感知的多視角注意力模型,此模型將基于上下文的句子表示和基于情感詞的句子表示進行整合,獲得最終子句的分類。對于原因子句與非原因子句數量不平衡問題,慕等[14]提出了一種集成的卷積神經模型,利用多個卷積神經網絡集成降低了數據不平衡對情緒原因識別的影響。Xia等[15]提出了一種聯合情感原因提取框架 RTHN,該框架由RNN編碼每個子句,再采用Transformer編碼學習文檔中多個子句之間的相關性,并將相對位置和全局預測信息編碼到模型中,以捕獲子句之間的因果關系,提升情緒原因識別的性能。Li等[16]采用雙向長短時記憶對子句進行編碼,使其包含單詞的上下文信息,在此基礎上,設計一個注意力機制,捕捉情緒子句與每個候選子句之間的相互關系,從而分別生成上述兩個子句的表示。
對于情緒原因對抽取任務,Xia等[3]利用管道方式ECPE-2Steps,提取文檔中潛在的情緒子句和對應的原因子句。為了克服管道模型的缺點,Xia等[4]又提出了ECPE-2D模型,將表示、交互以及預測融合在一個統一的模型中,從而對情緒原因對進行抽取。Fan等[5]將情緒原因對抽取看作基于轉移的有向圖構建過程,以此來解決ECPE-2Steps模型管道錯誤傳播問題。Wei等[17]針對ECPE-2Steps模型的不足,提出了RANKCP方法,將圖注意網絡引入情緒原因對抽取任務中,取得了不錯的性能。Yuan等[18]將情感原因對抽取視為一個序列標記問題,提出了一種新的標記方案,同時提取情緒子句和相應的原因子句。由于端到端的模型是從左到右處理輸入文本的,因此,提高了處理速度。Tang等[19]利用多層次注意力機制解決情緒原因對抽取。Chen等[6]將因果關系的情緒標簽引入模型中,構造一個統一的標簽集,并提出IE-CNN方法,將情緒原因對視為序列標注問題。Ding等[20]通過滑動窗口的多標簽學習來解決情緒原因對抽取。但這些方法均沒有將情感作為重要信息引入情緒原因對抽取的表示中。

情緒原因對抽取任務旨在從文檔D中抽取一系列具有因果關系的情緒原因對。為了更好地運用情感詞匯信息,需要先對輸入句子進行預處理,即對輸入句子進行分詞,并將得到的詞匯在情感詞典中檢索,若某個詞匯在情感詞典中,便將該詞加到相應子句的末尾,否則該子句不做任何處理。考慮到圖注意力模型中句子表示是由其鄰居聚集信息產生的,如果文檔中的一個情緒子句包含多個原因子句,那么該情緒子句一旦由其鄰居節點表示,情緒子句的情緒原因信息將丟失,因此,本文采用兩個圖注意力層對情緒子句和原因子句分別進行表示。為了進一步獲得較好的子句表示,本文將情緒子句和抽取原因子句的抽取任務作為輔任務,并將情緒子句的交叉熵損失、原因子句的交叉熵損失與最終情緒原因對交叉熵損失相加,作為模型的最終損失。
本文模型的總體框架包含四個部分: 編碼層;圖注意力層;交互層;預測層。以表1中呈現的四個子句為例,總體模型框架如圖1所示。

圖1 總體模型框架


圖2 編碼層模型架構

2.2.1 圖注意力

(1)

其中,[,;,]是拼接操作。
通過堆疊T層圖注意力層建模句間關系,得到最后一層圖注意力的輸出子句表示,記為hT=(h1,h2,…,hn)T∈Rn×d。
2.2.2 情緒子句表示

(4)
2.2.3 原因子句表示

(5)
為了準確定位情緒原因子句的位置,本文對數據進行情緒原因對相對位置統計,統計結果如表2所示。

表2 情緒原因對相對位置統計表
從表2可知,原因子句一般分布在情緒子句的周圍,因此,相對位置是非常重要的信息。
為了高效和準確地抽取情緒原因對,本文僅考慮候選情緒原因對。選擇滿足式(6)條件的情緒原因對為候選項,對于候選情緒原因句對,其表示直接由子句ci及其限定范圍內相鄰的子句cj相對應的隱層向量拼接得到。
(6)
將所有候選情緒原因對表示組成大矩陣H,如式(7)所示。
H=[H1,H2,…,Hn]∈Rt×2d
(7)
其中,t是所有滿足式(6)的候選情緒原因對數目。
為了充分獲取子句對的全局信息,該文在H上使用多頭注意力機制,如式(8)所示。
(8)

(9)
其中,Nh表示注意力頭的數量,dk為多頭注意力隱層向量維度。

(10)
其中,Wp和bp是學習的參數。
采用Sigmoid函數對最終的情緒原因對進行預測,如式(11)所示。
(11)
情緒原因對損失函數定義如式(12)所示。

(12)
類似地,輔任務情緒子句和原因子句的損失函數分別定義為Lemo和Lcau。
整個模型的最終損失由情緒原因對、情緒子句和原因子句三個損失之和確定,如式(13)所示。
L=Lpair+Lemo+Lcau
(13)
本文采用Xia等[3]發布的中文情緒原因發現數據集,此數據集是基于Gui等[2]發布的中文情緒原因語料庫構建的,共收集1 945個文檔,每篇文檔平均含有子句數目為14.77句,所有文檔中最多含有73個子句。具體統計信息如表3所示。

表3 中文情感原因發現數據集總體統計
本文采用精確率P、召回率R和F1值作為評價指標。
本文采用三個情感詞典(大連理工大學情感詞匯本體、臺灣NTUSD和清華大學李軍中文褒貶義詞典)的交集作為本文的情感詞典。利用BERT-Base-Chinese初始化字向量,隱向量維度為768;采用早停機制,設置學習率在訓練步數的前10%為線性增加,隨后線性遞減;相對位置向量的維度設置為50;圖注意力層數設置為2;注意力多頭設置為4,隱層向量維度設置為192;訓練數據的批次大小(batch size)為2;訓練時,采用AdamW優化器。選用文獻[3]的訓練集和測試集,并重復實驗10次,取P、R和F1三個評價指標的平均值作為最終的實驗結果。
為了驗證本文提出的方法的有效性,將其與8個基準方法進行比較,具體如下:
ECPE-2Steps[3]: 該方法是由 Xia等[3]在2019年提出的。首先獲得情緒子句集和原因子句集,再采用笛卡爾積得到可能的情緒原因對,最后利用過濾器得到最終的情緒原因對。
ECPE-2D[4]: 該框架包括Inter-EC(BERT)、Inter-EC(BERT)+WC和Inter-EC(BERT)+CR。其中,Inter-EC(BERT)使用BERT模型進行編碼。Inter-EC(BERT)+WC和Inter-EC(BERT)+CR是在Inter-EC(BERT)的基礎上,分別在交互層加入窗口受限和十字路口。
Transition-based[5]: 該方法將情緒原因對抽取看作基于轉移的有向圖構建過程。
RANKCP(BERT)[17]: 該方法將圖注意網絡引入情緒原因對抽取任務中。
LAE-Joint-MANN-BERT[19]: 該方法采用BERT為編碼器以及多層次注意力機制。
IE-CNN[6]: 該方法以序列標注方式抽取情緒原因對。
ECPE-MLL(BERT)[20]: 該方法引入多標簽聯合學習。
各種模型在中文情緒原因對抽取主任務和兩個輔任務的性能如表4所示。

表4 情緒原因對抽取方法總體性能比較
從表4中的結果可以看出:
(1) 本文提出的Sen-BiGAT-Inter模型在情緒原因對抽取、情緒子句抽取和原因子句抽取任務的F1值,均達到了目前最優,證明了本文提出方法的有效性。
對于情緒子句抽取任務,與ECPE-MLL (BERT)相比較,Sen-BiGAT-Inter模型的R值低1.59%,這是由于情感詞典規模具有局限性,不能檢索到子句中所有的情感詞,但是Sen-BiGAT-Inter模型的P值高出4.94%,說明利用情感詞典豐富了情緒信息,提高了精確率。另外,ECPE-MLL(BERT)在情緒子句抽取任務的P值與R值相差較大,說明該方法抽取的情緒子句較多,提高了召回率。而Sen-BiGAT-Inter模型在情緒子句抽取任務中的P值和R值比較相近,證明了情感詞典的有效性。
(2) 由于本文的Sen-BiGAT-Inter模型是對RANKCP模型的改進,以下將其與RANKCP的結果進行比較分析。
在情緒原因對抽取任務上,本文提出的Sen-BiGAT-Inter模型與RANKCP模型相比,在F1值、P值和R值上分別提升了2.87%、4.18%和1.48%,說明情感詞、兩個圖注意力網絡和基于相對位置信息多頭注意力的引入,使得各個部分相得益彰,對情緒原因的抽取具有促進作用,也證明了Sen-BiGAT-Inter模型的有效性。
在情緒子句抽取任務上,本文提出的Sen-BiGAT-Inter模型與RANKCP模型相比,在P值指標上略微有些下降,但在R值指標上有所提高,說明加入情感詞匯使得模型提升了對情緒子句的抽取,對情緒原因對抽取有促進作用。
在原因子句抽取任務上,本文提出的Sen-BiGAT-Inter模型與RANKCP模型相比,在F1值、P值和R值指標上分別提升了2.68%、3.99%和1.34%,達到當前最優結果。這說明情緒子句和原因子句是相互影響的,受原因子句召回率提高的影響,原因子句抽取性能也隨之得到提升。
為了評估本文提出的模型中各部分的有效性,對模型進行了消融實驗。
Sen-Inter: 在Sen-BiGAT-Inter模型的基礎上,不再選擇兩個圖注意力的網絡分別進行情感子句表示和原因子句表示,而是簡單使用單個圖注意力網絡。
Sen-BiGAT: 在Sen-BiGAT-Inter模型的基礎上去除基于先驗知識的交互層。
BiGAT-Inter: 在Sen-BiGAT-Inter模型的基礎上去除情感詞典。
Sen-BiGAT-Pos: 在Sen-BiGAT-Inter模型的基礎上去除相對位置信息。
四種方法與Sen-BiGAT-Inter模型比較結果如表5所示。

表5 情緒原因對抽取方法消融實驗對比
從表5可以得出,去除任一模塊,情緒原因對抽取任務的三個評價指標都有所下降,尤其在Sen-BiGAT中,與Sen-BiGAT-Inter模型相比,F1值指標直接下降2.72%,證明了在候選原因對抽取任務上使用交互層的有效性與可行性。即使Sen-BiGAT在F1值指標有所下降,但是與RANKCP模型相比,Sen-BiGAT在F1值上有所提高,證明了加入雙表示層和情感詞匯會減弱僅使用單一圖注意力網絡帶來的負面影響,證明加入雙表示層和情感詞匯會對情緒原因對的抽取產生積極影響。
為了獲得較好的情緒原因對抽取性能,使情緒子句表示和原因子句表示達到理想的結果,我們在最終的損失函數中加入了情緒子句和原因子句相對應的交叉熵損失。為了驗證兩個監督任務的有效性,該文又設計了除去這兩個輔任務的損失,使用Sen-BiGAT-Inter-AS來表示,實驗結果如表6所示。

表6 監督損失函數的影響
從表6可以看出,移除監督損失函數后,情緒原因對抽取任務的性能急劇下降,從而證明了監督損失函數是不可缺少的。
不同層數的圖注意力堆疊會影響情緒原因對抽取的性能,因此,該文對不同圖注意力層數進行對比實驗。實驗結果如表7所示。

表7 不同層數圖注意力實驗對比
從表7可以看出,當圖注意力層數為2時,Sen-BiGAT-Inter模型的情緒原因對抽取性能達到了最好,說明隨著堆疊層數的增加,模型參數也相應地增加,進而也影響模型的性能。
將圖注意力層替換為雙向LSTM,相應的表示采用Sen-LSTM-Inter;由相對距離信息構造的局部圖替代全連接構建的完全圖,相應的表示采用Sen-LocBiGAT-Inter。將這兩種表示與Sen-BiGAT-Inter進行對比,實驗結果如表8所示。

表8 圖注意力與LSTM實驗對比
從表8可以得出,使用Sen-LocBiGAT-Inter和Sen-BiGAT-Inter建模子句的抽取性能都超過使用LSTM建模子句,其原因是圖注意力網絡具有較強的編碼能力,并且可以為不同的節點動態地分配不同的權重。與Sen-BiGAT-Inter模型的F1指標相比,Sen-LocBiGAT-Inter下降了0.89%,證明了Sen-LocBiGAT-Inter構造局部圖,雖能提升運行速度,但是未能利用全局信息,導致抽取原因對抽取性能下降。
本文選用Snownlp、Thulac以及Jieba三種分詞工具進行對比實驗,實驗結果如表9所示。

表9 不同分詞工具實驗對比
從表9可以得出,不同分詞工具影響情緒原因對抽取的性能,但都優于去除情感詞典的BiGAT-Inter模型的性能。
3.10.1 Sen-BiGAT-Inter與RANKCP方法比較
通過Sen-BiGAT-Inter與RANKCP方法在第3.5節對比實驗結果發現,Sen-BiGAT-Inter可以準確抽取RANKCP未能抽取的樣例,樣例如表10所示。

表10 情緒原因對抽取示例表
如表10所示,子句c6由于包含了情感詞“幸福”,故為情緒子句,c5為與情緒子句c6相對應的原因子句。RANKCP將最終的情緒原因對錯誤地預測為

圖3 情緒子句c6特殊字符CLS可視化
從圖3可以得出,模型除了注意到區分子句劃分的特殊字符,使得模型更加關注“幸福”,并將“幸福”所在的子句c6預測為情緒子句,從而促進預測情緒原因對
3.10.2 錯誤樣例分析
通過對Sen-BiGAT-Inter模型獲得情緒原因對抽取數據分析,發現如表11所示的錯誤案例。

表11 情緒原因對抽取示例表
由表11所示,子句c3和子句c5既是情緒子句又是原因子句,說明模型在進行情緒原因對抽取時,未考慮情緒子句與原因子句之間是否保持語義一致性,即未能顯式地保證情緒原因子句之間真正具有因果關系,導致情緒原因對抽取錯誤,其結果為
本文提出了一種Sen-BiGAT-Inter的情緒原因對抽取方法,該方法利用情感詞與該子句進行合并,再使用預訓練模型BERT獲取句子的表示,提升了情緒子句的抽取性能。通過建立兩個圖注意力網絡分別學習情緒子句和原因子句表示,繼而提升了候選情緒原因對的抽取性能。通過應用多頭注意力機制學習候選情緒原因句對的全局信息,同時結合相對位置信息得到候選情緒原因句對的表示,最終提升情緒原因對抽取的性能。通過進一步對錯誤數據進行分析發現,當一篇文檔中真實標簽有多個不同情緒子句的情緒原因對時,本文僅單純地提取出情緒原因對,并沒有考慮到情緒子句與原因子句之間的語義一致性,后續的工作中,我們將針對這一問題開展研究。