魏鵬飛,曾 碧,廖文雄
廣東工業大學 計算機學院,廣州 510000
基于文本的情感挖掘是近10年來備受關注的研究領域,其目的是研究如何從文本中獲取用戶對各種人或事物的意見傾向[1]。其中,面向社交媒體的諷刺檢測是情感挖掘的一個重要分支和研究方向,主要研究如何采用自動化的技術,從社交媒體產生的數據中正確的識別講話者的預期情感和信念。這項任務通常被看作是一項二分類任務(sarcasm vs.non-sarcasm),要么預測孤立的話語,要么預測添加了語境信息(會話語境、作者語境、視覺語境或認知特征)[2-5]的話語。本文重點研究帶有會話語境信息的話語文本的諷刺檢測任務。一般來說,如果不考慮語境,很難判斷孤立話語的情感極性,如例1所示。
例1 A common thread exists though.Those attacking Glenn Greenwald all supported the regime-change Queen,Hillary Clinton.(盡管存在一個共同的主線。那些攻擊格倫·格林沃爾德的人都支持政權更迭女王,希拉里·克林頓。)
例1 是來自于Twitter 平臺的樣本數據。意思是一部分人攻擊了格倫·格林沃爾德,這些人都支持希拉里·克林頓。這僅僅是一種政治觀點上的表達,有可能講話者是對他人政治觀點上的一種諷刺和否定。但是,從字面上人們無法判斷其具有諷刺意味。因此,諷刺表達不一定復雜,但是需要在全面理解上下文以及常識知識的情況下進行判定,而不僅僅從字面上去理解,如例2所示。
例2 {“context”:[“TIL The saying ”breakfast is the most important meal of the day“ was originally coined in 1944 by a marketing campaign from General Foods,the manufacturer of Grape Nuts,to sell more cereal.”,“Fascinating to think a commercial product propaganda brainwashing campaign convinced an entire society the importance of a certain meal,for decades!”],“response”:“Yeah and all those nutritionists and doctors were in on it too!”}({“context”:[“早餐是一天中最重要的一頓”這句話最初是在1944 年由葡萄堅果制造商通用食品公司(General Foods)為銷售更多谷類食品而創造的一項營銷活動。”,“幾十年來,一場商業產品宣傳洗腦活動使得整個社會相信了其重要性。”],“response”:“是的,所有的營養師和醫生都參與了!”})
例2 是互聯網社交平臺Reddit 的一段對話數據。其中,“context”是上下文語境信息,“response”是人們要對其進行諷刺檢測的目標話語。單純從目標話語“營養師和醫生都參與了”來看,表達了比較積極的情感,但是,聯合上下文語境去理解,實際上是對這種營銷活動的一種消極/諷刺情感的表達。所以,如果不了解說話者的上下文語境信息,人們便無法準確地預測說話者的意圖。因此,上下文的語境信息對于諷刺檢測任務是很有必要的[6]。
為了更好地建模這種帶有會話上下文的話語,本文提出了一種接收多輸入的網絡模型架構。首先,本文將上下文和目標文本分別輸入到具有多頭注意力機制的RoBERTa中提取句子特征;然后,通過AOA注意力機制學習兩者之間的關注信息;最后,將得到的關注信息與句子特征進行級聯,進行二分類結果預測。本文的主要貢獻有以下幾點:
(1)提出了一個基于RoBERTa 的社交媒體會話中的諷刺檢測模型。
(2)采用AOA 注意力機制來學習上下文特征與目標特征之間的相關性。
(3)通過實驗比較分析了模型各組件對分類精度的影響,有效地解釋了此模型的有效性。
(4)在Twitter 和Reddit 這兩個數據集上分別做了實驗,實驗結果解釋了會話上下文的數量對諷刺檢測的影響。
早期研究中,許多工作單獨考慮目標話語。傳統方法中較多采用SVM[7-8]進行諷刺預測,弊端就是依賴于人工提取特征。隨著深度學習的發展,特征提取也可以完全由神經網絡完成。因此,許多研究人員將神經網絡引入諷刺檢測任務中,并取得了比傳統的方法更好的結果。文獻[9]使用基于預訓練的卷積神經網絡(CNN)來提取情緒、情感和人格等特征以進行諷刺檢測。文獻[10]采用卷積神經網絡、長短時記憶網絡(LSTM)和深度神經網絡(DNN)的混合模型有效的提升了分類精度。文獻[11]使用注意力機制(attention mechanism)對文本進行特征提取。
單純的只在目標話語上進行建模的研究,往往預測起來更加困難。最近,越來越多的研究人員開始探索會話上下文在諷刺檢測中的作用。文獻[12]采用雙向門控神經網絡(BiGRU)來捕獲語法和語義信息,并使用池化操作從歷史推文中自動提取上下文特征,實驗結果表明,此模型實現了當時最好的結果。文獻[13]使用預訓練BERT[14]對上下文和目標文本進行特征提取。
受文獻[3,14-15]啟發,本文提出了一種將RoBERTa與AOA注意力機制結合的模型用于社交媒體會話中的諷刺檢測任務。有關諷刺檢測任務更多的研究,可以閱讀文獻[16-17]。
本文使用的數據集來自于ACL2020(Second Workshop on Figurative Language Processing:https://competitions.codalab.org/competitions/22247)諷刺任務的比賽所提供的兩大社交媒體平臺Twitter 和Reddit 的數據。Twitter 數據集通過使用標簽#sarcasm 和#sarcastic獲取。Reddit數據集是self-annotated reddit語料庫[18]的子集,該語料庫包含130萬個諷刺和非諷刺的帖子。表1 中是Reddit 數據集的一個諷刺樣本,每個樣本都是一段完整的對話的帖子,其中Ci是上下文中的第i句話語,T是要預測為諷刺或非諷刺的目標話語。具體來說,C2是對C1的回復,T是對C2的回復。Twitter數據集與表1類似。

表1 Reddit數據集的諷刺樣本Table 1 Sarcasm example from Reddit
表2和表3顯示了兩個數據集詳細的統計信息。訓練集和測試集上兩者相差不大,每段對話的話語數和話語的平均長度都給出了標準差信息,其中,Twitter 數據集中話語的平均長度比Reddit 數據集更長。對于Reddit 數據集而言,測試集中的話語數和話語的平均長度明顯大于訓練集,這可能會使模型的開發更具挑戰性。

表2 Twitter數據集統計Table 2 Twitter dataset statistics

表3 Reddit數據集統計Table 3 Reddit dataset statistics



圖1 基于RoBERTa的諷刺檢測模型Fig.1 RoBERTa-based sarcasm detection model

文獻[21]提出了一種一維卷積神經網絡應用于句子分類的工作,并且在實驗結果上獲得了不錯的效果。如圖2 所示,本文也使用這種1D-CNN 的網絡結構,提取序列中多類型的局部特征,同時也可以實現一定的降維能力。

圖2 一維卷積層和全局平均池化層Fig.2 1D-CNN layer and global average pooling layer



其中,uˉc∈?k和uˉr∈?k分別為context和response經過池化后的輸出向量。
為了更好地學習context 和response 之間的相關信息,本文引入了attention-over-attention(AOA)[22]模塊。如圖3所示,給定context的表示uc∈?()m+2×k和response表示ur∈?()n+2×k,首先計算一個交互矩陣I=ur?ucT,其中的每行或每列代表著context 和response 之間詞對的相關性。然后,對行或列分別采用softmax 歸一化處理,得到response相對context的注意力矩陣β和context相對response的注意力矩陣α。對β按列求平均,得到context-level的注意力表示βˉ∈?m+2,并與α做點乘,得到response-level 的注意力表示γ∈?n+2。具體的公式如下:


圖3 AOA融合層Fig.3 AOA fusion layer

模型采用有監督的訓練方式,損失函數采用交叉熵,同時使用L2正則和dropout防止過擬合:


在本文的實驗中,代碼編寫采用Google 的Tensor-Flow(https://tensorflow.google.cn/)深度學習框架,版本2.3.0,語言為Python。實驗環境采用了Google Colab提供的TPU。本文采用十折交叉驗證進行模型選擇,實驗中超參數的設置和調整是根據實驗的精度和損失手動調整的。通過廣泛的超參數調優,實驗的超參數如表4表示。

表4 實驗參數Table 4 Experimental parameters
本文提出的模型與以下基準模型進行比較。
(1)LSTM_attn:文獻[23]提出了一種具有層次結構注意力的雙重LSTM架構,其中一個LSTM建模對話上下文,另一個LSTM建模目標文本。
(2)BERT:文獻[24]使用BERT編碼句子信息,擴展了基于方面的情感分析方法,僅使用會話上下文中最后一句文本和目標文本作為輸入。
(3)BERT+CNN+LSTM:文獻[25]使用BERT 分別編碼會話上下文和目標文本,然后將編碼后的上下文信息經過CNN[28]和LSTM[29]層獲取上下文句子語義信息,最后將上下文語義信息和目標文本語義信息輸入到卷積層和全連接層構成最后的分類器。
(4)RoBERTa-Large:文獻[26]將上下文和目標文本通過一個顯式分隔符連接成一個句子作為輸入,使用RoBERTa-Large微調模型預測結果。
(5)RoBERTa-Large+LSTM:文獻[27]提出了一種雙Transformer的模型架構,將獲得的上下文和目標文本的表示,通過雙向LSTM(BiLSTM)編碼語義信息,最后使用softmax進行分類。

表5 Twitter數據集上的實驗結果Table 5 Experimental results on Twitter dataset

表6 Reddit數據集上的實驗結果Table 6 Experimental results on Reddit dataset
在Twitter數據集上,基于遷移學習BERT和RoBERTa的模型效果有了大幅提升。BERT 采用BPE 的分詞方法,可以解決一定的OOV問題,并且在大規模語料庫上訓練得到,在大多任務上泛化性能較好。RoBERTa 是BERT 的改進版,同屬于Transformer 架構,預訓練時采用更大規模的語料和更長的訓練時間。在特征提取上有較大優勢。RoBERTa-Large[26]模型比BERT[24]模型在Precision、Recall、F1-score 上分別提升了4.1、4.0、4.1 個百分點。BERT+CNN+LSTM[25]模型和RoBERTa-Large+LSTM[27]模型都加入了LSTM 提取序列語義信息,比未使用LSTM的模型在各指標上也有所提升。而在Reddit數據集上,引入了LSTM 的模型卻在性能上有所下降。BERT+CNN+LSTM 模型[25]比BERT 模型[24]在F1-score下降了9.8 個百分點,RoBERTa-Large+LSTM[27]模型比RoBERTa-Large 模型[26]在F1-score 上下降了2.5 個百分點。另外,BERT模型[24]在Reddit數據集上性能超越了基于RoBERTa 的模型。本文將這些差異歸因于Reddit 數據集中測試集的話語數和句子長度大于訓練集造成的。具體來講,模型是在較短句子的訓練集上訓練得到的,而應用于測試集上較長的句子上時,由于句子被截斷會造成一定的句子信息的丟失,無法更好地建模句子上下文信息,使得模型泛化能力變差,模型的開發更具挑戰性。
相比于表中的其他模型,本文提出的模型取得了更好的結果,特別是在Twitter 數據集上。本文的模型和RoBERTa-Large+LSTM[27]模型類似,都采用多輸入,將context和response分別進行建模,但是本文加入了AOA融合模塊,采用注意力機制捕獲兩者之間的相關語義信息,response 可以關注到重要的上下文context 詞信息,context 也可以關注到相關的response 詞信息,比LSTM能更好地建模單詞級別的語義信息,特征捕獲能力更強,能實現并行計算。實驗結果也表明本文提出的模型比RoBERTa-Large+LSTM[27]在Twitter 數據集、Reddit 數據集上F1-score分別提升了1.7、4.8個百分點。
為了進一步解釋上下文的數量對諷刺檢測的影響,使用了不同的上下文數量在Twitter 數據集和Reddit 數據集上做了一些實驗,實驗結果如圖4 和圖5 所示。可以看到圖中的曲線都是隨著上下文數量的增加,其評價指標隨之上升,然后隨之下降。在Twitter 數據集上,當取context中最后3句話時,F1-score得分最高為0.789,而在Reddit數據集上,取context中最后4句話時,F1-score得分最高為0.739。這表明了上下文的話語數并不是越多越好,同時缺少一定的上下文信息也會對其性能產生影響。將其原因歸結為:(1)response常常是對臨近上下文對話內容的回答,較遠的上下文句子可能與response并不太相關;(2)較多的上下文句子,融入了更多與任務并不相關的信息,使得模型學習更加困難;(3)response僅是對上下文的回復,從而缺乏一定的上下文語境信息,難以預測其是否為諷刺意味。因此,一定數量的上下文話語對諷刺檢測任務更加重要。

圖4 Twitter數據集上的實驗結果Fig.4 Experimental results on Twitter dataset

圖5 Reddit數據集上的實驗結果Fig.5 Experimental results on Reddit dataset
本文提出了一種基于RoBERTa的會話中的諷刺檢測模型,該模型接收多輸入,將上下文文本和目標文本分別編碼得到詞級別的上下文語義信息,然后與AOA融合模塊提取的相關信息級聯后進行諷刺結果的預測。實驗結果表明,本文提出的模型在兩個數據集上都獲得了最好的效果,泛化能力強。
采用AOA 模塊學習到了兩者之間的相關信息,這是一種詞級別的注意力學習方式,是否可以加入句子級別的注意力信息來提高檢測結果。此外,雖然本文提出的模型檢測率較現有模型有所提升,但并未完全實現高水平的檢測率,因此采用何種方法能夠更好地選出模型的最優參數,仍需進一步探索。