隨著社交媒體(Social Media)的蓬勃發展,網路使用者大量運用修辭方法在網路上發表觀點或表達情感,網路文字越來越多的包含反語、諷刺或幽默等表達方式。修辭方法的運用給自然語言處理帶來了極大困難,在情感分析任務中傳統的情感分析難以正確識別含反語文字的實際情感,反語等這種修辭方式嚴重影響了社交媒體情感分析的識別精度,因此針對反語和諷刺的研究,在情感分析等問題中具有重要意義[12]。
反語(Irony)和諷刺(Sarcasm)是社會媒體中常用的修辭方法。反語是指運用跟本意相反的詞語來表達此意,卻含有否定、諷刺以及嘲弄的意思,是一種帶有強烈感情色彩的修辭格,比如“I absolutely love to be ignored !”。諷刺則是用比喻、誇張等手法對人或事進行揭露、批評或嘲笑,比如“Good thing Trumpis going to bring back all those low education highpaying jobs.”。關於反語和諷刺的關係,可以認為諷刺是包含情緒(比如攻擊性情緒)的一種反語[9]。為方便起見,後文統一稱之為“反諷”,不再對反語和諷刺進行區分。
反諷識別的研究目前主要存在以下難點:(1)權威的反諷資料集較少且規模不大,中文語料更是少之又少;(2)單純的文字資訊,缺乏說話人的語音、語調以及說話人的狀態資訊,難以判斷是否是反諷;(3)由於社交媒體或者會話中,以短文字多見,文字長度制約了對上下文資訊的獲取;(4)反諷的表達方式與字面意思無關,需要獲取深層的語義資訊,才能準確的識別反諷;(5)由於反諷與語言習慣有關,不同語言的語言結構對其有著重大影響[12]。
1. 資料集
目前可以公開獲取的反諷識別任務資料集多數為英文語料,中文的公開語料較少,目前只有Tang[10]等人針對繁體字構建了一個反語語料庫並分析了反語常見的句式結構。下面將介紹已公開的中英文反諷資料集。
1.1 繁體中文語料
國立臺灣大學的Yi-jie Tang在Chinese Irony Corpus Construction and Ironic Structure Analysis(COLING 2014)用基於表情符的規則從噗浪網(Plurk,臺灣地區的微博平臺)挖掘繁體中文反諷語料1005條,並總結了五種反諷語言模式,這是國內第一份中文(繁體)反諷語料。
1. 語料庫樣例
“很好,又失眠了!! :-(”
2. 對應的XML格式
<message><rhetoric>很</rhetoric><ironic sentiment="pos">好</ironic><context sentiment="neg">又失眠了</context><rhetoric>!!</rhetoric>:-(</message>
3. XML標籤解釋
<message>:表示來自噗浪網的一條微博。
<ironic>:表示每個反諷微博中的反諷詞或短語,附帶的情感屬性代表該反諷詞或短語的情感極性(褒貶二元極性),每條可以有多個<ironic>標籤。
<context>:表示上下文資訊,附帶的情感屬性代表該反諷詞或短語的情感極性(褒貶二元極性),該標籤並非每條反諷微博都有。
<rhetoric>:表示修辭元素。
語料下載地址:http://nlg.csie.ntu.edu.tw/nlpresource/irony_corpus
1.2 英文語料
英文的反諷語料多而雜,多數為英文tweets(Twitter上的微博)、Reddit(社交新聞)、4Forums(政治辯論投票論壇)等。下面介紹幾個論文中常用的英文反諷語料。
1.2.1 Tweets
(1) Riloff et al. 2013 Tweets資料集
這是較早的一份英文Tweets語料,共計3000條,標籤為二元類別,即“反諷”與“非反諷”,是根據tweets的Hashtag(#irony, #sarcasm等)自動標註,並加入了人工整理獲得。其中反諷為693條,非反諷為2307條。
語料下載地址:http://www.cs.utah.edu/~riloff/publications_chron.html
(2) Ptacek et al. 2014 Tweets資料集
該語料同樣來自Twitter(包含了英語和捷克語),標註方法為根據Hashtag(#not, #sarcasm, #irony)自動標註,二元標籤。其中平衡資料集反諷50000條,非反諷50000條;非平衡資料集反諷25000條,非反諷50000條(這裡只統計了英文語料)。
語料下載地址:http://liks.fav.zcu.cz/sarcasm
說明:
限於Twitter隱私政策,上述tweets資料集只能公開tweets ID列表,原tweets內容需要利用Twitter API自己爬取。
由於資料集中tweets年代久遠(tweets大約發表於2013、2014年),大量tweets都已失效,所以現在能爬取到的只能是原資料集的子集。
(3) SemEval-2018任務3的評測資料集
該資料來自2014年1月12日至2015年4月1日的tweets,覆蓋2676位不同使用者,藉助tweets自帶的反諷hashtags(#irony, #sarcasm 與 #not)自動構建了2222條反諷tweets,為保證與非反諷語料的平衡性,該資料集又加入2396條非反諷tweets,共計4618條。該評測任務分為兩個子任務,任務A為反諷、非反諷二元分類,任務B為四分類問題,即細粒度反諷識別,具體的是在任務A基礎上將反諷類Tweets進一步劃分為三種:ironic by clash、situation irony和other irony。經統計,ironic by clash約佔69.9%,該資料集可能是目前唯一個包含“細粒度”反諷類別的資料集。
語料下載地址:https://github.com/Cyvhee/SemEval2018-Task3
1.2.2 SARC(Reddit資料集)
這是Mikhail Khodak等人在LREC2018論文A Large Self-Annotated Corpus for Sarcasm新構建的語料庫,該資料為百萬規模,解決了的以前反諷語料庫規模小、領域狹隘或者未區分領域的問題。此外,該資料集包含了上下文資訊,如發帖的使用者名稱、該句所屬的論壇主題、該句的回覆等。標註方法為自動標註,依據是Reddit特有的“/s”符號。論文中常用的是該資料集的movies與technology兩個子類別。其中movies資料共計8188條,反諷為3450條,非反諷為4738條;technology資料共計22510條,反諷為9858條,非反諷為12652條。
語料下載地址:http://nlp.cs.princeton.edu/SARC
1.2.3 Internet Argument Corpus(IAC)
資料集來自4Forums.com論壇,該論壇用作政治辯論與投票。該資料集的特點為每條長度較長(tweets資料集、Reddit資料集長度為11~18詞,IAC長度為54~64詞),多為隱晦的政治諷刺風格的長句。論文中常用的是Debates V1和V2兩個版本。V1總計4646條,反諷為1232條,非反諷為3414條;V2總計1935條,反諷為703條,非反諷為1232條。
表1 常用反諷資料集統計(部分資料來自Yi Tay et al. EMNLP 2018)
2. 反諷識別現狀研究
反諷識別從是否結合上下文來說可分為兩大類,即上下文無關的反諷識別和上下文有關的反諷識別。上下文無關的反諷識別僅通過分析目標句判斷是否為反諷,不需要結合上下文資訊;而上下文有關的反諷識別則通過分析目標句與其上下文來判斷是否為反諷。
以下將介紹上下文無關的論文Reasoning withSarcasm by Reading In-between(Yi Tay et al. ACL 2018)和上下文有關的論文CASCADE: Contextual Sarcasm Detection in Online Discussion Forums(Devamanyu Hazarika et al. COLING 2018)和RepresentingSocial Media Users for Sarcasm Detection(Y. AlexKolchinski, EMNLP 2018)。
2.1 上下文無關的反諷識別
Reasoning with Sarcasm by Reading In-between(Yi Tay et al. ACL 2018)提出了一種上下文無關的反諷識別模型。該論文中提到了一種現象,即雖然反諷表達形式多樣,但其中有很大一部分(SemEval2018資料集顯示佔69.9%)是“前後情感矛盾式的反諷”,比如在“I absolutely love to be ignored !”、“ Yay!!! The best thing to wake up to is my neighbor’s drilling .”、“ Perfect movie for people who can’t fall asleep.”中,詞對(word pair) {love, ignored}, {best, drilling} 與 {movie, asleep}在情感、狀態或行為上“相反”,作者從這一點出發構造一種模型可以“looking in-between”。通常來講,先前的反諷識別模型模型多依賴深的序列化的神經網路來建模反諷句子,比如主要使用GRU、LSTM等序列建模方法提取特徵。這種模型有兩個缺點,一個是GRU、LSTM無法精確捕捉反諷句中的“詞對相反”這種特點,這就相當於損失了反諷句中的很重要的一種文字特徵,另一個缺點就是GRU、LSTM由於無法捕捉長期依賴,舉例來講,如果詞對{love, ignored}相距較遠便無法很好的檢測到。一個更合理的模型應該是“intra-sentence”的,即不但要追求識別精度的提高,還要求模型具有可解釋性,由此推斷合理的模型應該使用注意力機制。
由上圖可知,用作句子分類的“句子向量表示”由LSTM的“句子表示”和“句內attention表示”組成。
2.1.1 LSTM“句子表示”
LSTM“句子表示”是普通的句子序列化建模表示。
2.1.2 “句內attention表示”
“句內attention表示”是對於“詞對關係”的表示,用來突出{love, ignored}這種詞對關係,構建方法如下:
(1) 計算任意詞對的注意力分數
(2) 二維分數矩陣按行取max pooling並做歸一化;由(1)詞之間兩兩做attention可以得到注意力分數矩陣,在該矩陣每一行取最大可降維得到一維向量,然後再做softmax歸一化。
(3) 最後計算“句內attention表示”
2.1.3 分類預測
由上述1和2分別得到了LSTM“句子表示”和“句內attention表示”,將二者拼接做分類預測。
2.2 上下文有關的反諷識別
事實上,反諷的判定嚴重依賴於上下文,這裡的上下文指的是廣義的上下文,比如說話人的聲音、語調、表情,說話人當時的狀態等,或者要識別的文字在長文中的位置、社會媒體的轉發、回覆、評論等等。因此,原則上反諷判定需使用上下文推定才夠準確。下面將介紹兩個上下文有關的建模識別反諷論文,分別是CASCADE: Contextual Sarcasm Detection in Online Discussion Forums(Devamanyu Hazarika et al. COLING 2018)和RepresentingSocial Media Users for Sarcasm Detection(Y. AlexKolchinski, EMNLP 2018),前者使用了較為複雜的上下文資訊,後者則使用了簡單的上下文資訊。
2.2.1 COLING 2018 論文
在COLING 2018一文中,作者提出了一種結合多種上下文識別反諷的模型。該論文實驗使用的是含有上下文資訊的SARC(Reddit)資料集。作者認為每條post(Reddit的發帖稱為post)由兩部分組成,即post本身的內容和post的上下文(這裡的上下文包括post的使用者資訊和post所屬的主題資訊),作者構造了一種模型將二者融合來檢測反諷。
2.2.1.1 上下文資訊的構建
對該論文來說,Post的上下文資訊包括使用者資訊和主題資訊,具體如下:
1. 使用者資訊(User Embeddings)
這裡的使用者(user)是指釋出該post的使用者,使用者資訊又分為使用者的文體風格(編注:Stylometric,該特徵常用來分析文章的作者,即Authorship Analysis,可參考[14])和使用者的個性化(編注:Personality,可使用Personality分析人的行為,可參考[15])。
Stylometric建模流程如下:
Personality建模流程如下:
由Stylometric和Personality建模分別得到和的矩陣,然後使用典型相關性分析(CCA)融合降維為User Embeddings。
2. 主題資訊(Discourse Features)
在SARC資料集中,每條post有所屬的forums,每個forums有自己的主題。
2.2.1.2 建模post內容+融合
在該部分,post內容表示使用CNN+MaxPooling得到的向量表示該post,然後與使用者資訊上下文和post主題上下文拼接得到該post的上下文有關表示進行分類。
圖8 COLING 2018論文模型框圖
2.2.2 EMNLP 2018 論文
在EMNLP 2018一文中,作者簡化了上下文資訊,僅研究使用者(Author)資訊對反諷識別的作用,其基本假設是不用使用者的表達習慣不同,可以作為反諷識別的重要特徵。
下面考慮加入Author資訊的方式,並與基準模型做對比。
1. 基準模型
樸素BiGRU二分類器,無上下文資訊,只對目標句做BiGRU表示進行分類。
2. 加入Author資訊:Bayesianprior + BiGRU
這種方法將Author視為貝葉斯先驗知識,可通過訓練語料統計得到。此時,形式為,即長度為2的整數向量,第1元素表示訓練語料中該author發出反諷帖子的數量,第2元素表示發出非反諷帖子的數量,當要預測的目標句無author時,可設為[0, 0]。
3. 加入Author資訊:Author embedding + BiGRU
這種方法將Author視為可學習的向量,數值可通過訓練訓練模型微調。此時,形式為,當要預測的目標句無author時,可設為。
模型實驗:
表2 測試語料為SARC的子集
EMNLP2018模型實驗結果表明,該模型與使用複雜上下文的CASCADE (COLING2018) 相比,某種程度上具有可比性。
表3 EMNLP2018模型實驗
3. 結論與展望
本文主要對社會媒體中的反諷檢測做了歸納總結,包括反諷檢測的概念、存在的難點、常用資料集及研究現狀等。反諷是社會媒體中常用的修辭手法,反諷的出現會對一些NLP任務帶來挑戰,因此反諷檢測具有重要的研究意義。反諷資料集往往規模較小,而SARC資料集的出現帶來了百萬規模、多種主題且附帶上下文的反諷語料庫。關於反諷檢測的未來工作可考慮如下幾個方面[16]:
1. 資料集
我們認為多型別、多格式的資料集對反諷檢測任務有積極意義。推測未來有潛力的可以構建反諷資料集的網站之一是Steam store(一個電子遊戲商店平臺),該網站擁有大量活躍的使用者,商店評論內容更新及時,購買遊戲前閱讀商店評論是使用者訪問該網站的主要原因。很多情況下,如果遊戲質量沒有廠商宣傳的那麼好就會有使用者發表反諷類的評論。我們建議未來的研究人員可以將Steam資料集作為研究主題。
2. 加入上下文資訊
反諷與上下文高度相關,原則上使用上下文資訊能極大提高反諷檢測的準確率,我們認為未來的工作應該著眼於與上下文資訊的結合。廣義的上下文資訊包括但不限於:
使用者特性
目標文字的回覆、評論等
目標文字所處的語境(這裡指狹義的上下文)
參考文獻:
[1] Tang YJ, Chen H. Chinese irony corpusconstruction and ironic structure analysis, COLING 2014.
[2] Yi Tay, Luu Anh Tuan et al. Reasoningwith Sarcasm by Reading In-between, ACL 2018.
[3] Y. Alex Kolchinski, Christopher Potts. RepresentingSocial Media Users for Sarcasm Detection,EMNLP 2018.
[4] Devamanyu Hazarika et al. CASCADE: ContextualSarcasm Detection in Online Discussion Forums, COLING 2018.
[5] Mikhail Khodak, Nikunj Saunshi et al. ALarge Self-Annotated Corpus for Sarcasm, LREC 2018.
[6] Hen-Hsen Huang, Chiao-Chen Chen et al.Disambiguating False-Alarm Hashtag Usages in Tweets for Irony Detection, ACL2018.
[7] Huayi Li, Arjun Mukherjee et al.Extracting Verb Expressions Implying Negative Opinions. AAAI 2015.
[8] Yu-Hsiang Huang, Hen-Hsen Huang et al.Irony Detection with Attentive Recurrent Neural Networks, ECIR 2017.
[9] Uraz Yavanoglu et al, A Review onSarcasm Detection from Machine-Learning Perspective, 2017 IEEE 11thInternational Conference on Semantic Computing.
[10] Yi-jie Tang et al, Chinese IronyCorpus Construction and Ironic Structure Analysis, COLING 2014
[11] 邢竹天, 徐揚. 面向網路文字的漢語反諷修辭識別方法研究. 山西大學學報, 2015, 38(3), 385-391.
[12] 孫曉, 何家勁. 任福繼. 基於多特徵融合的混合神經網路模型諷刺語用判別. 中文資訊學報, 2016年06期.
[13] 鄧釗, 賈修一. 陳家駿面向微博的中文反語識別研究. CCL 2015.
[14] STEVEN H. H. DING et al, LearningStylometric Representations for Authorship Analysis.
[15] Basant Agarwal, Personality Detection from Text: A Review, InternationalJournal of Computer System, 2014.
[16] Uraz Yavanoglu et al, Technical Review:Sarcasm Detection Algorithms, International Journal of Semantic Computing, Vol.12, No. 3 (2018) 457–478.