ACL 2024:交叉领域情感分析——论文阅读笔记

news/2024/9/18 20:54:14/ 标签: 笔记, 论文阅读

前言

        阅读了一篇ABSA的论文,在这里写下自己的一些理解小笔记,可能有点小乱,原文在这下面:

        论文链接:Refining and Synthesis: A Simple yet Effective Data Augmentation Framework for Cross-Domain Aspect-based Sentiment Analysis - ACL Anthology

         中文文章链接:论文速递丨ACL 2024:交叉领域情感分析 (qq.com)


1、引言         

        大多数ABSA模型依赖于同一领域的标注数据,导致在标注数据不足的情况下,模型性能受限。为解决这一问题,部分研究尝试通过领域迁移模型将源领域的知识转移到目标领域,但仍存在标签质量低和生成数据单调等问题

  •  图(a) 展示了在AESC任务中,源领域(笔记本)和目标领域(餐馆)之间的迁移过程中的错误传播问题。由于源领域中的词汇"pad"在目标领域中具有不同的含义,模型错误地将目标领域中的"pad"标记为负面情感,导致生成的句子出现错误。这表明现有方法在迁移过程中可能会传播不准确的标签。
  • 图(b) 展示了在ATSE任务中,目标领域(餐馆)的文本虽然生成了正确的伪标签,但生成的句子模式单调,缺乏多样性。两个生成的句子"The pizza is good"虽然正确,但重复且表达形式不够丰富,说明传统数据增强方法在生成多样化数据方面存在局限。

        为此,本文提出了"Refining and Synthesis Data Augmentation (RSDA)"框架,通过自然语言推理(NLI)过滤数据并增强多样性,从而提高ABSA模型的鲁棒性和泛化能力。测试表明该框架在跨领域实验中表现出色。

        简而言之,本文旨在通过RSDA框架进行数据知识迁移。也来说,RSDA框架生成目标领域的ABSA数据,并在此基础上训练模型,克服了一个模型只能应用于特定领域数据集的问题。通过该框架,源领域的知识可以更好地迁移到目标领域,解决了标注数据不足的问题,提高了模型在不同领域的泛化能力。

2、方法

        RSDA 框架主要包括两个步骤 :数据生成和质量控制、数据多样性增强。

2.1 数据生成和质量控制

2.1.1 数据生成

        ①采用之前(Deng 等人,2023年)的工作方法,同时训练标签提取模型和文本生成模型。

        ②利用标签提取模型,从目标域句子 中提取伪标签 l'

        ③利用样本生成模型,基于伪标签 l'生成一个新的样本t'

        ④经过以上数据生成后,得到一个新的目标域标注数据:

图片

2.1.2.数据质量控制

        生成模型更倾向生成与源域相一致的文本,提取的伪标签所带来的噪声也会传播到生成的文本样本中,从而导致生成的数据质量并不是很好。

        面对以上问题,本文采用了自然语言推理(NLI)过滤器来控制生成数据的质量。

        将原始目标域文本 作为前提,将新生成的文本 t' 作为假设。NLI 过滤器可以确定一对前提和假设之间的关系,表述为:

图片

        其中y可以是蕴含、中立以及矛盾,当 和 t' 之间出现矛盾关系时,表明生成的文本难以从原文中推断出来,应予以过滤;在质量控制之后,一些生成的问题样本将会被去除,从而保留得到高质量的标记数据。

图片

  • 图(a)——t的含义被改变,t和t'已经出现了矛盾。NLI过滤器有效识别并过滤这些例子。
  •  图(b)——显示了目标域中未标记的文本与新生成的文本之间的隐含关系,应保留这些示例。

        简而言之,该小节是通过NLI(自然语言推理)过滤器来筛选目标域中,生成的句子是否与原始句子的情感和方面一致。

 2.2 数据多样性增强

        然而,通过NLI 过滤器过滤了模型生成的目标域标签样本有两个不足的地方:

        ①由于训练资源的限制,生成模型往往会生成简单或重复的句子。

        ②虽然使用 NLI 过滤器可以提高生成数据的质量,但它会过滤掉部分样本,从而牺牲文本表达和模式多样性。 

        为了解决以上问题,作者从信息密度和表达多样性两个维度对数据进行多样化处理。

2.2.1 以组合为基础的多样性强化

        ①目标域标签的向量化:使用MiniLM-L6对目标域标记数据的文本进行向量编码,表示为其语义特征。

        ②K-means聚类:对这些向量表示进行K-means聚类,将标签分为不同的簇,每个簇代表一组相似的标签,计算公式如下:

        ③计算语义相似度:在每个簇中,计算文本对之间的语义相似度,使用余弦相似度来衡量每对文本的相似度,计算公式如下:

        ④选择低相似度文本对:在每个簇中,选择语义相似度最低的两个标签文本。

        ⑤合并标签和文本:对这两个标签的文本进行合并,生成一个新的合成文本。

        ⑥生成新文本:将合并后的标签输入生成模型,生成新的、更平滑的文本,保证生成的文本属于目标领域并保持多样性。 

举例如下:在分好的其中一个簇中,选择语义相似度最低的两个标签文本,分别为“The fried fish is amazing.”与“The salad is the best.”,将其合并为一个新的文本“The fried fish is amazing the salad is the best.”,然后通过生成模型Mg生成一个更顺畅自然的句子“”The fried fish is amazing and the salad is the best I've had in a very long time.”。

        通过上述方法,增加新生成数据的多样性,提升模型的泛化能力和鲁棒性。 

         在这里,新的文本仍然属于同一个目标领域

2.2.2 以转义为基础的多样性强化

(1)标签变体转义

        ①将一个转义模型应用于原始目标域无标签文本t生成一段新的转述文本t'

        ②使用提取模型Me提取伪标签l'

        ③生成模型Mg将根据伪标签l'生成一个新句子t''

        ▲转义工具是直接应用于原始文本的,所有单词都可能被改写,因此提取的伪标签也可能与原始标签不同。这种方法不仅与标签不变的转述过程一致,而且还增强了的多样性和表达能力。

(2)标签不变转义

        ①利用提示鼓励转义工具在将文本t'改写为t''时加入标签l'

        ②使用后处理方法确保转述文本t''包含标签l'

        ▲这样可以避免简单的句子结构,并且尽量保持目标域标签样本中的标签不变,同时转换其上下文,从而合成出更多样化的数据。

        简而言之,就是改变句子,一个是改变原句子的同时标签也变了、一个是改变原句子但是不改变标签。

3、示例

        到这里,可能有的小伙伴还是有点懵,这跟跨领域有什么关系,下面我给出一个例子就可以清楚了。

        首先要清楚我们的源域是有标签的,目标域是没有标签的。我们将源域定义为“餐厅评论”,目标域为“蛞蝓情感评论”,且目标域没有标注的数据。我们希望通过RSDA框架,在没有目标域标签的情况下,生成新的带有情感标签的目标域文本。

(1)源域文本与模型训练

源域文本(餐厅评论):
1. “这家餐厅的服务非常糟糕,食物也很差。”
   Label: <neg> 服务 <opinion> 糟糕
2. “食物非常好吃,服务也很周到。”
   Label: <pos> 食物 <opinion> 好吃

        通过源域的数据,模型学会了如何将评论中的具体名词(如“服务”、“食物”)与情感表达(如“糟糕”、“好吃”)进行关联。模型知道“糟糕”代表负面情感,“好吃”代表正面情感。

(2)跨域知识迁移

        在目标域“蛞蝓情感评论”中,虽然内容与餐厅评论不同,但模型通过源域学习的情感模式,可以迁移到目标域的情感分析中。模型不再关心“服务”或“食物”这些具体名词,而是基于情感词汇的正负面特性来进行分类。

目标域文本(未标注的蛞蝓评论):

“这只蛞蝓滑溜溜的,看起来很恶心。”

        此时,模型通过源域学习到的知识,将“恶心”识别为与“糟糕”相似的负面情感词。

(3)RSDA框架的应用

Ⅰ. 数据生成与质量控制

i)伪标签生成:
  模型通过识别“恶心”这个词,生成伪标签: <neg> 外观 <opinion> 恶心

ii)新文本生成:
  基于伪标签,模型生成新文本:  “蛞蝓的外观非常恶心,感觉让人不舒服。”
iii)NLI质量控制:
  通过NLI(自然语言推理)模型,确保生成的文本与原始文本保持一致,并过滤掉那些不符合逻辑的文本。如果生成的文本出现如“蛞蝓的外观很美丽”(矛盾的情感),则会被过滤。

Ⅱ. 数据多样性增强

i)组合标签增强:
  在目标域中,通过组合不同的伪标签增强数据多样性。例如,组合两个伪标签:
  <neg> 外观 <opinion> 恶心
  <neg> 动作 <opinion> 缓慢
  模型生成的新文本可能是:  “蛞蝓的外观真让人恶心,而且它爬得非常慢。”

ii)改写增强:
  模型还会对生成的文本进行改写,以丰富表达:
  - 原始生成文本:“蛞蝓的外观非常恶心,感觉让人不舒服。”
  - 改写后的文本:“看到蛞蝓滑溜溜的外观真是让人恶心。”

       此时就有了新的数据:

        -句子:看到蛞蝓滑溜溜的外观真是让人恶心。

        -标签:<neg> 外观 <opinion> 恶心          <neg> 动作 <opinion> 缓慢

         也就是说,这篇论文的完整逻辑是:利用源域标识好的方面-情感对,让没有标签的目标域通过数据生成和质量控制、数据多样性增强,得到新的跟目标域原来的句子相差不大但是丰富了的、并且带有方面-情感对的新数据,从而实现了利用一个领域的ABSA进行知识迁移到另一个领域的ABSA。

4、实验

       实验部分其实就是证明了这个方法的有效性跟优越性,具体看一下原文就可以了。


http://www.ppmy.cn/news/1525603.html

相关文章

vue2响应式系统是如何实现的(手写)

引言 喜欢请点赞&#xff0c;支持点在看。 关注牛马圈&#xff0c;干货不间断。 忆往昔 回头看&#xff0c;已经使用vue2多年&#xff0c;虽然也掌握了其他几种前端框架&#xff0c;但对vue2是真爱。 核心概念 Object.defineProperty Vue 2的响应式系统核心是使用了Object.de…

深入理解java并发编程之aqs框架

跟synchronized 相比较&#xff0c;可重入锁ReentrankLock其实原理有什么不同&#xff1f; 所得基本原理是为了达到一个目的&#xff1b;就是让所有线程都能看到某种标记。synchronized通过在对象头中设置标记实现了这一目的&#xff0c;是一种JVM原生的锁实现方式。而Reentran…

​经​纬​恒​润​二​面​​三​七​互​娱​一​面​​元​象​二​面​

1. 请尽可能详细地说明&#xff0c;进程和线程的区别&#xff0c;分别有哪些应用场景&#xff1f;进程间如何通信&#xff1f;线程间如何通信&#xff1f;你的回答中不要写出示例代码。 进程和线程是操作系统中的两个基本概念&#xff0c;它们在计算机系统中扮演着不同的角色&…

《数据结构(C语言版)第二版》第八章-排序(8.5-归并排序、8.6基数排序、8.7 外部排序)

8.5 归并排序 (Merging Sort) 【基本思想】 将两个或两个以上的有序表合并成一个有序表的过程。 将两个有序表合并成一个有序表的过程称为2-路归并&#xff0c;2-路归并最为简单和常用。 假设初始序列含有n个记录&#xff0c;则可看成是n个有序的子序列&#xff0c;每个子序列…

Git换行符自动转换参数core.autocrlf的用法

core.autocrlf 是 Git 中用于控制换行符自动转换的配置选项。它有以下几个可能的值&#xff1a; 1. true 作用&#xff1a;在 checkin 时将 CRLF 转换为 LF&#xff0c;在 checkout 时将 LF 转换为 CRLF。适用场景&#xff1a;适用于 Windows 用户&#xff0c;希望在本地文件…

如何让Windows控制台窗口不接受鼠标点击(禁用鼠标输入)

一、简述 在我们编写控制台应用程序时&#xff0c;默认情况下程序的打印输出会在控制台窗口中进行显示&#xff0c;我们在写服务功能时在窗口中会不断打印消息输出&#xff0c;这个时候如果使用鼠标点击了控制台窗口&#xff0c;会阻塞程序的继续运行&#xff0c;导致我们的程…

Python安装:Mac 使用brew 安装Python2 和 Python3

安装python ## python2 brew install python ## python3 brew install python3出现错误 Error: An unexpected error occurred during the brew link step The formula built, but is not symlinked into /usr/local Permission denied dir_s_mkdir - /usr/local/Frameworks …

uniapp媒体

uni.previewImage实现图片放大预览 // 图片预览函数function onPreview(index) {// 收集所有图片的urlvar urls pets.value.data.map(item > item.url)// 预览图片uni.previewImage({current: index, // 当前预览的图片索引urls: urls // 所有图片的url数组})}

HarmonyOS】ArkTS学习之基于TextTimer的简易计时器的elapsedTime最小时间单位问题

本文旨在纪录自己对TextTimer使用过程的疑惑问题 我在查看教程时候&#xff0c;发现很多博客在onTimer(event: (utc: number, elapsedTime: number) > void) 这里提到elapsedTime&#xff1a;计时器经过的时间&#xff0c;单位为毫秒。我不清楚是否为版本问题。 在我查看ver…

编写XBOX控制器实现鼠标键盘输入

1.核心部分, XINPUT输入封装 XInput封装https://mp.csdn.net/mp_blog/creation/editor/1420701282.对话框窗口编写 Win32 对话框封装-CSDN博客https://blog.csdn.net/Flame_Cyclone/article/details/142110008?spm1001.2014.3001.5501 3.使用到的其他封装 字符串编码转换与…

Azure web app has no access to openai private endpoint in virtual network

题意&#xff1a;"Azure Web 应用无法访问虚拟网络中的 OpenAI 私有端点。" 问题背景&#xff1a; I am trying to host a web application similar to a private ChatGPT instance within a secluded virtual network, ensuring that theres no external internet …

以太网--TCP/IP协议(二)

上文中讲述了IP协议&#xff0c;本文主要来讲一下TCP协议。 TCP协议 &#xff08;1&#xff09;端到端通信 直接把源主机应用程序产生的数据传输到目的主机使用这 些数据的应用程序中&#xff0c;就是端到端通信。 &#xff08;2&#xff09;传输层端口 公认端口&#xff0…

CCF刷题计划——训练计划(反向拓扑排序)

训练计划 计算机软件能力认证考试系统 这道题70分还是很好拿的。后面30分需要用到 反向拓扑排序 &#xff0c;相对而言就麻烦点&#xff0c;需要逆序遍历。不着急&#xff0c;我们慢慢来。首先给出70分的代码。 本题可以学到&#xff1a;反向拓扑排序 70分题解&#xff1a;…

红黑树的删除

文章目录 前言一.删除的节点左子树右子树都有二.删除的节点只有左/右子树删除调整操作 三.删除的节点没有孩子1.删除的节点为红色2.删除的节点为黑色1).兄弟节点为黑色(1).兄弟节点至少有一个红色的孩子节点LL型RR型RL型LR型 (2).兄弟节点没有孩子或所有孩子为黑色 2).兄弟节点…

【贪心算法】贪心算法

贪心算法简介 1.什么是贪心算法2.贪心算法的特点3.学习贪心的方向 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x1f603; 1.什么是贪心算法 与其说是…

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中&#xff0c;不同电脑的配置和操作系统&#xff08;如Win11与Win7&#xff09;可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行&#xff0c;需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下&a…

Integer 缓存

在 Java 中&#xff0c;如果你通过 new Integer(value) 显式创建一个 Integer 对象&#xff0c;以下几点需要注意&#xff1a; 内存中的 Integer 对象 缓存范围&#xff1a; Java 自动缓存的 Integer 对象范围是从 -128 到 127。这些对象在类加载时被创建并存储在内存中。 使…

服务网关工作原理,如何获取用户真实IP?

文章目录 一、什么是网关二、网关工作原理 (★)三、SpringCloud Gateway3.1 Gateway 简介3.2 Gateway 环境搭建3.3 自定义路由规则 (★)3.4 局部过滤器3.5 全局过滤器&#xff08;案例&#xff1a;获取用户真实IP地址&#xff09; (★) 补充1&#xff1a;不同类型的客户端如何设…

使用@test-library/react的screen中的方法和直接使用getByText,getByTestId等的区别?

在 React Testing Library 中&#xff0c;screen 对象和直接使用 getByText, getByTestId 等方法之间的主要区别在于它们的使用方式和上下文。然而&#xff0c;从功能的角度来看&#xff0c;它们实际上是相互关联的&#xff0c;因为 screen 对象提供了一组封装好的查询方法&…

2024非常全的接口测试面试题及参考答案

一、前言 接口测试最近几年被炒的火热了&#xff0c;越来越多的测试同行意识到接口测试的重要性。接口测试为什么会如此重要呢&#xff1f; 主要是平常的功能点点点&#xff0c;大家水平都一样&#xff0c;是个人都能点&#xff0c;面试时候如果问你平常在公司怎么测试的&…