Sarcasm detection论文解析 |使用 BERT 进行中间任务迁移学习的刺检测
论文地址
论文地址:https://www.mdpi.com/2227-7390/10/5/844#/
github:edosavini/TransferBertSarcasm (github.com)
论文首页
笔记框架
使用 BERT 进行中间任务迁移学习的讽刺检测
📅出版年份:2022
📖出版期刊:Mathematics
📈影响因子:2.4
🧑文章作者:Savini Edoardo,Caragea Cornelia
📍 期刊分区:Number: 5 Publisher: Multidisciplinary Digital Publishing Institute JCR分区: Q1 中科院分区升级版: 数学3区 中科院分区基础版: 数学2区 影响因子: 2.4 5年影响因子: 2.3 南农高质量: A
🔎 摘要:
讽刺检测在自然语言处理中发挥着重要作用,因为它可以影响许多应用程序的性能,包括情感分析、意见挖掘和立场检测。尽管讽刺检测取得了实质性进展,但研究结果分散在数据集和研究中。在本文中,我们调查了当前的最新技术,并提出了基于 BERT 预训练语言模型的讽刺检测的强大基线。我们通过在目标任务上微调之前对相关中间任务进行微调来进一步改进我们的 BERT 模型。具体来说,依靠讽刺与(隐含的负面)情绪和情感之间的相关性,我们探索了一种迁移学习(Transfer Learning)框架,该框架使用情感分类和情感检测作为单独的中间任务,将知识注入讽刺检测的目标任务中。在具有不同特征的三个数据集上的实验结果表明,基于 BERT 的模型优于许多先前的模型。
🌐 研究目的:
我们的目的是分析 BERT 和使用 BERT 的中间任务迁移学习在讽刺检测任务上的有效性,并找到一个能够准确预测从论坛到微博等多种社交平台中讽刺的神经框架。
📰 研究背景:
尽管讽刺检测取得了实质性进展,但研究结果分散在数据集和研究中。
🔬 研究方法:
基于 BERT 预训练语言模型,探索了一种迁移学习(Transfer Learning)框架
🔩 模型架构:
BERT预训练语言模型
我们在我们的目标任务(即讽刺检测)上对 HuggingFace Transformers 库 [36] 中的 BERT bert-base-uncased 进行了微调,在顶部添加了一个线性层作为句子分类器,该分类器使用与 [ 相对应的最终隐藏状态CLS] 令牌。
中级任务迁移学习

我们提议从情感分类和情感检测这两个相关的中间任务中探索迁移学习,以了解我们能否进一步提高 BERT 模型在讽刺语检测目标任务上的性能。
-
目标任务
-
中间任务
标准神经网络模型
BiLSTM
使用隐藏维度为 100 的单层 BiLSTM [40] 来获取每个 token 的特征,然后对特征进行均值池化,然后是全连接层和 softmax。
我们注意到,我们的数据集之前的工作中通常使用 CNN。当之前的工作中不可用时,我们使用了[41]中的超参数设置。
CNN
我们注意到,我们的数据集之前的工作中通常使用 CNN。当之前的工作中不可用时,我们使用了[41]中的超参数设置。
🧪 实验:
📇 数据集:
数据集来自互联网争论语料库 (IAC) [11]、Reddit [18] 和 Twitter [7]。
EmoNet
EmoNet [38] 是一个 Twitter 数据集,由使用 Plutchik-24 情感集的远程监督自动注释的推文组成。
Sarcasm V2 Corpus.
对于我们的方法,我们将 Gen 数据集随机分为 90% 的训练集和 10% 的测试集。然后,我们将临时训练集分为 80% 训练集和 20% 验证集。
五折交叉验证

Reddit Corpus (SARC)
将原始训练集分为 80% 训练和 20% 验证。

SARCTwitter
我们决定将数据集随机分割五次,保持讽刺和非讽刺推文之间的比例不变(与原始集中相同)。
我们将最初的 994 条推文分为 90% 的训练集和 10% 的测试集。然后,我们再次将获得的训练集分为 80% 训练和 20% 验证,始终保持标签之间的比例不变(见表 9)

📏 评估指标:
📉 优化器&超参数:
批量大小16
AdaGrad 优化器 [44],将梯度裁剪阈值设置为 5.0。
一旦验证集上的平均 F1 在一些连续的 epoch 后停止增长(耐心设置为 5),训练就会停止(对于目标任务和中间任务)
💻 实验设备:
我们使用 AllenNLP 库 [42] 和 HuggingFace Transformers 库 [36] 来实现我们的模型。
们在 PyTorch 环境中使用 AWS 平台、EC2 实例(Ubuntu 深度学习 AMI)和一个 GPU。
📊 消融实验:
📋 实验结果:
Sarcasm V2 Corpus.
表 10 中的结果表明,我们所有的实验都优于 Sarcasm V2 语料库的现有最新技术。
除 TransferEmoNet 之外的传输模型都达到了类似的结果。

Reddit Corpus (SARC)
该表分为两部分:第一部分包含在不使用任何附加信息的情况下对句子本身进行的所有实验,而第二部分包含利用作者的个性特征的模型的性能评论。

我们可以注意到,在表的第一部分中,我们所有的模型都比所有其他先前的工作表现至少 10%,证实了通过预先训练的语言模型用于讽刺预测任务捕获语义的功效。
然而,来自 EmoNet 的情感信息略微提高了简单 BERT 分类的效率,使我们的 TransferEmoNetSent 模型成为 SARC 数据集上新的最先进的性能。
SARCTwitter
我们所有的模型都比之前最先进的模型至少高出 5%。

这些结果证实了之前实验的模式,证明了讽刺和情绪之间的相关性,并且还表明极化的情绪信息可以帮助主要/目标任务从情绪电荷更明确的数据集中进行转移,例如注释的 EmoNet使用词汇表面模式进行远程监督[38]。
🚩 研究结论:
我们展示了讽刺性言论本身是如何自动识别并具有良好的性能,甚至无需进一步使用上下文信息。
我们还探索了一种迁移学习框架,以利用讽刺与文本中传达的情绪或情感之间的相关性,并发现对相关任务进行中间任务训练可以提高基本 BERT 模型的有效性。
我们在三个数据集上建立了新的最先进的讽刺检测结果。具体来说,与之前的讽刺检测工作相比,基于 BERT 的模型(有或没有中间任务迁移学习)的性能提升非常显着,高达 11.53%。
我们发现,仅使用消息内容的 BERT 模型比利用作者历史中附加信息(在之前的工作中编码为个性特征)的模型表现更好。我们发现这个结果非常显着。
此外,如果目标任务(讽刺检测)的数据集大小很小,那么中间任务迁移学习(以情感作为中间任务)可以进一步提高性能。
📝 总结
💡 创新点:
依靠讽刺与(隐含的负面)情绪和情感之间的相关性,我们探索了一种迁移学习框架,该框架使用情感分类和情感检测作为单独的中间任务,将知识注入讽刺检测的目标任务中。
我们基于 BERT 预训练语言模型为此任务建立了强大的基线。我们的分析基于对三个不同大小(从小数据集到大数据集)的讽刺数据集进行的实验结果。
受现有讽刺研究 [6] 的启发,我们使用不同的中间任务(从一般推文中进行细粒度的情绪检测,通过将上述数据集中的情绪极化为积极和消极情绪来进行粗粒度的情绪极性,以及电影评论的情绪分类)。
对于我们的方法,我们将 Gen 数据集随机分为 90% 的训练集和 10% 的测试集。然后,我们将临时训练集分为 80% 训练集和 20% 验证集。
⚠ 局限性:
🔧 改进方法:
🖍️ 知识补充:
BERT 预训练语言模型 [16] 突破了许多自然语言理解任务的性能界限。
TransferEmoNet 的较低性能可以通过 IAC 中稀缺的情感分布来解释。
事实上,讽刺V2的评论主要是对辩论的回应,其中恐惧和期待等情绪很少见。
像 Reddit 这样的中间任务的社交平台在内容、表现力和话题上都有很大的不同。例如,SARC 评论的长度可以从 3/4 个单词到数百个单词不等,而 IMDB 电影评论通常更长,由多个句子组成,而 EmoNet 推文通常仅由一两个句子组成。此外,在 EmoNet 上,情绪模式更加明显,因为人们更倾向于在 Twitter 上描述自己的情绪状态。
在 SARC 中,可能也是因为所涵盖的主题(例如政治、电子游戏),情感模式更加隐晦且难以察觉。
此外,如果目标任务(讽刺检测)的数据集大小很小,那么中间任务迁移学习(以情感作为中间任务)可以进一步提高性能。
💬 讨论:
相关文章:
Sarcasm detection论文解析 |使用 BERT 进行中间任务迁移学习的刺检测
论文地址 论文地址:https://www.mdpi.com/2227-7390/10/5/844#/ github:edosavini/TransferBertSarcasm (github.com) 论文首页 笔记框架 使用 BERT 进行中间任务迁移学习的讽刺检测 📅出版年份:2022 📖出版期刊:Mathematics &…...
docker系列9:容器卷挂载(下)
传送门 docker系列1:docker安装 docker系列2:阿里云镜像加速器 docker系列3:docker镜像基本命令 docker系列4:docker容器基本命令 docker系列5:docker安装nginx docker系列6:docker安装redis docker系…...
QT ERROR: Unknown module(s) in QT: xlsx怎么办
现象描述 QT编译c代码的时候,报这种QT ERROR: Unknown module(s) in QT: xlsx,应该如何解决? 这里,我简单记录一下自己的解决问题过程。有可能,对遇到同样的问题的你,也有所帮助 第一步 检查perl是否安装…...
npm install 卡在reify:rxjs: timing reifyNode的解决办法
今天要逆向跑一个electron,但是npm install一直卡在 reify:element-plus: timing reifyNode:node_modules/lodash Completed in 6664ms这里一动不动,一番研究之后发现可能跟用的镜像有关系,我原本是官方镜像,总感觉第三方镜像有一…...
VScode 无法连接云服务器
试了很多方法,比如更换VScode版本,卸载重装,删除配置文件 重启电脑,都无法成功。最后重置电脑后才连接上,但是重启服务器后又出现该问题。 方法一:修改环境 方法二:把vscode卸载干净重下...
Kafka 面试题(二)
1. 简述Kafka 的工作流程 ? Kafka的工作流程涉及多个关键组件和步骤,确保了消息的可靠传输和处理。以下是Kafka工作流程的简要概述: 生产者发布消息:生产者(Producer)是Kafka工作流程的起点,它…...
Spring Cloud Kubernetes 本地开发环境调试
一、Spring Cloud Kubernetes 本地开发环境调试 上面文章使用 Spring Cloud Kubernetes 在 k8s 环境中实现了服务注册发现、服务动态配置,但是需要放在 k8s 环境中才能正常使用,在本地开发环境中可能没有 k8s 环境,如何本地开发调试呢&#…...
基于二维CS-SCHT变换和扩频方法的彩色图像水印嵌入和提取算法matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ............................................................. % figure; % subplot(121);…...
设计模式——行为型模式——策略模式(含实际业务使用示例、可拷贝直接运行)
目录 策略模式 定义 组成和UML图 代码示例 实际业务场景下策略模式的使用 策略模式优缺点 使用场景 JDK中使用策略模式示例 参考文档 策略模式 定义 策略模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化…...
Rust:foo(x)、foo(x),还是foo(x.clone())?
一、一个实际问题 用一个线性代数库的求逆矩阵函数时,让我很不爽,我必须按照下面的形式写调用代码: ...if let Some(inv_mat) try_inverse(mat.clone()) {...}...注意 try_inverse 函数的参数传递形式,函数参数是 mat.clone() 而…...
「JavaEE」多线程案例1:单例模式阻塞队列
🎇个人主页:Ice_Sugar_7 🎇所属专栏:JavaEE 🎇欢迎点赞收藏加关注哦! 多线程案例分析 🍉单例模式🍌饿汉模式🍌懒汉模式🍌指令重排序 🍉阻塞队列&a…...
pdf2htmlEX:pdf 转 html,医学指南精细化处理第一步
pdf2htmlEX:pdf 转 html,医学指南精细化处理第一步 单文件转换多文件转换 代码:https://github.com/coolwanglu/pdf2htmlEX 拉取pdf2htmlEX 的 Docker: docker pull bwits/pdf2htmlex # 拉取 bwits/pdf2htmlex不用进入容器&…...
【webrtc】MessageHandler 6: 基于线程的消息处理:StunRequest实现包发送和超时重传
G:\CDN\rtcCli\m98\src\p2p\base\stun_request.cc使用OnMessage 实现包的发送和包的超时重传StunRequest 一个StunRequest 代表是一个独立的请求的发送STUN消息 要不是发送前构造好的,要不就是按照需要构建的使用StunRequestManager: 每一个STUNRequest 携带一个交互id 写入m…...
《Python编程从入门到实践》day22
# 昨日知识点回顾 方法重构、驾驶飞船左右移动、全屏显示 飞船不移动解决,问题出在移动变量x更新 # Ship.pysnipdef update(self):"""根据移动标志调整飞船的位置"""# 更新飞船而不是rect对象的x值# 如果飞船右移的标志和飞船外接…...
介绍 ffmpeg.dll 文件以及ffmpeg.dll丢失怎么办的五种修复方法
ffmpeg.dll 是一个动态链接库文件,属于 FFmpeg运行库。它在计算机上扮演着非常重要的角色,因为它提供了许多应用程序和操作系统所需的功能和组件。当 ffmpeg.dll 文件丢失或损坏时,可能会导致程序无法正常运行,甚至系统崩溃。下面…...
AI换脸原理(6)——人脸分割介绍
一、介绍 人脸分割是计算机视觉和图像处理领域的一项重要任务,它主要涉及到将图像中的人脸区域从背景或其他非人脸区域中分离出来。这一技术具有广泛的应用场景,如人脸识别、图像编辑、虚拟背景替换等。 在计算机视觉(CV)领域,经典的分割技术可以主要划分为三类:语义分…...
【C++并发编程】(二)线程的创建、分离和连接
文章目录 (二)线程的创建、分离和链接创建线程:示例线程的分离(detach)和连接(join) (二)线程的创建、分离和链接 创建线程:示例 线程(Thread&a…...
利用生成式AI重新构想ITSM的未来
对注入 AI 的生成式 ITSM 的需求,在 2023 年 Gartner AI 炒作周期中,生成式 AI 达到预期值达到顶峰后,三分之二的企业已经将生成式 AI 集成到其流程中。 你问为什么这种追求?在预定义算法的驱动下,IT 服务交付和管理中…...
完美解决AttributeError: module ‘backend_interagg‘ has no attribute ‘FigureCanvas‘
遇到这种错误通常是因为matplotlib的后端配置问题。在某些环境中,尤其是在某些特定的IDE或Jupyter Notebook环境中,可能会因为后端配置不正确而导致错误。错误信息提示 module backend_interagg has no attribute FigureCanvas 意味着当前matplotlib的后…...
CMakeLists.txt语法规则:条件判断中表达式说明一
一. 简介 前面学习了 CMakeLists.txt语法中的 部分常用命令,常量变量,双引号的使用。 前面一篇文章也简单了解了 CMakeLists.txt语法中的条件判断,文章如下: CMakeLists.txt语法规则:条件判断说明一-CSDN博客 本文…...
[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...
Spring AOP代理对象生成原理
代理对象生成的关键类是【AnnotationAwareAspectJAutoProxyCreator】,这个类继承了【BeanPostProcessor】是一个后置处理器 在bean对象生命周期中初始化时执行【org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization】方法时…...
用递归算法解锁「子集」问题 —— LeetCode 78题解析
文章目录 一、题目介绍二、递归思路详解:从决策树开始理解三、解法一:二叉决策树 DFS四、解法二:组合式回溯写法(推荐)五、解法对比 递归算法是编程中一种非常强大且常见的思想,它能够优雅地解决很多复杂的…...
Java后端检查空条件查询
通过抛出运行异常:throw new RuntimeException("请输入查询条件!");BranchWarehouseServiceImpl.java // 查询试剂交易(入库/出库)记录Overridepublic List<BranchWarehouseTransactions> queryForReagent(Branch…...
欢乐熊大话蓝牙知识17:多连接 BLE 怎么设计服务不会乱?分层思维来救场!
多连接 BLE 怎么设计服务不会乱?分层思维来救场! 作者按: 你是不是也遇到过 BLE 多连接时,调试现场像网吧“掉线风暴”? 温度传感器连上了,心率带丢了;一边 OTA 更新,一边通知卡壳。…...
比较数据迁移后MySQL数据库和ClickHouse数据仓库中的表
设计一个MySQL数据库和Clickhouse数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
小白的进阶之路系列之十四----人工智能从初步到精通pytorch综合运用的讲解第七部分
通过示例学习PyTorch 本教程通过独立的示例介绍PyTorch的基本概念。 PyTorch的核心提供了两个主要特性: 一个n维张量,类似于numpy,但可以在gpu上运行 用于构建和训练神经网络的自动微分 我们将使用一个三阶多项式来拟合问题 y = s i n ( x ) y=sin(x) y=sin(x),作为我们的…...


