[论文笔记] Dual-Channel Span for Aspect Sentiment Triplet Extraction

news2024/11/28 1:33:25

一种利用句法依赖和词性相关性信息来过滤噪声(无关跨度)的基于span方法。

会议EMNLP 2023
作者Pan Li, Ping Li, Kai Zhang
团队Southwest Petroleum University
论文地址https://aclanthology.org/2023.emnlp-main.17/
代码地址https://github.com/bert-ply/Dual_Span/tree/master
简介一种基于span双通道的情感三元组抽取模型

Task

方面级情感分析(ABSA)中的一项子任务(情感三元组抽取,ASTE)。
image.png
图1. ASTE 任务中带有依存树和词性的句子

Problem

在ASTE任务中采用跨度交互的方式已被证明能为模型带来不错的收益。然而,基于span的方法最大的一个问题是它们通常会枚举句子中所有的span,这样会带来非常大的计算成本和噪声。具体来说,长度为n的句子的枚举跨度数量是 o ( n 2 ) o(n^2) o(n2),而在后期跨度配对阶段,所有意见和方面候选跨度之间可能的交互数量为 o ( n 4 ) o(n^4) o(n4),这意味着绝大多数的跨度都是无效的。此外,大多数现有的基于跨度的方法都对两个跨度之间的直接交互进行建模,而高阶交互作用被忽视。
为了解决以上问题,作者对跨度中的语言现象进行了探讨:

  • 在语法依赖树方面,由多个单词组成的aspect或opinion跨度在语法上是依赖的,并且多重依赖关系可以在跨度之间传递高阶交互。
  • 在词性方面,aspect和opinion存在一些常见的情况,如:aspect通常是名词(N)或名词短语(NN-NN),而opinion通常是形容词(JJ)。

Contributions

  • 提出了一种新的跨度生成方法,通过利用句法依赖关系和词性特征之间的相关性,显著减少了跨度候选的数量,从而降低了计算成本和噪声。
  • 通过构建基于句法依赖和词性关系的图注意力网络(RGAT),模型能够捕获跨度/单词之间的高阶语言特征交互,增强了跨度表示。
  • 两个公共数据集上的广泛实验表明,Dual-Span模型在ASTE任务上超越了所有现有的最先进方法,证明了其有效性和优越性。

Methodology

Sentence Encoding

本文采用了两种句子编码方法:

  • GloVe+BiLSTM
  • BERT

其实只做进行BERT版本即可,可能是为了与借鉴的Span-ASTE对比(也采用了这两种编码方法)。

Feature Enhancing Module

如上所述,跨度(或跨度内单词)涉及句法依赖性和词性相关性,因此将这些信息合并到特征表示中可能有利于跨度配对和情感预测。
为了捕获高阶依赖关系,这里我们设计了一种基于图神经网络的方法来对高阶跨度内和跨度的句法依赖关系和词性关系进行编码。具体来说,我们构建了词性关系图(对应于图3(b)所示的多关系矩阵)。然后,我们应用两个关系图注意网络分别学习所讨论句子的句法依存树和构建的词性图上单词之间的高阶交互。

Part-of-speech And Syntactic Dependency Graph Construction

利用斯坦福的CoreNLP来完成句法依赖和词性的标注
image.png
图2. ASTE 任务中一个句法依存树和词性邻接矩阵的例句
G S y n = ( V , R S y n ) G^{Syn}=(V,R^{Syn} ) GSyn=(V,RSyn) G P o s = ( V , R P o s ) G^{Pos}=(V,R^{Pos} ) GPos=(V,RPos)分别表示句法依存图和词性图,索引为i的词与索引为j的词之间的关系向量分别为 r i , j s r^{s}_{i,j} ri,js r i , j p r^{p}_{i,j} ri,jp

High-order Feature Learning with Relational Graph Attention Network

image.png
图3. Dual-Span的模型架构图
在构建好句法依赖图和词性图之后,作者构建了两个关系图注意力网络(RGAT):SynGAT和PosGAT,分别用来捕获句法依赖图和词性图的语言特征。
对于第 i i i个节点,更新过程如下:
image.png
其中 Z Z Z表示注意力头的数量, h i s y n ( l ) h^{syn}_i(l) hisyn(l) h i p o s ( l ) h^{pos}_i(l) hipos(l)表示第 l l l层数第 i i i个节点的表示向量, N ( i ) N(i) N(i)表示与 i i i直接相邻的节点集。
为了融合句法依赖和词性关系特征,作者引入了一种门机制:
image.png

Dual-Channel Span Generation

前面通过R-GAT完成了句法依存和词性信息的融合,接下来就是进行span的枚举了。这里的span枚举有两种方式。

Syntactic Span Generation

只枚举索引为 i i i的词与索引为 j j j的词之间存在依赖边或关系( e i , j = 1 e_{i,j}=1 ei,j=1),且 i i i j j j之间的距离小于 L s L_s Ls,则认为索引 i i i到索引 j j j之间的所有的词是一个span。
image.png
其中, f w i d t h ( i , j ) f_{width}(i,j) fwidth(i,j)是一个可训练的embedding。

Part-of-speech Span Generation

只枚举出所有的名词和形容词, ( k , l ) (k,l) (k,l)中每个词都是NN或者JJ,则 k k k l l l之间的所有词是一个span。
image.png
其中, f w i d t h ( k , l ) f_{width}(k,l) fwidth(k,l)是一个可训练的embedding。

最终将两种枚举方案种的span进行取并集,得到最终的span候选集:
S = S i , j s y n ∪ S k , l p o s S = S^{syn}_{i,j}∪S^{pos}_{k,l} S=Si,jsynSk,lpos

Span Classification

获得span候选集 S S S后,通过利用两个辅助任务(即 ATE 和 OTE 任务)进一步缩小可能的跨度池。相当于对每个span做一个三分类任务:{Aspect, Opinion, Invalid}
image.png
预测为Aspect或Opinion的span并不是全部都作为候选的Aspect或Opinion,而是分别取出tok nz个作为Aspect候选span和Opinion候选span。(做法与Span-ASTE一致)

Triplet Module

对候选的aspect和opinion进行两两配对,配对之后的跨度对的向量表示:
image.png
f d i s t a n c e ( a , b , c , d ) f_{distance}(a,b,c,d) fdistance(a,b,c,d)是一个可训练的embedding, r a b , c d s r^{s}_{ab,cd} rab,cds为词a、b与词c、d之间的依赖关系表示向量做一个均值操作。
接下来对每个配对之后的pair进行4分类:{Positive, Negative, Neutral, Invalid}:
image.png

Training objective

训练的损失函数定义为跨度分类和三元组模块中跨度对分类的负对数似然之和:
image.png

Experiments

Dataset

ASTE-Data-v1和ASTE-Data-v2,所有数据集均基于 SemEval 挑战(Pontiki 等人,2014、2015、2016),并包含笔记本电脑和餐厅领域的评论。
image.png
图4. ASTE两个数据集的想详细统计结果

Main Results

image.png
图5. ASTE-Data-v1数据集的主要结果
image.png
图6. ASTE-Data-v2数据集的主要结果

  • 性能提升: Dual-Span模型在四个公共数据集(Lap14, Res14, Res15, Res16)上进行了广泛的实验,实验结果表明,该模型在F1分数上一致超越了所有现有的最先进方法。这证明了Dual-Span在ASTE任务上的有效性和优越性。
  • 句法结构的利用: 在基于标签的端到端方法中,那些利用句子句法结构的方法(如S3E2, MTDTN和EMC-GCN)通常比仅学习标签信息的方法(如OTE-MTL, GTS和JET)表现得更好,这表明句法特征对于三元组表示是有意义的。

Ablation Study

image.png
图7. 消融实验的结果
通过消融研究,论文进一步验证了Dual-Span中各个组件的有效性。移除句法图注意力网络(SynGAT)、词性图注意力网络(PosGAT)或两者都移除(Dual-RGAT)都会导致性能下降,这表明模型的每个部分都对最终的ASTE任务性能有贡献。

Effectiveness of Dual-Span in Span Generation

image.png
图8. ATE和OTE任务在数据集D2上的实验结果
在 ATE 任务上,Dual-Span 始终优于 Span-ASTE 和 GTS,这表明基于句法和词性相关性的候选缩减和表示对于方面术语识别是有效的。然而,在 OTE 任务上,模型在大多数基准数据集上略逊于 Span-ASTE,这是由较低的 P(precision)值引起的。可能是因为作者只考虑涉及用 JJ或NN 标记的单词的跨度。但是,意见术语可以用 VBN 标记,但他们没有被包括在内。
image.png
图9. 在D2数据集上生成span耗时(秒)的实验结果
Dual-Span模型通过双通道跨度生成策略显著减少了计算成本,实验结果显示,与Span-ASTE相比,Dual-Span在生成跨度的时间消耗上减少了一半。

Conclusion

  • Dual-Span模型通过利用句法关系和词性特征来改进ASTE任务的性能。
  • 实验结果表明,该方法在ASTE和ATE任务上相比所有基线方法都有显著提升。
  • 论文指出,对于OTE任务,Dual-Span通常不如枚举所有可能跨度的简单跨度基方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1530362.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

长安链Docker Java智能合约引擎的架构、应用与规划

#功能发布 长安链3.0正式版发布了多个重点功能,包括共识算法切换、支持java智能合约引擎、支持后量子密码、web3生态兼容等。我们接下来为大家详细介绍新功能的设计、应用与规划。 在《2022年度长安链开源社区开发者调研报告》中,对Java合约语言支持是开…

ideaSSM 财务凭证管理系统bootstrap开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 idea 开发 SSM 财务凭证管理系统是一套完善的信息管理系统,结合SSM框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库&#xff…

[Qt学习笔记]Qt下使用Halcon实现采图时自动对焦的功能(Brenner梯度法)

目录 1、介绍2、实现方法2.1 算法实现过程2.2 模拟采集流程 3、总结4、代码展示 1、介绍 在机器视觉的开发中,现在有很多通过电机去做相机的聚焦调节,对比手工调节,自动调节效果更好,而且其也能满足设备自动的需求,尤…

高效的Gitlab Flow最佳实践

文章目录 一、git flow二、github flow三、gitlab flow四、基于gitlab flow的最佳实践1.语义化版本号2.测试发布3.bug修复 参考 业界包含三种flow: Git flowGithub flowGitlab flow 三种工作流程,有一个共同点:都采用"功能驱动式开发&…

圆弧齿的模型怎么建立?

今天咱们聊一聊圆弧齿的相关内容,有兴趣的小伙伴一起来看看吧。 圆弧齿轮发展历史 早期齿轮传动的速度较低、传递的功率小,长期的生产实践使得人们开始意识到对齿轮单个轮齿形状(轮齿齿形)的研究的重要性,齿轮的齿形…

5G安全技术新突破!亚信安全5G安全迅龙引擎正式发布

5G专网应用飞速增长:2020年5G专网数量800个,2021年2300个,2022年5325个,2023年已经超过16000个,5G与垂直行业的融合快速加深,5G带来的变革正加速渗透至各行各业。 5G网络出现安全问题,将是异常严…

MNN createFromBuffer(一)

系列文章目录 MNN createFromBuffer(一) MNN createRuntime(二) MNN createSession 之 Schedule(三) MNN createSession 之创建流水线后端(四) MNN Session::resize 之流水线编码&am…

C语言例3-12:自增和自减运算的例子

i 先引用后加1--i 先减1后引用 代码如下&#xff1a; #include<stdio.h> int main(void) {int i2, j2;char c1d, c2D; //d(100) D(68)printf("i %d\n",i); //3, i3printf("j-- %d\n",j--); …

Design Script之案例练习:曲线组合

让我们来探索一下如何创建分组曲线函数。这个函数将取一个无序曲线列表(必须是连续的),并将它们组合成分组的循环。 在这个例子中,我们将采取一系列的9个爆炸矩形,并洗牌合成曲线。这给了我们36条单独的曲线,它们可以正确地组合回各自的矩形中。 一些分散的曲线显示在右边…

发布镜像到阿里云仓库

发布上一篇Dockerfile实战-自定义的centos镜像。 1、登录阿里云 2、找到容器镜像服务 3、创建命令空间 4、创建镜像仓库 5、点击进入这个镜像仓库&#xff0c;可以看到所有的信息 6、根据操作指南测试推送发布 6.1登录阿里云 [rootzhoujunru home]# docker login --usernam…

数据仓库系列总结

一、数据仓库架构 1、数据仓库的概念 数据仓库&#xff08;Data Warehouse&#xff09;是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合&#xff0c;用于支持管理决策。 数据仓库通常包含多个来源的数据&#xff0c;这些数据按照主题进行组织和存储&#x…

mapboxgl添加雪碧图 addImage loadImage png/jpg svg

一、mapboxgl可以添加png或者jpg类型的图片到雪碧图中 async function addPng(id, url) {const img await new Promise((resolve) > {map.loadImage(url, (error, image) > {if (error) throw error;resolve(image);});});if (!map.hasImage(id)) {map.addImage(id, img…

【链表】算法例题

目录 八、 链表 57. 环形链表 ① 58. 两数相加 ② √ 59. 合并两个有序链表 ① √- 60. 随机链表的复制 ② 61. 反转链表II ② 62. K个一组翻转链表 ③ 63. 删除链表的倒数第N个结点 ② √- 64. 删除排序链表中的重复元素II ② √- 65. 旋转链表 ② √- 66. 分隔链…

【目标检测】图解 YOLOv3 的网络结构(Darknet-53 作为 backbone)

到了 YOLOv3&#xff0c;backbone 从 YOLOv2 的 Darknet-19 升级到了 Darknet-53。 下面一张完整的结构示意图来一起理解一下 YOLOv3 的网络结构。 我们怎么理解最后输出的 3 个特征图&#xff08;feature map&#xff09;的这个 255&#xff1f; 同 YOLOv2 一样&#xff0c;…

常见传感器的原理 和 常见滤波算法实现

阅读引言&#xff1a; 分析常见的传感器的电路原理、向大家提供一些ADC常见的滤波算法的实现, 介绍声、光、热、电、力、气和磁传感器的大致工作原理。 目录 一、常见传感器工作原理 1.声音传感器-动圈&电容咪头 2.光传感器-光敏电阻 3.热传感器-热电偶 4.电传感器-电…

YOLOv8改进 | 主干篇 | 利用图像分割网络UNetV2改善图像分割检测性能(全网独家首发)

一、本文介绍 本文给大家带来的改进机制是利用图像分割网络UNetV2的主干来改进我们的YOLOv8分割模型&#xff08;本文的内容虽然YOLOv8所有的功能的用户都能使用&#xff0c;但是还是建议分割的用户使用&#xff09;&#xff0c;U-Net v2 旨在改进医学图像分割的性能&#xff…

Spring-Gateway服务网关

一、网关介绍 1. 为什么需要网关 Gateway网关是我们服务的守门神&#xff0c;所有微服务的统一入口。 网关的核心功能特性&#xff1a; 请求路由 权限控制 限流 架构图&#xff1a; 权限控制&#xff1a;网关作为微服务入口&#xff0c;需要校验用户是是否有请求资格&am…

Zerotier 异地组网方案初探

前言 我之前想要异地组网的话&#xff0c;一般都采用内网穿透的方法&#xff0c;但是这个内网穿透有弊端就是都是要通过公网服务器转发流量&#xff0c;对于大流量的传输就比较不方便&#xff0c;我发现了Zerotier 这个工具非常的好用&#xff0c;是基于p2p的 这是一个类似于…

【SpringBoot3+Mybatis】框架快速搭建

文章目录 GitHub 项目一、依赖二、 配置文件三、启动类四、SpringBoot3兼容Druid报错五、工具类5.1 结果封装类5.2 解决枚举类5.3 MD5加密工具类 GitHub 项目 springboot-part——springboot-integrate-07 Mybatis-plus版完整CRUD项目文档记录&#xff1a; 【SpringBoot3Myba…

【项目实践Day06】异步请求与同步请求+Ajax+微信小程序上实现发送异步请求

什么是同步和异步 同步 在主线程上排队执行的任务&#xff0c;只有前一个任务执行完毕&#xff0c;才能继续执行下一个任务。也就是一旦调用开始&#xff0c;就必须等待其返回结果&#xff0c;程序的执行顺序和任务排列顺序一致。客户端必须等待服务器端的响应。在等待的期间客…