2. 甘肃省人工智能与图形图像工程研究中心, 兰州 730070
2. Gansu Provincial Engineering Research Center for Artificial Intelligence and Graphic and Image Processing, Lanzhou 730070, China
如何从社交媒体评论中挖掘用户的情感倾向已成为当前国内外学者的研究重点之一[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数据集对模型性能进行验证。
1 相关工作 1.1 上下文语境讽刺检测基于上下文语境的讽刺检测是讽刺检测领域的细分任务,目的是通过挖掘目标语句的衍生特征来补充判断语句的讽刺倾向。神经网络在自然语言处理领域取得了显著进展,特别是在文本情感分析等子领域的成功应用,推动了学术界将研究方向从依赖于人工提取特征的传统方法迁移到深度学习方法[11-12]。
近年来,许多学者将神经网络引入到讽刺检测任务中,并取得了比传统方法更好的结果。文献[13]使用预先训练的卷积神经网络来提取语句特征进行讽刺分类。文献[14]使用双向门控递归神经网络来捕获推文的句法和语义信息,并利用池化操作从历史推文中自动地捕获上下文特征,实验结果表明,使用神经网络提取特征提高了讽刺检测的准确性。文献[15]采用卷积神经网络和长短时记忆(Long Short-Term Memory,LSTM)网络构建的混合模型有效提高了分类精度。文献[16]提出注意力机制和长短时记忆网络的混合神经网络模型对文本进行特征提取。
大部分基于上下文语境的讽刺检测任务是在神经网络模型的基础上进行的,文献[4-6]先后将用户嵌入和论坛主题嵌入引入讽刺检测任务,通过增加额外的上下文语境信息来扩展模型。受文献[4-6]启发,本文提出一种将ParagraphVector方法与BiGRU网络相结合的模型用于基于上下文语境的讽刺检测任务。
1.2 ParagraphVector模型ParagraphVector模型利用词、句嵌入算法得到单词和句子相应的低维、稠密的分布式表示,有助于后续利用更加成熟的深度神经网络算法对文本进一步处理[17]。ParagraphVector模型是在Word2vector[18]的基础上提出的,是一种无监督且不定长文本的连续分布式向量表示方法。
1.3 GRU模型GRU(Gated Recurrent Unit)模型是长短时记忆网络的改进模型,具有结构简单、参数较少、收敛性更好等优点。相比于其他的循环神经网络,GRU模型运算更加简洁。
GRU中每个单元的更新方式如下:
$ {r_t} = \sigma \left( {{W_r} \times \left[ {{h_{t - 1}}, {x_t}} \right]} \right) $ | (1) |
$ {z_t} = \sigma \left( {{W_z} \times \left[ {{h_{t - 1}}, {x_t}} \right]} \right) $ | (2) |
$ \tilde h{_t} = \tanh \left( {W \times \left[ {{r_t} \times {h_{t - 1}}, {x_t}} \right]} \right) $ | (3) |
$ {h_t} = \left( {1 - {z_t}} \right) \times {h_{t - 1}} + {z_t} \times \tilde h{_t} $ | (4) |
其中,rt、zt、
本文提出的上下文语境讽刺检测模型结构如图 1所示,主要包括4个部分:
![]() |
Download:
|
图 1 基于上下文语境的讽刺检测模型 Fig. 1 Contextual-based sarcasm detection model |
1)用户嵌入网络。本文将每个用户的历史评论整合为用户文档,通过ParagraphVector模型学习用户文档得到用户嵌入。
2)论坛主题编码。类似于对用户文档的编码,本文将每个论坛的历史主题推文整合为此论坛的主题文档,同样使用ParagraphVector模型学习每个论坛的主题特征。
3)语句编码模型。利用Bi-GRU网络训练目标分类语句,提取句法特征,输出待分类语句的隐层表。
4)分类输出层。将1)~3)部分得到的向量连接,通过一个Softmax层得到最终分类结果。
本文提出的讽刺检测模型将用户信息、主题信息和目标分类句分别建模,最终组合分类,利用这种建模方式,既可以充分挖掘各模块的语义信息,也能保留三者之间的联系。
2.1 任务定义此项工作的目的是检测在线论坛(Reddit)评论语句的讽刺倾向。论坛中的每条评论都与唯一的评论用户和评论论坛主题相关联,假定所有的用户构成一个用户集合U={u1,u2,…,
![]() |
下载CSV 表 1 目标句语境信息 Table 1 Context information of target sentence |
由表 1可知,目标句所属的用户与主题分别为“FeuNoir”和“block user”,此用户与主题的历史评论数据若干条,用标识符 < END > 组合为用户文档和主题文档。本文提取用户文档和主题文档的特征来辅助检测目标句的讽刺倾向。
2.2 用户嵌入用户嵌入试图从用户的历史评论帖子中捕捉与讽刺倾向相关的用户特征,其基本思想是将特征相似的用户投射到嵌入空间的邻近区域。本文采用目前较为常见的文本向量模型PV-DM(Distributed Memory Model of Paragraph Vectors)将用户文档表示为段落向量从而实现用户嵌入。PV-DM模型通过将段落向量与词向量相结合来预测下一个词向量,段落向量与词向量是训练过程的副产物,具体步骤如下:
1)输入层。将每个用户文档映射为一个段落向量存储在段落矩阵D中,每个单词映射为词向量存储在词矩阵C中。
2)投影层。将词矩阵C中的词向量与段落矩阵D中的段落向量进行拼接,用于预测P(wt|wt-c,…,wt+c;d)=
3)输出层。使用层次Softmax求得P(wt|wt-c,…,wt+c;d)=
$ P\left( {{w_t}|{w_{t - c}}, \cdots , {w_{t + c}};d} \right) = \frac{{{e^{y\left( {{w_t};d} \right)}}}}{{\sum\limits_i {{e^{{y_i}}}} }} $ | (5) |
其中,词矩阵C中的每一个单词与输出层的节点相对应,而每一个yi对应词i未标准化的对数概率:
$ y = b + Uh\left( {{w_{t - c}}, \cdots {w_{t + c}}, d;\mathit{\boldsymbol{C}}, \mathit{\boldsymbol{D}}} \right) $ | (6) |
其中,b和U均为Softmax参数,h(·)表示将词向量与段落向量相连接。训练结束后,用户文档被映射为定长的向量,即段落向量。使用训练好的PV-DM模型可将任意长度的用户文档ui映射成为用户嵌入向量ui。
2.3 论坛主题嵌入类似于用户能够影响目标语句的讽刺倾向,本文假定目标语句所属的论坛主题能够影响语句的讽刺倾向。例如,对于政治或体育主题下的评论通常比自然灾害评论更容易具有讽刺意味。本文采用与编码用户嵌入相同的方法编码论坛主题嵌入,使用ParagraphVector模型将Reddit论坛下的每个主题文档tj表示为特征向量tj。
2.4 语句特征本文使用Bi-GRU模型对目标分类语句建模,即在标准GRU的基础上增加反向的GRU,使得当前时刻的输出能与前一时刻的状态和后一时刻的状态都产生联系,通过将正向GRU与反向GRU相连接形成双向GRU网络。在每一时刻,模型的输入会同时提供给两个方向相反的GRU网络,输出则由这两个单向的GRU共同决定,计算方式如下:
$ {{\vec h}_t} = {\rm{GRU}}\left( {{x_t}, {{\mathop {{\rm{ }}h}\limits^ \to }_{t - 1}}} \right) $ | (7) |
$ {{\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\leftarrow$}} \over h} }_t} = {\rm{GRU}}\left( {{x_t}, {{\mathop {{\rm{ }}h}\limits^ \leftarrow }_{t - 1}}} \right) $ | (8) |
$ {h_t} = {w_t} \cdot {{\vec h}_t} + {v_t}{{\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\leftarrow$}} \over h} }_t} + {b_t} $ | (9) |
其中,GRU(·)表示能够把词向量编码成对应GRU隐层状态的非线性变换函数,wt表示t时刻双向GRU所对应的前向隐层状态
在提取到评论Ci,j的文本表示向量Ci,j、用户ui的用户嵌入向量ui以及论坛tj的主题特征向量tj后,将这3个向量连接起来形成统一的文本表示Ĉi,j=[Ci,j⊕ui⊕tj]。其中,⊕表示连接。最后,使用Softmax函数将Ĉi,j转换为概率输出,具体公式如下:
$ \hat y = {\rm{Softmax}}\left( {{\mathit{\boldsymbol{W}}_o}{{\mathit{\boldsymbol{\hat C}}}_{i, j}} + {b_o}} \right) $ | (10) |
其中,Wo是权重矩阵,bo是偏置。利用反向传播算法来训练模型,在训练过程中,通过全连接层的每一次输出最小化交叉熵损失函数对模型进行优化:
$ {\rm{Loss = - }}\frac{1}{N}{\sum\limits_{i = 1}^N {\sum\limits_{j = 1}^2 {{y_{i, j}}1{\rm{b }}{{\hat y}_{i, j}} + {\rm{ \mathit{ λ} }}||\theta ||} } ^2} $ | (11) |
其中,N是训练集中的所有评论,yi,j为实际类别,ŷi,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语言编程实现。
![]() |
下载CSV 表 2 SARC数据集统计 Table 2 Statistics of SARC datasets |
本文使用准确率Accuracy作为评价模型分类结果的指标。
$ {\rm{Accuracy = }}\frac{T}{N} $ | (12) |
其中,T表示模型正确预测评论类别的数量,N表示样本总数。
3.3 实验参数在本文的实验中,数据集采用了文献[19]提出的Glove词向量来初始化实验数据的词向量,实验中的许多超参数都需要设置和调整,超参数的更新都是在每一次训练完成后,根据实验的精度和损失手动调整的。经过若干次迭代,实验的超参数如表 3所示。
![]() |
下载CSV 表 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相结合形成分类向量。
3.5 结果分析本文在SARC数据集上进行7组模型的对比实验,实验分类准确率如表 4所示。
![]() |
下载CSV 表 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的用户嵌入方式,避免了建模用户嵌入时大量的特征工程工作。实验结果表明,本文模型优于目前基于上下文语境讽刺检测的其他模型。
3.6 模型分析为进一步分析模型各组件对语句讽刺检测程度的影响,本文从数据集中抽取一些典型的句子进行分类结果对比分析,如表 5所示。从表 5结果可以看出,例句1、例句2和例句3由于缺乏上下文语境信息而导致预测错误,但是例句1、例句2在仅加入用户嵌入后模型预测结果便有了明显的改善,而例句3由于长度较短且缺乏明显的情感词,需要对其所属论坛主题明确后才能得到正确的预测。说明本文提出的使用ParagraphVector模型对用户以及主题建模是可行的,并且能够达到较好的效果。例句4在基础Bi-GRU模型(Bi-GRU+U)和增加用户嵌入(Bi-GRU+U+P)的模型中都能得到正确的预测,但当模型增加主题嵌入时得出错误的结果,说明更复杂的模型不一定能得到正确的预测效果。
![]() |
下载CSV 表 5 数据集中典型句分析 Table 5 Typical sentence analysis in dataset |
本文提出一种结合用户嵌入、论坛主题嵌入与内容编码的上下文语境讽刺检测模型。该模型运用ParagraphVector模型与Bi-GRU模型分别编码上下文语境信息和内容信息,有效提高讽刺检测分类准确率。在标准讽刺检测数据集上的实验结果验证了该模型的有效性。对于讽刺检测这类特殊的文本分类问题,需要增加用户嵌入与主题嵌入等语境信息,但由于用户文档与主题文档的训练样本较少,实验过程中会出现过拟合、分类错误等问题,下一步将对此进行改进,以得到更好的分类效果。
[1] |
PANG B, LEE L. Opinion mining and sentiment analysis[J]. Foundations and Trends in Information Retrieval, 2008, 2(1/2): 1-13. |
[2] |
CARVALHO P, SARMENTO L, SILVA M J, et al.Clues for detecting irony in user-generated contents: oh…!! it's "so easy"[C]//Proceedings of the 1st International CIKM Workshop on Topic-sentiment Analysis for Mass Opinion.New York, USA: ACM Press, 2009: 53-56.
|
[3] |
RILOFF E, QADIR A, SURVE P, et al.Sarcasm as contrast between a positive sentiment and negative situation[C]//Proceedings of 2013 IEEE Conference on Empirical Methods in Natural Language Processing.Washington D.C., USA: IEEE Press, 2013: 704-714.
|
[4] |
BAMMAN D, SMITH N A.Contextualized sarcasm detection on twitter[C]//Proceedings of the 9th International AAAI Conference on Web and Social Media.[S.1.]: AAAI Press, 2015: 457-468.
|
[5] |
AMIR S, WALLACE B C, LYU H, et al.Modelling context with user embeddings for sarcasm detection in social media[EB/OL].[2019-10-10].https://arxiv.xilesou.top/pdf/1607.00976.pdf.
|
[6] |
HAZARIKA D, PORIA S, GORANTLA S, et al.CASCADE: contextual sarcasm detection in online discussion forums[EB/OL].[2019-10-10].https://arxiv.xilesou.top/pdf/1805.06413.
|
[7] |
HOTELLING H. Relations between two sets of variates[J]. Biometrika, 1936, 28(3/4): 321-377. DOI:10.2307/2333955 |
[8] |
KHODAK M, SAUNSHI N, VODRAHALLI K.A large self-annotated corpus for sarcasm[EB/OL].[2019-10-10].https://arxiv.xilesou.top/pdf/1704.05579.pdf.
|
[9] |
LE Q, MIKOLOV T.Distributed representations of sentences and documents[C]//Proceedings of IEEE Inter-national Conference on Machine Learning.Washington D.C., USA: IEEE Press, 2014: 1188-1196.
|
[10] |
CHO K, VAN MERRIENBOER B, GULCEHRE C, et al.Learning phrase representations using RNN encoder-decoder for statistical machine translation[EB/OL].[2019-10-10].https://arxiv.xilesou.top/pdf/1406.1078.pdf.
|
[11] |
MIKOLOV T, SYTSKEVER I, CHEN K, et al. Distributed representations of words and phrases and their com-positionality[J]. Neural Information Processing Systems, 2013, 26: 3111-3119. |
[12] |
LECUN Y, BEBGIO Y, HINTON G. Deep learning[J]. Nature, 2015, 521(7553): 436-444. DOI:10.1038/nature14539 |
[13] |
PORIN S, CAMBRIA E, HAZARIKA D, et al.A deeper look into sarcastic tweets using deep convolutional neural networks[EB/OL].[2019-10-10].https://arxiv.xilesou.top/pdf/1610.08815.pdf.
|
[14] |
ZHANG Meishan, ZHANG Yue, FU Guohong.Tweet sarcasm detection using deep neural network[C]//Pro-ceedings of the 26th International Conference on Com-putational Linguistics: Technical Papers.Washington D.C., USA: IEEE Press, 2016: 2449-2460.
|
[15] |
GHOSH A, VEALE T.Fracking sarcasm using neural network[C]//Proceedings of the 7th IEEE Workshop on Computational Approaches to Subjectivity, Sentiment and Social Media Analysis.Washington D.C., USA: IEEE Press, 2016: 161-169.
|
[16] |
TAY Y, TUAN L A, HUI S C, et al.Reasoning with sarcasm by reading in-between[EB/OL].[2019-10-10].https://arxiv.xilesou.top/pdf/1805.02856.pdf.
|
[17] |
GOLDBERG Y. Neural network methods for natural language processing[J]. Human Language Technologies, 2017, 10(1): 288-309. |
[18] |
BENGIO Y, DUCHARME R, VINCENT P, et al. A neural probabilistic language model[J]. Journal of Machine Learning Research, 2003, 3: 1137-1155. |
[19] |
PENNINGTON J, SOCHER R, MANNING C.GloVe: global vectors for word representation[C]//Proceedings of 2014 IEEE Conference on Empirical Methods in Natural Language Processing.Washington D.C., USA: IEEE Press, 2014: 1532-1543.
|
[20] |
KIM Y.Convolutional neural networks for sentence classification[EB/OL].[2019-10-10].https://arxiv.xilesou.top/pdf/1408.5882.pdf.
|