韓 虎,趙啟濤,孫天岳,劉國利
(1.蘭州交通大學 電子與信息工程學院,蘭州 730070;2.甘肅省人工智能與圖形圖像工程研究中心,蘭州 730070)
如何從社交媒體評論中挖掘用戶的情感傾向已成為當前國內外學者的研究重點之一[1]。由于部分用戶在評論語句中頻繁使用諷刺表達,并且諷刺語具有反情感極性的特點,因此針對評論語句的諷刺檢測任務成為文本情感分類中一個重要研究領域。與普通的文本情感分類任務不同,諷刺檢測問題需要額外的上下文語境信息來補充目標語句實現分類。例如句子:“I am sure Hillary would have done that.”,如果不考慮語境,則無法判斷它的情感極性,但如果它的作者與Hillary 政治傾向相反或者此語句的主題背景具有明顯的消極傾向,便會將它與消極極性相聯系,其諷刺傾向也愈加明顯。
在以往的研究中,很多學者將諷刺檢測問題等同于簡單的文本分類任務。文獻[2]分析了用戶在葡萄牙一家在線報紙上發表的評論,發現表情符號、笑的擬聲表達以及大量的標點符號、引號等暗示諷刺含義。文獻[3]研究表明,人們可以利用同一語句中的明顯情緒對比作為言語諷刺的標記。但這種方法無法完全地挖掘語句的諷刺傾向,存在明顯的缺陷。例如只給出文本:“Great idea!”或“what a hardship.”,如果不了解說話者的語境(說話者是誰,話題與誰有關以及內容如何與前后語境相關聯),則便無法精準預測說話者的意圖。因此,諷刺檢測任務需要上下文語境信息。
隨著研究的不斷深入,有部分學者嘗試將作者信息嵌入到目標語句向量中參與分類。文獻[4]發現Twitter 評論中的上下文特征對諷刺文本分類的作用明顯,比如作者的歷史推文、好友回復信息以及作者評論其他帖子的內容,均對分類的精度有較大影響。文獻[5]通過將相似用戶投射到嵌入空間的鄰近區域來構建用戶嵌入。文獻[6]在建模用戶嵌入時采用更復雜的模型,通過作者個性特征與文體特征的CCA[7]融合向量來表示用戶嵌入,并增加語句的論壇主題特征,在Reddit 論壇的標準語料庫SARC[8]上測試并表現出領先的性能。但是Hazarika的模型涉及復雜的特征工程需要耗費大量的資源。
本文構建面向社交媒體評論的上下文語境諷刺檢測模型,利用ParagraphVector[9]方法建模用戶與主題嵌入,運用BiGRU 模型[10]建模目標語句,通過實驗定性比較模型各組件對分類精度的影響,并根據SARC 數據集對模型性能進行驗證。
基于上下文語境的諷刺檢測是諷刺檢測領域的細分任務,目的是通過挖掘目標語句的衍生特征來補充判斷語句的諷刺傾向。神經網絡在自然語言處理領域取得了顯著進展,特別是在文本情感分析等子領域的成功應用,推動了學術界將研究方向從依賴于人工提取特征的傳統方法遷移到深度學習方法[11-12]。
近年來,許多學者將神經網絡引入到諷刺檢測任務中,并取得了比傳統方法更好的結果。文獻[13]使用預先訓練的卷積神經網絡來提取語句特征進行諷刺分類。文獻[14]使用雙向門控遞歸神經網絡來捕獲推文的句法和語義信息,并利用池化操作從歷史推文中自動地捕獲上下文特征,實驗結果表明,使用神經網絡提取特征提高了諷刺檢測的準確性。文獻[15]采用卷積神經網絡和長短時記憶(Long Short-Term Memory,LSTM)網絡構建的混合模型有效提高了分類精度。文獻[16]提出注意力機制和長短時記憶網絡的混合神經網絡模型對文本進行特征提取。
大部分基于上下文語境的諷刺檢測任務是在神經網絡模型的基礎上進行的,文獻[4-6]先后將用戶嵌入和論壇主題嵌入引入諷刺檢測任務,通過增加額外的上下文語境信息來擴展模型。受文獻[4-6]啟發,本文提出一種將ParagraphVector 方法與BiGRU 網絡相結合的模型用于基于上下文語境的諷刺檢測任務。
ParagraphVector 模型利用詞、句嵌入算法得到單詞和句子相應的低維、稠密的分布式表示,有助于后續利用更加成熟的深度神經網絡算法對文本進一步處理[17]。ParagraphVector 模型是在Word2vector[18]的基礎上提出的,是一種無監督且不定長文本的連續分布式向量表示方法。
GRU(Gated Recurrent Unit)模型是長短時記憶網絡的改進模型,具有結構簡單、參數較少、收斂性更好等優點。相比于其他的循環神經網絡,GRU 模型運算更加簡潔。
GRU 中每個單元的更新方式如下:

本文提出的上下文語境諷刺檢測模型結構如圖1所示,主要包括4 個部分:
1)用戶嵌入網絡。本文將每個用戶的歷史評論整合為用戶文檔,通過ParagraphVector 模型學習用戶文檔得到用戶嵌入。
2)論壇主題編碼。類似于對用戶文檔的編碼,本文將每個論壇的歷史主題推文整合為此論壇的主題文檔,同樣使用ParagraphVector 模型學習每個論壇的主題特征。
3)語句編碼模型。利用Bi-GRU 網絡訓練目標分類語句,提取句法特征,輸出待分類語句的隱層表。
4)分類輸出層。將1)~3)部分得到的向量連接,通過一個Softmax 層得到最終分類結果。

圖1 基于上下文語境的諷刺檢測模型Fig.1 Contextual-based sarcasm detection model
本文提出的諷刺檢測模型將用戶信息、主題信息和目標分類句分別建模,最終組合分類,利用這種建模方式,既可以充分挖掘各模塊的語義信息,也能保留三者之間的聯系。
此項工作的目的是檢測在線論壇(Reddit)評論語句的諷刺傾向。論壇中的每條評論都與唯一的評論用戶和評論論壇主題相關聯,假定所有的用戶構成一個用戶集合,所有的論壇主題構成論壇集合對于給定的由第i個用戶ui在第j個論壇主題tj上的評論文本Ci,j,本文的任務是判斷Ci,j是否具有諷刺傾向。例如句子“Obama wants people to die from the shutdown so he can blame it on the GOP”,其語境信息如表1 所示。

表1 目標句語境信息Table 1 Context information of target sentence
由表1 可知,目標句所屬的用戶與主題分別為“FeuNoir”和“block user”,此用戶與主題的歷史評論數據若干條,用標識符
用戶嵌入試圖從用戶的歷史評論帖子中捕捉與諷刺傾向相關的用戶特征,其基本思想是將特征相似的用戶投射到嵌入空間的鄰近區域。本文采用目前較為常見的文本向量模型PV-DM(Distributed Memory Model of Paragraph Vectors)將用戶文檔表示為段落向量從而實現用戶嵌入。PV-DM 模型通過將段落向量與詞向量相結合來預測下一個詞向量,段落向量與詞向量是訓練過程的副產物,具體步驟如下:
1)輸入層。將每個用戶文檔映射為一個段落向量存儲在段落矩陣D中,每個單詞映射為詞向量存儲在詞矩陣C中。
2)投影層。將詞矩陣C中的詞向量與段落矩陣D中的段落向量進行拼接,用于預測P(wt|wt-c,…,
3)輸出層。使用層次Softmax 求得P(wt|wt-c,…,的概率分布,如式(5)所示,同時通過神經網絡的反向傳播獲得誤差梯度,并運用隨機梯度下降法迭代更新模型的參數以及段落向量和詞向量。

其中,詞矩陣C中的每一個單詞與輸出層的節點相對應,而每一個yi對應詞i未標準化的對數概率:

其中,b和U均為Softmax 參數,h(·)表示將詞向量與段落向量相連接。訓練結束后,用戶文檔被映射為定長的向量,即段落向量。使用訓練好的PV-DM模型可將任意長度的用戶文檔ui映射成為用戶嵌入向量ui。
類似于用戶能夠影響目標語句的諷刺傾向,本文假定目標語句所屬的論壇主題能夠影響語句的諷刺傾向。例如,對于政治或體育主題下的評論通常比自然災害評論更容易具有諷刺意味。本文采用與編碼用戶嵌入相同的方法編碼論壇主題嵌入,使用ParagraphVector 模型將Reddit 論壇下的每個主題文檔tj表示為特征向量tj。
本文使用Bi-GRU 模型對目標分類語句建模,即在標準GRU 的基礎上增加反向的GRU,使得當前時刻的輸出能與前一時刻的狀態和后一時刻的狀態都產生聯系,通過將正向GRU 與反向GRU 相連接形成雙向GRU 網絡。在每一時刻,模型的輸入會同時提供給兩個方向相反的GRU 網絡,輸出則由這兩個單向的GRU 共同決定,計算方式如下:

其中,GRU(·)表示能夠把詞向量編碼成對應GRU 隱層狀態的非線性變換函數,wt表示t時刻雙向GRU 所對應的前向隱層狀態的權重,vt表示t時刻雙向GRU所對應的反向隱層狀態的權重,bt表示t時刻隱層狀態所對應的偏置。將目標分類語句的詞向量表示為Bi-GRU 網絡的輸入,Bi-GRU 網絡的主要目的是對輸入的文本向量進行文本深層次特征的提取。通過Bi-GRU 網絡特征提取后,可以更充分地學習上下文之間的關系,提取目標分類文本特征向量Ci,j。
在提取到評論Ci,j的文本表示向量Ci,j、用戶ui的用戶嵌入向量ui以及論壇tj的主題特征向量tj后,將這3個向量連接起來形成統一的文本表示其中,⊕表示連接。最后,使用Softmax 函數將轉換為概率輸出,具體公式如下:

其中,Wo是權重矩陣,bo是偏置。利用反向傳播算法來訓練模型,在訓練過程中,通過全連接層的每一次輸出最小化交叉熵損失函數對模型進行優化:

其中,N是訓練集中的所有評論,yi,j為實際類別為模型預測類別為交叉熵正則項。
本文使用Reddit論壇的標準諷刺檢測數據集SARC[7]對模型進行驗證,在實驗中考慮了SARC數據集的3種變體,分別是Main balanced、Main imbalanced和Politics,數據集信息如表2所示。本文的實驗環境信息如下:操作系統為Windows 10;CPU 為Inter coreTMi7-7700 CPU @3.60 GHz;顯卡為GTX 1080;內存為16.0 GB。實驗采用Google 的TensorFlow 深度學習框架,使用Python 語言編程實現。

表2 SARC 數據集統計Table 2 Statistics of SARC datasets
本文使用準確率Accuracy 作為評價模型分類結果的指標。

其中,T表示模型正確預測評論類別的數量,N表示樣本總數。
在本文的實驗中,數據集采用了文獻[19]提出的Glove 詞向量來初始化實驗數據的詞向量,實驗中的許多超參數都需要設置和調整,超參數的更新都是在每一次訓練完成后,根據實驗的精度和損失手動調整的。經過若干次迭代,實驗的超參數如表3 所示。

表3 實驗參數Table 3 Experimental parameter
將本文提出的模型與以下常見的模型進行對比:
1)Bag-of-Words:詞袋模型是自然語言處理領域常用的建模文本方法,即以單詞作為矢量空間的維度,以文本中出現的單詞頻率作為文本矢量對應維度的值。
2)CNN:文獻[20]提出的卷積神經網絡模型使用獨立評論句子作為模型的輸入,沒有嵌入用戶與主題信息,是最基礎的卷積神經網絡模型。
3)Bi-GRU:文獻[10]提出的Bi-GRU 網絡模型是LSTM 網絡的變體,該模型能夠解決句子間的長時依賴問題。
4)CNN-SVM:文獻[13]提出的模型使用預訓練的CNN 網絡提取歷史語句特征,并與目標分類句特征共同作為SVM 模型的輸入進行分類。
5)CUE-CNN:文獻[5]提出的基于段落向量模型與卷積神經網絡的分類模型,首先通過段落向量對用戶文檔進行建模,然后將用戶嵌入與用于對目標句建模的CNN 的特征向量相結合得到最終的待分類表示。
6)CASCADE:文獻[6]將論壇主題建模引入諷刺檢測任務,用戶嵌入和論壇主題編碼與CNN 相結合形成分類向量。
本文在SARC 數據集上進行7 組模型的對比實驗,實驗分類準確率如表4 所示。

表4 實驗分類準確率Table 4 Accuracy of experimental classification
從表4 的實驗結果可以看出,Bag-of-Words模型的性能最差,這是因為Bag-of-Words 模型忽略了文本中詞語的先后次序,而且缺少詞語的語義信息。對于所有應用神經網絡模型的方法,基礎的CNN 模型表現最差,對于沒有進行上下文嵌入的模型,CNN 模型的表現稍遜于Bi-GRU 模型,這體現出循環神經網絡模型對于處理序列化數據的優勢。但上述3 種基礎模型相比于嵌入語境信息的模型性能較差,這說明只對目標語句建模的方法不能完全挖掘語句的諷刺傾向,因此在模型中加入上下文語境信息很有必要。對于在模型中加入語境信息的情況,CNN-SVM模型在Main balanced、Main imbalanced 和Politics 3 個數據集上相較基礎的CNN 模型準確率提升了4%、1%和5%。CUE-CNN 模型引入用戶嵌入,CASCADE 在CUE-CNN 的基礎上引入了主題嵌入,這2 種模型都是利用CNN 作為提取內容語句特征的基礎模型。本文的模型使用段落向量模型無監督地學習用戶嵌入與論壇主題嵌入,并利用Bi-GRU 模型提取內容語句特征。實驗結果表明,本文模型的準確率優于除CASCADE 的其他模型,這說明用戶嵌入與主題嵌入對目標句諷刺傾向檢測的重要性,以及本文模型能夠提取對諷刺檢測有用的用戶與主題特征。本文模型與CASCADE 的準確率相近,這是由于本文對內容語句的編碼采用了比處理序列數據更具優勢的Bi-GRU 模型,Bi-GRU 相比CNN 具有更可靠的記憶單元,能夠提取更復雜的語句特征信息,并且本文模型簡化了CASCADE 的用戶嵌入方式,避免了建模用戶嵌入時大量的特征工程工作。實驗結果表明,本文模型優于目前基于上下文語境諷刺檢測的其他模型。
為進一步分析模型各組件對語句諷刺檢測程度的影響,本文從數據集中抽取一些典型的句子進行分類結果對比分析,如表5 所示。從表5 結果可以看出,例句1、例句2 和例句3 由于缺乏上下文語境信息而導致預測錯誤,但是例句1、例句2 在僅加入用戶嵌入后模型預測結果便有了明顯的改善,而例句3 由于長度較短且缺乏明顯的情感詞,需要對其所屬論壇主題明確后才能得到正確的預測。說明本文提出的使用ParagraphVector 模型對用戶以及主題建模是可行的,并且能夠達到較好的效果。例句4 在基礎Bi-GRU 模型(Bi-GRU+U)和增加用戶嵌入(Bi-GRU+U+P)的模型中都能得到正確的預測,但當模型增加主題嵌入時得出錯誤的結果,說明更復雜的模型不一定能得到正確的預測效果。

表5 數據集中典型句分析Table 5 Typical sentence analysis in dataset
本文提出一種結合用戶嵌入、論壇主題嵌入與內容編碼的上下文語境諷刺檢測模型。該模型運用ParagraphVector 模型與Bi-GRU 模型分別編碼上下文語境信息和內容信息,有效提高諷刺檢測分類準確率。在標準諷刺檢測數據集上的實驗結果驗證了該模型的有效性。對于諷刺檢測這類特殊的文本分類問題,需要增加用戶嵌入與主題嵌入等語境信息,但由于用戶文檔與主題文檔的訓練樣本較少,實驗過程中會出現過擬合、分類錯誤等問題,下一步將對此進行改進,以得到更好的分類效果。