Sarcasm detection论文解析 |用于微博讽刺检测的上下文增强卷积神经网络

本文主要是介绍Sarcasm detection论文解析 |用于微博讽刺检测的上下文增强卷积神经网络,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

论文地址

论文地址:Context-augmented convolutional neural networks for twitter sarcasm detection - ScienceDirect

论文首页 

笔记大纲

用于微博讽刺检测的上下文增强卷积神经网络


📅出版年份:2018
📖出版期刊:Neurocomputing
📈影响因子:2
🧑文章作者:Ren Yafeng,Ji Donghong,Ren Han
📍 期刊分区:

JCR分区: Q2 中科院分区升级版: 计算机科学2区 中科院分区基础版: 工程技术2区 影响因子: 2.0 5年影响因子: 6.0 EI: 是 CCF: C 南农高质量: B


🔎摘要:

近年来,有关 Twitter 讽刺检测的研究越来越多。然而,现有研究有两个局限性。首先,现有工作主要使用离散模型,需要大量人工特征,而获取人工特征的成本可能很高。其次,现有工作大多侧重于根据推文本身进行特征工程,而没有利用目标推文的上下文信息。然而,目标推文的上下文信息(如对话或目标推文作者的历史推文)可能是可用的。为了解决上述两个问题,我们探索了用于微博讽刺检测的神经网络模型。在卷积神经网络的基础上,我们为这项任务提出了两种不同的语境增强神经网络模型。数据集上的结果表明,与最先进的离散模型相比,神经模型可以获得更好的性能。同时,所提出的语境增强神经模型能有效地从语境信息中解码讽刺线索,并相对提高了检测性能。


🌐研究目的:

探索用于微博讽刺检测的神经网络模型。

📰研究背景:

随着社交媒体的发展,twitter 已成为最受欢迎的微博服务之一。因此,基于 twitter 数据的情感分析和数据挖掘已成为一个热门研究课题 [1-3]。twitter 情感分析的目的是自动分析推文的极性。然而,twitter 中的讽刺性话语会将正面或负面话语的极性转化为相反的极性。这在一定程度上会影响情感分析任务的性能。因此,将讽刺性语句与正负极性语句区分开来非常重要。

然而,现有研究有两个局限性。首先,现有工作主要使用离散模型,需要大量人工特征,而获取人工特征的成本可能很高。其次,现有工作大多侧重于根据推文本身进行特征工程,而没有利用目标推文的上下文信息。然而,目标推文的上下文信息(如对话或目标推文作者的历史推文)可能是可用的。

🔬研究方法:


🔩模型架构:

CANN-KEY 模型-历史

在我们提出的 CANN-KEY 模型中,局部子网络由五层组成,分别称为输入层、卷积层、池化层、非线性组合隐藏层和输出层。

  • 左侧部分是本地子网络,使用目标推文的信息。

  • 右侧部分是上下文子网络,使用上下文推文的信息。 对于上下文子网络,我们将分别从基于对话的上下文和基于历史的上下文中自动提取特征。

本地子网络
  • 在输入层中,每个节点表示一条推文中的一个单词,节点的顺序按照原来的顺序排列,单词利用词嵌入表示。

  • 卷积层通常被用来捕捉词性 n-grams 信息。本文将卷积操作的窗口大小设为 3,并使用 tanh 作为激活函数。

  • 池化层,对于每条推文,在卷积层之后会得到不同数量的向量。我们利用池化技术来合并卷积层中不同数量的特征,形成一个具有固定维度的向量。 本文使用了所有三种汇集技术来全面捕捉讽刺证据,并将它们串联起来作为一个新的隐藏层 h2。

  • 隐藏层使用了一个非线性隐藏层来自动组合这些汇集特征。

  • 输出层用于根据最后一层隐藏层的特征对所有类别标签进行评分。

上下文子网络
  • 基于历史的上下文,然后将所有上下文推文视为一个文档,根据其 tf-idf 值对上下文推文中的所有单词进行排序。其次,我们选择最重要的关键词(tf-idf 值最高的关键词)作为该子网络的输入。

  • 输入层的每个词都是由词嵌入来表示。

  • 池化层依旧采用三种池化串联的方式。

  • 非线性隐藏层会自动结合目标推文和上下文推文的特征。

  • 与本地子网络不同,上下文子网络不使用任何卷积函数,因为上下文信息是一组突出词,不包含 n-grams 信息。

CANN-ALL 模型-对话

CANN-ALL 模型由六层组成,分别称为输入层、卷积层、池化层、非线性组合层、softmax 层和输出层。

  • 输入层包括三条推文(按时间顺序排列),最后一条推文是目标推文。

  • 这里的输入层、卷积层和池化层与第一个模型 CANN-KEY 的局部子网络相似。

  • 非线性组合层和 softmax 层,这两个层与 CANN- KEY 模型不同。

训练目标是最小化一组训练上的交叉熵损失,再加上一个 l2- 正则化项。按照之前的工作,在线 AdaGrad 被用来最小化目标函数。


🧪实验:

📇 数据集:

Wang 等人构建的数据集-Table1

  • 基本数据集由 1500 条推文组成,其中包含所有目标推文。

  • 基于历史的上下文包含 6774 条推文

  • 基于对话的上下文只包含 453 条推文

基于对话的上下文数量远远少于基于历史的上下文数量。请注意,基本数据集中的所有推文都有类别标签,而上下文信息中的所有推文都没有类别标签。

📏评估指标:

采用了十倍交叉验证法。

基本数据集被随机分成十等份,其中九份用于训练,第十份用于测试。

📉 优化器&超参数:

有五个超参数,包括两个部分。

  • 第一部分是网络结构参数,包括词向量的维数 D、卷积层的输出维数 C 和非线性组合层的输出维数 H;

  • 第二部分是训练参数,包括 AdaGrad 的 l2 规则化系数 λ 和初始学习率 α。

📊 消融实验:

  • 在基于对话的语境中,模型 MODEL-ALL优于模型 MODEL-KEY。这表明在基于对话的语境中,模型 MODEL-ALL 在捕捉讽刺的微妙线索方面具有更强的能力。

  • 在基于历史的语境中,模型 MODEL-KEY 的表现要优于模型 MODEL-ALL。

其中一个可能的原因是模型 MODEL-ALL 只将两条上下文推文作为输入,而模型 MODEL-KEY 则将更多的上下文推文作为输入。

📋 实验结果:

根据模型 MODEL-KEY(local)的结果,仅使用目标推文,神经模型就获得了 56.37% 的宏 F 1分数,高于最佳离散模型 LMS 的 55.31% 宏 F 分数。

我们的研究表明,将给定推文的上下文推文建模为一个集合,使用神经池函数自动从推文中提取最有用的特征,可以显著提高性能。


🚩研究结论:

与之前的研究相比,我们的神经网络模型将推文内容本身的特征和上下文特征以单词向量的形式整合到了一个模型中。实验结果表明,与最先进的离散模型和基于上下文的模型相比,我们提出的上下文增强神经网络模型具有更好的性能,证明了上下文增强神经网络模型在这项任务中的有效性。


📝总结

💡创新点:

  • 在卷积神经网络的基础上,我们为这项任务提出了两种不同的语境增强神经网络模型,以从语境信息中充分捕捉讽刺线索。

  • 目标推文的历史上下文数量相对较多,并且存在一些冗余信息,因此在建立用于讽刺检测的上下文增强神经网络模型时,我们只考虑部分关键词。

  • 第一个模型是通过整合关键上下文信息而建立的上下文增强神经网络模型(本文命名为 CANN-KEY)。其中池化层使用了所有三种汇集技术来全面捕捉讽刺证据。

  • 第二个模型被称为整合了所有上下文信息的上下文增强神经网络模型(本文命名为 CANN-ALL)。

🖍️知识补充:

  • CNN、RNN 和 LSTM 通常用于表示短语、句子和文档的语义构成。RNN 和 LSTM 更常用于对话语结构建模。

  • 未知词是使用预训练词嵌入的平均向量来表示的

这篇关于Sarcasm detection论文解析 |用于微博讽刺检测的上下文增强卷积神经网络的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/951187

相关文章

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

Golang HashMap实现原理解析

《GolangHashMap实现原理解析》HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持高效的插入、查找和删除操作,:本文主要介绍GolangH... 目录HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

Python利用ElementTree实现快速解析XML文件

《Python利用ElementTree实现快速解析XML文件》ElementTree是Python标准库的一部分,而且是Python标准库中用于解析和操作XML数据的模块,下面小编就来和大家详细讲讲... 目录一、XML文件解析到底有多重要二、ElementTree快速入门1. 加载XML的两种方式2.

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组

java解析jwt中的payload的用法

《java解析jwt中的payload的用法》:本文主要介绍java解析jwt中的payload的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java解析jwt中的payload1. 使用 jjwt 库步骤 1:添加依赖步骤 2:解析 JWT2. 使用 N

Python中__init__方法使用的深度解析

《Python中__init__方法使用的深度解析》在Python的面向对象编程(OOP)体系中,__init__方法如同建造房屋时的奠基仪式——它定义了对象诞生时的初始状态,下面我们就来深入了解下_... 目录一、__init__的基因图谱二、初始化过程的魔法时刻继承链中的初始化顺序self参数的奥秘默认

Java 正则表达式URL 匹配与源码全解析

《Java正则表达式URL匹配与源码全解析》在Web应用开发中,我们经常需要对URL进行格式验证,今天我们结合Java的Pattern和Matcher类,深入理解正则表达式在实际应用中... 目录1.正则表达式分解:2. 添加域名匹配 (2)3. 添加路径和查询参数匹配 (3) 4. 最终优化版本5.设计思

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

Java字符串处理全解析(String、StringBuilder与StringBuffer)

《Java字符串处理全解析(String、StringBuilder与StringBuffer)》:本文主要介绍Java字符串处理全解析(String、StringBuilder与StringBu... 目录Java字符串处理全解析:String、StringBuilder与StringBuffer一、St