魏鵬飛,曾 碧,廖文雄
廣東工業(yè)大學(xué) 計(jì)算機(jī)學(xué)院,廣州 510000
基于文本的情感挖掘是近10年來(lái)備受關(guān)注的研究領(lǐng)域,其目的是研究如何從文本中獲取用戶對(duì)各種人或事物的意見(jiàn)傾向[1]。其中,面向社交媒體的諷刺檢測(cè)是情感挖掘的一個(gè)重要分支和研究方向,主要研究如何采用自動(dòng)化的技術(shù),從社交媒體產(chǎn)生的數(shù)據(jù)中正確的識(shí)別講話者的預(yù)期情感和信念。這項(xiàng)任務(wù)通常被看作是一項(xiàng)二分類任務(wù)(sarcasm vs.non-sarcasm),要么預(yù)測(cè)孤立的話語(yǔ),要么預(yù)測(cè)添加了語(yǔ)境信息(會(huì)話語(yǔ)境、作者語(yǔ)境、視覺(jué)語(yǔ)境或認(rèn)知特征)[2-5]的話語(yǔ)。本文重點(diǎn)研究帶有會(huì)話語(yǔ)境信息的話語(yǔ)文本的諷刺檢測(cè)任務(wù)。一般來(lái)說(shuō),如果不考慮語(yǔ)境,很難判斷孤立話語(yǔ)的情感極性,如例1所示。
例1 A common thread exists though.Those attacking Glenn Greenwald all supported the regime-change Queen,Hillary Clinton.(盡管存在一個(gè)共同的主線。那些攻擊格倫·格林沃爾德的人都支持政權(quán)更迭女王,希拉里·克林頓。)
例1 是來(lái)自于Twitter 平臺(tái)的樣本數(shù)據(jù)。意思是一部分人攻擊了格倫·格林沃爾德,這些人都支持希拉里·克林頓。這僅僅是一種政治觀點(diǎn)上的表達(dá),有可能講話者是對(duì)他人政治觀點(diǎn)上的一種諷刺和否定。但是,從字面上人們無(wú)法判斷其具有諷刺意味。因此,諷刺表達(dá)不一定復(fù)雜,但是需要在全面理解上下文以及常識(shí)知識(shí)的情況下進(jìn)行判定,而不僅僅從字面上去理解,如例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 年由葡萄堅(jiān)果制造商通用食品公司(General Foods)為銷售更多谷類食品而創(chuàng)造的一項(xiàng)營(yíng)銷活動(dòng)?!?,“幾十年來(lái),一場(chǎng)商業(yè)產(chǎn)品宣傳洗腦活動(dòng)使得整個(gè)社會(huì)相信了其重要性。”],“response”:“是的,所有的營(yíng)養(yǎng)師和醫(yī)生都參與了!”})
例2 是互聯(lián)網(wǎng)社交平臺(tái)Reddit 的一段對(duì)話數(shù)據(jù)。其中,“context”是上下文語(yǔ)境信息,“response”是人們要對(duì)其進(jìn)行諷刺檢測(cè)的目標(biāo)話語(yǔ)。單純從目標(biāo)話語(yǔ)“營(yíng)養(yǎng)師和醫(yī)生都參與了”來(lái)看,表達(dá)了比較積極的情感,但是,聯(lián)合上下文語(yǔ)境去理解,實(shí)際上是對(duì)這種營(yíng)銷活動(dòng)的一種消極/諷刺情感的表達(dá)。所以,如果不了解說(shuō)話者的上下文語(yǔ)境信息,人們便無(wú)法準(zhǔn)確地預(yù)測(cè)說(shuō)話者的意圖。因此,上下文的語(yǔ)境信息對(duì)于諷刺檢測(cè)任務(wù)是很有必要的[6]。
為了更好地建模這種帶有會(huì)話上下文的話語(yǔ),本文提出了一種接收多輸入的網(wǎng)絡(luò)模型架構(gòu)。首先,本文將上下文和目標(biāo)文本分別輸入到具有多頭注意力機(jī)制的RoBERTa中提取句子特征;然后,通過(guò)AOA注意力機(jī)制學(xué)習(xí)兩者之間的關(guān)注信息;最后,將得到的關(guān)注信息與句子特征進(jìn)行級(jí)聯(lián),進(jìn)行二分類結(jié)果預(yù)測(cè)。本文的主要貢獻(xiàn)有以下幾點(diǎn):
(1)提出了一個(gè)基于RoBERTa 的社交媒體會(huì)話中的諷刺檢測(cè)模型。
(2)采用AOA 注意力機(jī)制來(lái)學(xué)習(xí)上下文特征與目標(biāo)特征之間的相關(guān)性。
(3)通過(guò)實(shí)驗(yàn)比較分析了模型各組件對(duì)分類精度的影響,有效地解釋了此模型的有效性。
(4)在Twitter 和Reddit 這兩個(gè)數(shù)據(jù)集上分別做了實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果解釋了會(huì)話上下文的數(shù)量對(duì)諷刺檢測(cè)的影響。
早期研究中,許多工作單獨(dú)考慮目標(biāo)話語(yǔ)。傳統(tǒng)方法中較多采用SVM[7-8]進(jìn)行諷刺預(yù)測(cè),弊端就是依賴于人工提取特征。隨著深度學(xué)習(xí)的發(fā)展,特征提取也可以完全由神經(jīng)網(wǎng)絡(luò)完成。因此,許多研究人員將神經(jīng)網(wǎng)絡(luò)引入諷刺檢測(cè)任務(wù)中,并取得了比傳統(tǒng)的方法更好的結(jié)果。文獻(xiàn)[9]使用基于預(yù)訓(xùn)練的卷積神經(jīng)網(wǎng)絡(luò)(CNN)來(lái)提取情緒、情感和人格等特征以進(jìn)行諷刺檢測(cè)。文獻(xiàn)[10]采用卷積神經(jīng)網(wǎng)絡(luò)、長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(LSTM)和深度神經(jīng)網(wǎng)絡(luò)(DNN)的混合模型有效的提升了分類精度。文獻(xiàn)[11]使用注意力機(jī)制(attention mechanism)對(duì)文本進(jìn)行特征提取。
單純的只在目標(biāo)話語(yǔ)上進(jìn)行建模的研究,往往預(yù)測(cè)起來(lái)更加困難。最近,越來(lái)越多的研究人員開(kāi)始探索會(huì)話上下文在諷刺檢測(cè)中的作用。文獻(xiàn)[12]采用雙向門控神經(jīng)網(wǎng)絡(luò)(BiGRU)來(lái)捕獲語(yǔ)法和語(yǔ)義信息,并使用池化操作從歷史推文中自動(dòng)提取上下文特征,實(shí)驗(yàn)結(jié)果表明,此模型實(shí)現(xiàn)了當(dāng)時(shí)最好的結(jié)果。文獻(xiàn)[13]使用預(yù)訓(xùn)練BERT[14]對(duì)上下文和目標(biāo)文本進(jìn)行特征提取。
受文獻(xiàn)[3,14-15]啟發(fā),本文提出了一種將RoBERTa與AOA注意力機(jī)制結(jié)合的模型用于社交媒體會(huì)話中的諷刺檢測(cè)任務(wù)。有關(guān)諷刺檢測(cè)任務(wù)更多的研究,可以閱讀文獻(xiàn)[16-17]。
本文使用的數(shù)據(jù)集來(lái)自于ACL2020(Second Workshop on Figurative Language Processing:https://competitions.codalab.org/competitions/22247)諷刺任務(wù)的比賽所提供的兩大社交媒體平臺(tái)Twitter 和Reddit 的數(shù)據(jù)。Twitter 數(shù)據(jù)集通過(guò)使用標(biāo)簽#sarcasm 和#sarcastic獲取。Reddit數(shù)據(jù)集是self-annotated reddit語(yǔ)料庫(kù)[18]的子集,該語(yǔ)料庫(kù)包含130萬(wàn)個(gè)諷刺和非諷刺的帖子。表1 中是Reddit 數(shù)據(jù)集的一個(gè)諷刺樣本,每個(gè)樣本都是一段完整的對(duì)話的帖子,其中Ci是上下文中的第i句話語(yǔ),T是要預(yù)測(cè)為諷刺或非諷刺的目標(biāo)話語(yǔ)。具體來(lái)說(shuō),C2是對(duì)C1的回復(fù),T是對(duì)C2的回復(fù)。Twitter數(shù)據(jù)集與表1類似。
表1 Reddit數(shù)據(jù)集的諷刺樣本Table 1 Sarcasm example from Reddit
表2和表3顯示了兩個(gè)數(shù)據(jù)集詳細(xì)的統(tǒng)計(jì)信息。訓(xùn)練集和測(cè)試集上兩者相差不大,每段對(duì)話的話語(yǔ)數(shù)和話語(yǔ)的平均長(zhǎng)度都給出了標(biāo)準(zhǔn)差信息,其中,Twitter 數(shù)據(jù)集中話語(yǔ)的平均長(zhǎng)度比Reddit 數(shù)據(jù)集更長(zhǎng)。對(duì)于Reddit 數(shù)據(jù)集而言,測(cè)試集中的話語(yǔ)數(shù)和話語(yǔ)的平均長(zhǎng)度明顯大于訓(xùn)練集,這可能會(huì)使模型的開(kāi)發(fā)更具挑戰(zhàn)性。
表2 Twitter數(shù)據(jù)集統(tǒng)計(jì)Table 2 Twitter dataset statistics
表3 Reddit數(shù)據(jù)集統(tǒng)計(jì)Table 3 Reddit dataset statistics
圖1 基于RoBERTa的諷刺檢測(cè)模型Fig.1 RoBERTa-based sarcasm detection model
文獻(xiàn)[21]提出了一種一維卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用于句子分類的工作,并且在實(shí)驗(yàn)結(jié)果上獲得了不錯(cuò)的效果。如圖2 所示,本文也使用這種1D-CNN 的網(wǎng)絡(luò)結(jié)構(gòu),提取序列中多類型的局部特征,同時(shí)也可以實(shí)現(xiàn)一定的降維能力。
圖2 一維卷積層和全局平均池化層Fig.2 1D-CNN layer and global average pooling layer
其中,uˉc∈?k和uˉr∈?k分別為context和response經(jīng)過(guò)池化后的輸出向量。
為了更好地學(xué)習(xí)context 和response 之間的相關(guān)信息,本文引入了attention-over-attention(AOA)[22]模塊。如圖3所示,給定context的表示uc∈?()m+2×k和response表示ur∈?()n+2×k,首先計(jì)算一個(gè)交互矩陣I=ur?ucT,其中的每行或每列代表著context 和response 之間詞對(duì)的相關(guān)性。然后,對(duì)行或列分別采用softmax 歸一化處理,得到response相對(duì)context的注意力矩陣β和context相對(duì)response的注意力矩陣α。對(duì)β按列求平均,得到context-level的注意力表示βˉ∈?m+2,并與α做點(diǎn)乘,得到response-level 的注意力表示γ∈?n+2。具體的公式如下:
圖3 AOA融合層Fig.3 AOA fusion layer
模型采用有監(jiān)督的訓(xùn)練方式,損失函數(shù)采用交叉熵,同時(shí)使用L2正則和dropout防止過(guò)擬合:
在本文的實(shí)驗(yàn)中,代碼編寫采用Google 的Tensor-Flow(https://tensorflow.google.cn/)深度學(xué)習(xí)框架,版本2.3.0,語(yǔ)言為Python。實(shí)驗(yàn)環(huán)境采用了Google Colab提供的TPU。本文采用十折交叉驗(yàn)證進(jìn)行模型選擇,實(shí)驗(yàn)中超參數(shù)的設(shè)置和調(diào)整是根據(jù)實(shí)驗(yàn)的精度和損失手動(dòng)調(diào)整的。通過(guò)廣泛的超參數(shù)調(diào)優(yōu),實(shí)驗(yàn)的超參數(shù)如表4表示。
表4 實(shí)驗(yàn)參數(shù)Table 4 Experimental parameters
本文提出的模型與以下基準(zhǔn)模型進(jìn)行比較。
(1)LSTM_attn:文獻(xiàn)[23]提出了一種具有層次結(jié)構(gòu)注意力的雙重LSTM架構(gòu),其中一個(gè)LSTM建模對(duì)話上下文,另一個(gè)LSTM建模目標(biāo)文本。
(2)BERT:文獻(xiàn)[24]使用BERT編碼句子信息,擴(kuò)展了基于方面的情感分析方法,僅使用會(huì)話上下文中最后一句文本和目標(biāo)文本作為輸入。
(3)BERT+CNN+LSTM:文獻(xiàn)[25]使用BERT 分別編碼會(huì)話上下文和目標(biāo)文本,然后將編碼后的上下文信息經(jīng)過(guò)CNN[28]和LSTM[29]層獲取上下文句子語(yǔ)義信息,最后將上下文語(yǔ)義信息和目標(biāo)文本語(yǔ)義信息輸入到卷積層和全連接層構(gòu)成最后的分類器。
(4)RoBERTa-Large:文獻(xiàn)[26]將上下文和目標(biāo)文本通過(guò)一個(gè)顯式分隔符連接成一個(gè)句子作為輸入,使用RoBERTa-Large微調(diào)模型預(yù)測(cè)結(jié)果。
(5)RoBERTa-Large+LSTM:文獻(xiàn)[27]提出了一種雙Transformer的模型架構(gòu),將獲得的上下文和目標(biāo)文本的表示,通過(guò)雙向LSTM(BiLSTM)編碼語(yǔ)義信息,最后使用softmax進(jìn)行分類。
表5 Twitter數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果Table 5 Experimental results on Twitter dataset
表6 Reddit數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果Table 6 Experimental results on Reddit dataset
在Twitter數(shù)據(jù)集上,基于遷移學(xué)習(xí)BERT和RoBERTa的模型效果有了大幅提升。BERT 采用BPE 的分詞方法,可以解決一定的OOV問(wèn)題,并且在大規(guī)模語(yǔ)料庫(kù)上訓(xùn)練得到,在大多任務(wù)上泛化性能較好。RoBERTa 是BERT 的改進(jìn)版,同屬于Transformer 架構(gòu),預(yù)訓(xùn)練時(shí)采用更大規(guī)模的語(yǔ)料和更長(zhǎng)的訓(xùn)練時(shí)間。在特征提取上有較大優(yōu)勢(shì)。RoBERTa-Large[26]模型比BERT[24]模型在Precision、Recall、F1-score 上分別提升了4.1、4.0、4.1 個(gè)百分點(diǎn)。BERT+CNN+LSTM[25]模型和RoBERTa-Large+LSTM[27]模型都加入了LSTM 提取序列語(yǔ)義信息,比未使用LSTM的模型在各指標(biāo)上也有所提升。而在Reddit數(shù)據(jù)集上,引入了LSTM 的模型卻在性能上有所下降。BERT+CNN+LSTM 模型[25]比BERT 模型[24]在F1-score下降了9.8 個(gè)百分點(diǎn),RoBERTa-Large+LSTM[27]模型比RoBERTa-Large 模型[26]在F1-score 上下降了2.5 個(gè)百分點(diǎn)。另外,BERT模型[24]在Reddit數(shù)據(jù)集上性能超越了基于RoBERTa 的模型。本文將這些差異歸因于Reddit 數(shù)據(jù)集中測(cè)試集的話語(yǔ)數(shù)和句子長(zhǎng)度大于訓(xùn)練集造成的。具體來(lái)講,模型是在較短句子的訓(xùn)練集上訓(xùn)練得到的,而應(yīng)用于測(cè)試集上較長(zhǎng)的句子上時(shí),由于句子被截?cái)鄷?huì)造成一定的句子信息的丟失,無(wú)法更好地建模句子上下文信息,使得模型泛化能力變差,模型的開(kāi)發(fā)更具挑戰(zhàn)性。
相比于表中的其他模型,本文提出的模型取得了更好的結(jié)果,特別是在Twitter 數(shù)據(jù)集上。本文的模型和RoBERTa-Large+LSTM[27]模型類似,都采用多輸入,將context和response分別進(jìn)行建模,但是本文加入了AOA融合模塊,采用注意力機(jī)制捕獲兩者之間的相關(guān)語(yǔ)義信息,response 可以關(guān)注到重要的上下文context 詞信息,context 也可以關(guān)注到相關(guān)的response 詞信息,比LSTM能更好地建模單詞級(jí)別的語(yǔ)義信息,特征捕獲能力更強(qiáng),能實(shí)現(xiàn)并行計(jì)算。實(shí)驗(yàn)結(jié)果也表明本文提出的模型比RoBERTa-Large+LSTM[27]在Twitter 數(shù)據(jù)集、Reddit 數(shù)據(jù)集上F1-score分別提升了1.7、4.8個(gè)百分點(diǎn)。
為了進(jìn)一步解釋上下文的數(shù)量對(duì)諷刺檢測(cè)的影響,使用了不同的上下文數(shù)量在Twitter 數(shù)據(jù)集和Reddit 數(shù)據(jù)集上做了一些實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如圖4 和圖5 所示??梢钥吹綀D中的曲線都是隨著上下文數(shù)量的增加,其評(píng)價(jià)指標(biāo)隨之上升,然后隨之下降。在Twitter 數(shù)據(jù)集上,當(dāng)取context中最后3句話時(shí),F(xiàn)1-score得分最高為0.789,而在Reddit數(shù)據(jù)集上,取context中最后4句話時(shí),F(xiàn)1-score得分最高為0.739。這表明了上下文的話語(yǔ)數(shù)并不是越多越好,同時(shí)缺少一定的上下文信息也會(huì)對(duì)其性能產(chǎn)生影響。將其原因歸結(jié)為:(1)response常常是對(duì)臨近上下文對(duì)話內(nèi)容的回答,較遠(yuǎn)的上下文句子可能與response并不太相關(guān);(2)較多的上下文句子,融入了更多與任務(wù)并不相關(guān)的信息,使得模型學(xué)習(xí)更加困難;(3)response僅是對(duì)上下文的回復(fù),從而缺乏一定的上下文語(yǔ)境信息,難以預(yù)測(cè)其是否為諷刺意味。因此,一定數(shù)量的上下文話語(yǔ)對(duì)諷刺檢測(cè)任務(wù)更加重要。
圖4 Twitter數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果Fig.4 Experimental results on Twitter dataset
圖5 Reddit數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果Fig.5 Experimental results on Reddit dataset
本文提出了一種基于RoBERTa的會(huì)話中的諷刺檢測(cè)模型,該模型接收多輸入,將上下文文本和目標(biāo)文本分別編碼得到詞級(jí)別的上下文語(yǔ)義信息,然后與AOA融合模塊提取的相關(guān)信息級(jí)聯(lián)后進(jìn)行諷刺結(jié)果的預(yù)測(cè)。實(shí)驗(yàn)結(jié)果表明,本文提出的模型在兩個(gè)數(shù)據(jù)集上都獲得了最好的效果,泛化能力強(qiáng)。
采用AOA 模塊學(xué)習(xí)到了兩者之間的相關(guān)信息,這是一種詞級(jí)別的注意力學(xué)習(xí)方式,是否可以加入句子級(jí)別的注意力信息來(lái)提高檢測(cè)結(jié)果。此外,雖然本文提出的模型檢測(cè)率較現(xiàn)有模型有所提升,但并未完全實(shí)現(xiàn)高水平的檢測(cè)率,因此采用何種方法能夠更好地選出模型的最優(yōu)參數(shù),仍需進(jìn)一步探索。