用于讽刺检测的社交媒体用户的特征表示
摘要
在上下文讽刺检测的背景下,两种表示作者特征的方式:
介绍
反讽和讽刺是语言中依赖语境的极端例子。 鉴于只有文字好主意! 或者说有什么困难!我们无法解决说话者的意图,除非我们对话语的情况有所了解 - 谁说话,谁说话,以及内容如何与前面的话语相关(Clark,1996)。
虽然某些文本偏向于讽刺用法(Kreuz和Caucci,2007; Wallace等,2014),但这种现象的非字面性质确保了语用推理的重要作用(Clark和Gerrig,1984)。
本文是对讽刺语境依赖的一个重要方面的深入研究:作者。 我们的指导假设是作者使用讽刺的倾向各不相同,这种倾向受到关于背景的更一般事实的影响,并且作者有他们自己特定的表达讽刺的方式。
这些假设得到了心理语言学研究的很好支持(Colston和Lee,2004; Gibbs,2000; Dress等,2008),但我们大规模测试它们的能力直到最近才受到可用注释语料库的限制。 随着Self-Annotated Reddit Corpus(SARC)的发布,Khodak等人。 (2017)帮助解决了这个限制。 SARC规模庞大且多样化,其在评论和论坛中的用户分布使其特别适合于对作者及其与讽刺的关系进行建模。
我们的评论文本的核心模型是具有GRU单元的双向RNN。 为了模拟作者,我们提出了两种增强这些RNN表示的策略:一种简单的贝叶斯方法,只捕获作者的原始讽刺倾向,以及一种密集的嵌入方法,允许作者和文本之间的复杂交互(图1)。 我们发现,在SARC上,简单的贝叶斯方法确实非常好,特别是在更小,更集中的论坛中。
在完整的SARC数据集中,作者嵌入能够编码更多种类的变异和与文本的交互,因此它们实现了最高的预测准确性。 这些发现扩展并强化了先前关于讽刺的用户级建模的工作(第2节),并且它们表明简单的表示方法在这里是有效的。
先前的工作
关于讽刺检测存在大量文献。 许多以前的研究都集中在Twitter帖子的分析上,这些分析非常适合用NLP方法进行讽刺检测,因为它们可以大量使用,它们往往大致相当于一个单一的话语,而用户的话题标签也是如此(例如, #sarcasm,#not)可以提供不完美但有用的标签。 该文献的中心主题是引入上下文特征有助于提高性能。
Gonza lez-Iba nez等。 (2011)使用词汇和实用特征(包括表情符号以及用户是否对另一条推文做出回应)的组合训练分类器,(另见Felbo等人2017)。 Bamman和Smith(2015)利用有关背景的其他信息扩展了这种分析。 这里特别感兴趣的是他们的语境特征:作者的历史情感,主题和术语; 收件人; 以及作者和收件人之间历史互动的特征。 该研究发现大多数特征是有用的,但仅在推文和作者特征上训练的模型实现了与在所有特征上训练的模型(85.1%)基本相同的性能(84.9%准确度)。
类似地,Rajadesingan等人。 (2015)使用来自用户的Twitter历史的复杂功能组合,包括情感,语法和单词选择,作为其模型的输入,并在将这些功能添加到基线n-gram时报告增加约7%的分类准确度。
最近的论文还采用深度学习方法来检测讽刺性推文。 Poria等。 (2016)使用具有辅助情感输入特征的组合卷积SVM架构。 张等人的建筑。 (2016)包括RNN,并使用上下文特征以及用于输入的推文文本。
Amir等。 (2016)通过生成作者嵌入来扩展Bamman和Smith的工作,以类似于Le和Mikolov(2014)引入段落向量的方式反映用户的单词使用模式(但不是讽刺历史)。 通过包含这些嵌入,他们的卷积神经网络(CNN)比Bamman和Smith的准确度提高了2%。
Ghosh和Veale(2017)提出了一种组合CNN / LSTM(长期短期记忆RNN)架构,该架构将用户影响作为输入从最近的推文以及推文的文本和父推文的推文中推断出来。 当推文通过名字发给某人时,收件人的姓名包含在推文的文本表示中,提供了对话者之间的松散联系(West et al。,2014)和某些数据的性能提升约1%集。
还有一些关于讽刺的Reddit数据的先前工作(Tay等,2018; Ghosh和Muresan,2018)。 华莱士等人。 (2014)探索了来自六个subreddits的≈3KReddit评论的手工标记数据集。 他们报告说,当人类评分者试图将评论标记为讽刺或不讽刺时,他们需要额外的背景,如subreddit规范和作者历史大约30%的时间,并且评分者发现含糊不清的评论与那些评论大致相同。 基线词袋分类器往往会出错。 在一项后续研究中,Wallace等人。 (2015)发现讽刺的语义线索因subreddit而不同,并且在建模subreddit特定变体时显示分类器准确度增益。
与我们最接近的工作是Hazarika等人的工作。 (2018),他也在SARC数据集上进行实验。 他们的模型学习作者,论坛和文本嵌入,他们表明这三种表示对整体表现有积极贡献。 我们采用更简单的方法来创作嵌入并且不包括论坛嵌入,并且我们报告可比性能(第6节)。 我们将此作为进一步表明作者对讽刺建模的特征的价值。
SARC数据集
自我注释的Reddit语料库(SARC)由Khodak等人创建。 (2017).2它包括前所未有的533M评论。 语料库是自我注释的,因为如果评论作者用“/s”标签标记它,则评论被认为是讽刺性的。因此,积极的例子基本上是那些作者认为含糊不清以明确标记为讽刺的例子,这意味着预测问题实际上是为了确定哪些评论不仅是讽刺性的,而且既讽刺又不明显。
数据集以多种方式过滤,并且具有良好的精确度(仅约1%假阳性率)但回忆率较低(相对于0.25%误报,2%假阴性,或约11%回忆)。 为了缓解由低召回率引起的问题,数据集还包括一个平衡样本,其中评论是成对提供的,两者都响应同一个父评论,并且两个中只有一个被标记为讽刺。 所有评论都附有原始对话的祖先评论,作者信息以及Reddit用户投票的分数。
该数据集为讽刺检测提供了许多优势。 首先,它比过去的讽刺数据集大得多,这使得能够训练更复杂的模型。 此外,大多数讽刺检测工作都集中在推文上,这些推文非常简短,往往使用缩写和非典型语言。 Reddit评论不受长度限制,因此更能代表人们通常的写作方式。 最后,Reddit被组织成被称subreddits的局部定义社区,每个社区都有自己的社区规范和语言模式。 通过从一些次级数据中提供大量数据,SARC促进了对次级域的比较分析,并且更一般地提供了对社区之间差异的看法。
表1提供了整个语料库的基本统计数据以及我们在实验中关注的子目标。
模型
我们的基线模型是具有GRU单元的双向RNN(BiGRU; Cho等人,2014)。 我们尝试了使用LSTM单元的变体,并没有观察到性能的显着差异。因此,我们选择使用参数较少的GRU单元作为模型。
BiGRU模型的输入是用户的注释,它们被分成单词(在连词,子词的情况下)和标点符号,并被转换为单词向量。 BiGRU的两个方向的最终状态彼此连接并且通过单个完全连接的线性层或两个完全连接的线性层,其间具有整流的线性单元。 最终线性层的输出通过S形函数馈送,该函数输出估计的讽刺概率。 此基线不考虑作者信息:对于每个评论,只有评论的单词被视为输入。
贝叶斯先验模型扩展了Bi-GRU,其中对于在训练数据中看到的作者的讽刺和非讽刺评论计数,其作为讽刺频率的先验。 该版本的模型将注释的表示和作者表示xauthor∈Z2≥0作为输入,以估计讽刺的概率。 考虑到先前的讽刺和非讽刺评论计数作者建模减少到伯努利先前的评论和先验,该模型可以被解释为计算讽刺的后验概率。 对于以前看不见的作者,xauthor设置为(0,0)。
作者嵌入方法以更复杂的方式扩展了基线BiGRU。 这里,在训练数据中看到的每个作者与随机初始化的嵌入向量xauthor∈R15相关联,然后将其作为输入提供给模型以及评论的单词的表示。 一个特殊的随机初始化向量xUNK用于以前看不见的作者。 作者嵌入在训练期间更新,目的是学习比贝叶斯先验允许的更复杂的个性化讽刺模式。 我们尝试在不经常看到的作者上训练xUNK矢量(训练集中少于5条评论)而不是使用随机向量,并找到了一些改进性能的建议。 但是,由于性能差异不足以改变不同模型的相对性能,我们报告了更简单的random-xUNK模型的结果。
实验
我们进行了三组实验,每个模型一组,以评估不同方法对作者建模的有效性。 每组实验都在五个数据集上进行:整个语料库的平衡版本以及r / politics和r / AskReddit子目录的平衡和非平衡版本(表1)。
在所有情况下,原始评论数据被标记为单词和标点符号,其中收缩的组成部分被视为单个单词。 我们使用子词信息,在Wikipedia 2017,UMBC webbase语料库和statmt.org新闻数据集(Mikolov等,2018)上将令牌映射到已经训练过的FastText嵌入向量。 虽然生成的标记几乎占100%,但异常被映射到随机初始化的UNK向量。
对于平衡的subreddit语料库中的5%数据的随机分区保持集,或者对于其他模型,1%的所有模型都进行了早期停止训练。 用于超参数调整的模型的性能是针对第二保持集来评估的,该第二保持集以与第一保持集相同的方式生成,但是与它和用于训练的数据部分不相交。
调整超参数以最大化模型性能,以这种方式评估,从随机搜索过程开始并手动微调。 最终评估是针对测试集进行的,其中来自训练数据的单个随机分区的保持集再次用于早期停止。 我们在所有线性层之前和之间的训练期间应用了辍学(Srivastava等,2014)。 对于额外的正则化,我们还对线性权重应用了l2范数惩罚,但没有对GRU权重应用。
我们尝试了其他模型变体,包括多个GRU层和GRU输出的注意机制,但没有观察到较大模型的性能增益。
结果和讨论
定量评估
表2报告了10次运行的方法,以控制优化过程中随机性的变化(Reimers和Gurevych,2017)。
我们的实验和Hazarika等人的实验之间存在重叠。 (2018)(CASCADE),我们的模型竞争激烈。 我们在完全平衡的数据集上略显不足,但在政治上领先一步。 这很引人注目,因为我们的模型使用的信息要少得多。 首先,与CASCADE不同,我们没有论坛嵌入。 其次,CASCADE作者嵌入涉及广泛的特征工程,包括“样式”和“个性”特征。 另一方面,我们的作者嵌入要么是简单的经验估计(贝叶斯先验),要么是随机初始化的学习嵌入,在这两种情况下都允许更简单的模型规范和训练,并且在使用它们的任务上具有更大的灵活性。
还有证据表明,与Hazarika等人的基于CNN的模型相比,BiGRU可以产生更好的文本表示。 我们的“无嵌入”模型类似于没有上下文特征的CASCADE,在完全平衡语料库上只有0.66,在r / politics平衡数据集上只有0.70。 这两个数字都远远落后于我们的’No embed’。 不幸的是,我们没有足够的空间来更全面地研究我们的模型和CASCADE之间的相似点和不同点。
我们用于表示作者的两种方法都表现良好。 对于不平衡的实验而言,这可能尤其引人注目,其中讽刺评论的百分比很小(表1)。 这两种方法在各个论坛上的表现与在完整数据集上的表现不同。 对于r / politics和r / AskReddit社区,贝叶斯先验给出了最好的结果。 对于完整数据集,情况相反,其中高维嵌入优于贝叶斯先验。 这可能反映了两个相互作用的因素。 首先,对于更小,更集中的论坛,学习好作者嵌入更难,所以简单的先验更可靠。 其次,在完整的数据集上,有更多的例子,以及作者和他们的文本之间更复杂的交互,因此嵌入的附加表征能力证明是合理的。
定性比较
表3提供了来自不同模型的示例预测。 每个示例取自跑步的保持集,其中所有三个模型都在相同的训练集上训练,并且在相同的保持集上进行评估。
对于讽刺和非讽刺的评论,作者建模可能有助于消除歧义。 例如,在示例1和示例2中,省略作者建模导致不正确的预测,但仅包括作者单独使用讽刺的频率足以将预测从不正确变为正确。
在例如示例3和4的情况下,贝叶斯先验不足,包括作者个性化讽刺模式的模型更强大。 也就是说,更复杂的嵌入模型可能会失败,如示例5所示,其中较简单的模型进行正确的预测,但事实并非如此。 这似乎发生在非讽刺的例子中,其中嵌入模型偶尔会强烈影响预测的讽刺概率。 显然,作者有更多个性化的讽刺模式而不是非讽刺模式。
根据贝叶斯和多维嵌入模型的相对表现来判断(表2),当有更多的训练数据可用时,多维模型比贝叶斯模型失去更多的分歧。 但是,如果没有,它就会过度拟合,以至于它对作者讽刺模式的预测不如贝叶斯方法有用。 这表明了未来的探索方向:最有用的模型可能是那些具有更多可用示例的作者的复杂性扩展,以及对于那些拥有更少示例的人来说缩小的模型。
本文评估了两种数据驱动的方法,用于模拟作者在讽刺检测中的作用。 两者都证明有效。 如Hazarika等人所示。 (2018),类似的技术可以扩展到上下文的其他方面。 虽然我们的实验不支持添加这些表示,但我们认为听众也依赖于它们,因此这里额外的计算建模工作可能会证明是富有成效的。