Dual Graph Convolutional Networks for Aspect-based Sentiment Analysis 论文阅读

Dual Graph Convolutional Networks for Aspect-based Sentiment Analysis (2021 ACL)

Dual Graph Convolutional Networks for Aspect-based Sentiment Analysis
基于方面的情感分析的对偶图卷积网络
论文地址: https://aclanthology.org/2021.acl-long.494.pdf
论文代码: https://github.com/CCChenhao997/DualGCN-ABSA

个人阅读笔记,水平有限,如有问题欢迎指正交流

1. 介绍

1.1 研究目标

基于方面的情感分析是一个细粒度的情感分类任务。
image.png
图1:一个例句及其依赖关系树,来自餐厅评论。这句话包含两个方面,但具有相反的情感极性。

1.2 科学问题

最近,基于依赖树的图神经网络已经被证明可以明确地建模方面术语和观点术语之间的连接。然而,由于依赖分析结果的不准确性和在线评论的非正式表达和复杂性,这个改进是有限的。(总结: 基于依赖树的图神经网络有点东西 但是东西不多)
当将句法依赖性知识应用于ABSA任务时,出现两个挑战:

  1. 依赖解析结果的不准确性
    解决方法: 我们使用依赖解析器中所有依赖弧的概率矩阵来构建基于语法的图卷积网络**(SynGCN)**。这种方法背后的思想是,表示单词之间的依赖关系的概率矩阵包含丰富的句法信息相比,依赖关系解析器的最终离散输出。
  2. 依赖树上的GCN在由于在线评论的非正式表达和复杂性而对句法依赖不敏感的数据集上不像预期的那样工作良好。
    解决方法: 我们利用自注意机制构建了一个基于语义相关的图卷积网络**(SemGCN)**。这种方法背后的思想是,由自身关注形成的注意力矩阵,也被视为一个边加权有向图,可以表示单词之间的语义相关性。
    最后,在DGEDT的工作的激励下(Tang et al.2020),我们利用双仿射模块来桥接SynGCN和SemGCN模块之间的相关信息。

1.3 语义和语法的区别

语义和语法是自然语言处理(NLP)中两个重要概念,它们有着不同的含义和作用:

  1. 语义(Semantic):
    • 指的是语言中词语、短语、句子等表达的意义和含义。
    • 语义关注的是文本的意思、信息传递和表达的内容,与具体的词语组合和结构无关。
    • 语义在NLP任务中常常用于理解文本的真实含义、进行语义相似性比较、以及问答等任务。
  2. 语法(Grammar):
    • 指的是语言中词语、短语、句子等的结构和规则。
    • 语法关注的是文本的形式、词序、句法结构以及单词的角色和关系。
    • 语法在NLP任务中通常用于分析句子的结构、依存关系、词性标注等。
      总体来说,语义关注的是语言的意义和表达,而语法关注的是语言的结构和规则。在NLP中,语义和语法往往需要结合起来,共同用于理解和处理文本。例如,在问答任务中,需要通过语法分析找到问题的主语和谓语,然后通过语义理解来理解问题的意义并给出正确的答案。

例1:语法一样语义相反。
喜欢吃苹果
讨厌吃苹果
例2 语义一样语法不同
吃饭了吗
饭吃了没

1.4 本文方法

为了解决上述问题,本文提出了一个双通道图卷积网络模型(DualGCN),同时考虑语法结构语义相关性的互补性。特别地,为了减少依赖分析错误,我们设计了一个SynGCN模块,具有丰富的语法知识。为了捕获语义相关性,我们设计了一个SemGCN模块与自注意机制。此外,我们提出了正交差分正则化通过限制SemGCN模块中的注意力得分精确地捕捉单词之间的语义相关性。正交正则化器鼓励SemGCN模块学习语义相关的单词尽量避免单词之间重叠的情况。差分正则化器鼓励SemGCN学习SynGCN未能捕获的语义特征。(正交是完善自己的不足, 差分是补充完善别人的不足)

1.5 创新点/贡献

  1. 我们提出了一个DualGCN模型的ABSA任务。我们的DualGCN认为在一个给定的句子的句法结构和语义相关性。具体来说,我们的DualGCN通过相互的双仿射模块集成了SynGCNSemGCN网络
  2. 我们提出了正交差分正则化器。正交正则化器鼓励SemGCN网络学习正交语义注意矩阵,而差分正则化器鼓励SemGCN网络学习与SynGCN网络构建的句法特征不同的语义特征。
  3. 我们在SemEval 2014和Twitter数据集上进行了广泛的实验。实验结果证明了我们的DualGCN模型的有效性。此外,我们工作中使用的源代码和预处理数据集在GitHub上提供。

2. 任务案例

image.png
图1:一个例句及其依赖关系树,来自餐厅评论。这句话包含两个方面,但具有相反的情感极性。

3. 模型架构

image.png
图2:DualGCN的整体架构,主要由SynGCN和SemGCN组成。SynGCN使用由依赖解析器生成的概率矩00阵,而SemGCN利用由自我注意层生成的注意力得分矩阵。正交和差分正则化器的设计,以进一步提高捕捉语义相关性的能力。这些组件的详细信息在正文中描述。

4. 图卷积网络

受传统卷积神经网络(CNN)和图嵌入的启发,GCN是一种高效的CNN变体,直接在图上操作(Kipf和Welling,2017)。对于图形结构化数据,GCN可以在直接连接的节点上应用卷积运算以编码本地信息。通过多层GCN的消息传递,图中的每个节点都可以学习到更多的全局信息。给定一个有n个节点的图,该图可以表示为一个邻接矩阵 A ∈ R n × n A ∈ R^{n×n} ARn×n。大多数以前的工作(Zhang et al.,2019; Sun等人,2019 b)通过编码依赖性树并结合单词之间的依赖性路径来扩展GCN模型。它们在句子的句法依赖树上建立邻接矩阵A。因此,A中的元素 A i j A_{ij} Aij指示第i节点是否连接到第j节点。具体地,如果第i个节点连接到第j个节点,则 A i j = 1 A_{ij} = 1 Aij=1,否则 A i j = 0 A_{ij} = 0 Aij=0。此外,由0和1组成的邻接矩阵A可以被视为依赖解析器的最终离散输出。对于第l层处的第i个节点,形式上,其隐藏状态表示(表示为h1)由以下等式更新:
image.png
其中 W l W^l Wl是权重矩阵, b l b^l bl是偏置项,并且σ是激活函数(例如,ReLU)。

5. 双向GCN

5.1 框架简介

图2提供了DualGCN的概述。在ABSA任务中,给出句子-方面对 ( s , a ) (s,a) (sa),其中 a = { a 1 , a 2 , . . . , a m } a = \{a_1,a_2,...,a_m\} a={a1a2...am}是一个方面集合。它也是整个句子 s = { w 1 , w 2 , … w n } s = \{w1,w2,…wn\} s={w1w2wn}一个子序列。然后,我们使用 B i L S T M BiLSTM BiLSTM B E R T BERT BERT作为句子编码器,分别提取隐藏的上下文表示

  1. 对于BiLSTM编码器,我们首先获得字嵌入 x = { x 1 , x 2 , … x n } x = \{x_1,x_2,…x_n\} x={x1x2xn}从嵌入查找表 E ∈ R ∣ V ∣ × d e E ∈ R^{|V| ×d_e} ERV×de,其中 ∣ V ∣ |V| V是词汇的大小,并且de表示词嵌入的维度。接下来,将句子的词嵌入馈送到 B i L S T M BiLSTM BiLSTM中以产生隐藏状态向量 H = h 1 , h 2 , . . . , h n H = {h_1,h_2,...,h_n} H=h1h2...hn,其中 h i ∈ R 2 d h_i ∈ R^{2d} hiR2d是来自BiLSTM的在时间t的隐藏状态向量。隐藏状态向量d的维度由单向LSTM输出。
  2. 对于BERT编码器,我们构建了一个句子方面对“[CLS] sentence [SEP] aspect [SEP]”作为输入,以获得句子的方面术语的隐藏表示。此外,为了将BERT的基于词段的表示与基于词的句法依赖的结果相匹配,我们将词的依赖扩展到它的所有子词。
  3. 句子的隐藏表示被分别输入到SynGCNSemGCN模块中。一个双仿射模块,然后采用有效的信息流。
  4. 最后,我们通过池化和级联来聚合来自SynGCN和SemGCN模块的所有方面节点的表示,以形成最终的方面表示。接下来,我们详细说明我们提出的DualGCN模型的细节。

5.2 Syntax-based GCN (SynGCN)

SynGCN模块将语法编码作为输入。为了对句法信息进行编码,我们利用依赖解析器中所有依赖弧的概率矩阵。与依存分析器的最终离散输出相比,依存概率矩阵可以提供所有潜在的句法结构,从而捕获丰富的结构信息。因此,依赖概率矩阵用于减轻依赖解析错误。本文使用最先进的依赖性解析模型LAL-Parser的报告。
通过对邻接矩阵 A s y n ∈ R n × n A^{syn} ∈ R^{n×n} AsynRn×n进行语法编码,SynGCN模块将BiLSTM中的隐藏状态向量H作为语法图中的初始节点表示。语法图表示 H s y n = { h 1 s y n , h 2 s y n , … h n s y n } H^{syn} = \{h^{syn}_1,h^{syn}_ 2,…h^{syn}_n \} Hsyn={h1synh2synhnsyn}然后使用 E q ( 1 ) Eq(1) Eq(1)从SynGCN模块获得。这里, h i s y n ∈ R d h^{syn}_i∈ R^d hisynRd是第i个节点的隐藏表示。注意,对于方面术语节点,我们使用符号 { h a 1 s y n , h a 2 s y n , … h a m s y n } \{h^{syn}_{a1},h^{syn}_{a2},…h^{syn}_{am}\} {ha1syn,ha2synhamsyn}来表示它们的隐藏表示。

5.3 基于语义的GCN(SemGCN)

SemGCN不像SynGCN那样利用额外的句法知识,而是通过自注意机制获得注意矩阵作为邻接矩阵。一方面,自我注意可以捕捉句子中每个词的语义相关术语,这比句法结构更灵活。另一方面,SemGCN可以适应对句法信息不敏感的在线评论。

5.3.1 Self-Attention自我注意

自注意并行计算每对元素的注意力分数。在我们的DualGCN中,我们使用自注意层计算注意力得分矩阵 A s e m ∈ R n × n A^{sem} ∈ R^{n×n} AsemRn×n。然后,我们将注意力得分矩阵 A s e m A^{sem} Asem作为我们的SemGCN模块的邻接矩阵,其可以公式化为:
image.png
其中矩阵Q和K都等于我们的SemGCN模块的前一层的图形表示,而 W Q W^Q WQ W K W^K WK是可学习的权重矩阵。此外, d d d是输入节点特征的维度。注意,我们只使用一个自我注意头部来获得句子的注意力得分矩阵。与 S y n G C N SynGCN SynGCN模块类似, S e m G C N SemGCN SemGCN模块获得图形表示 H s e m H^{sem} Hsem。另外,我们使用符号 { h a 1 s e m , h a 1 s e m , … h a m s e m } \{h^{sem}_{a_1},h^{sem}_{a_1},…h^{sem}_{a_m} \} {ha1semha1semhamsem}来表示所有方面节点的隐藏表示。

5.3.2 双仿射模块

为了有效地交换 S y n G C N SynGCN SynGCN S e m G C N SemGCN SemGCN模块之间的相关特征,我们采用相互BiAffine变换作为桥梁。我们将流程表述如下:
image.png
其中 W 1 W_1 W1 W 2 W_2 W2是可训练参数。
最后,我们在 S y n G C N SynGCN SynGCN S e m G C N SemGCN SemGCN模块的方面节点上应用平均池化和级联操作。因此,我们获得ABSA任务的最终特征表示,即,
image.png
其中 f ( ⋅ ) f(·) f()是在方面节点表示上应用的平均池化函数。然后,所获得的表示 r r r被馈送到线性层中,随后是 s o f t m a x softmax softmax函数以产生情感概率分布 p p p,即,
image.png
其中 W p W_p Wp b p b_p bp是可学习的权重和偏差。

5.4 正则化项

为了改进语义表示,我们提出了SemGCN模块的两个正则化器,即,正交和微分正则化器。

5.4.1 正交正则

每个单词的相关项应该在句子中的不同区域中,因此注意力分数分布很少重叠。因此,我们期望正则化器鼓励所有单词的注意力得分向量之间的正交性。给定注意力得分矩阵 A s e m ∈ R n × n A^{sem} ∈ R^{n×n} AsemRn×n,正交正则化子公式如下:
image.png
其中 I I I是单位矩阵。下标 F F F表示 F r o b e n i u s Frobenius Frobenius范数。结果, A s e m A s e m T A^{sem}A^{semT} AsemAsemT的每个非对角元素被最小化以保持矩阵 A s e m A^{sem} Asem正交。

5.4.2 差分正则化器

我们期望从 S y n G C N SynGCN SynGCN S e m G C N SemGCN SemGCN模块学习的两种类型的特征表示包含在句法依赖树和语义相关性中的不同信息。因此,我们在 S y n G C N SynGCN SynGCN S e m G C N SemGCN SemGCN模块的两个邻接矩阵之间采用差分正则化子。注意,正则化子仅限于 A s e m A^{sem} Asem,公式为
image.png

5.5 损失函数

我们的训练目标是最小化以下总目标函数:
image.png
其中 λ 1 λ_1 λ1 λ 2 λ_2 λ2 λ 3 λ_3 λ3是正则化系数, Θ Θ Θ表示所有可训练模型参数。 L C L_C LC是标准的交叉熵损失,并且针对 A B S A ABSA ABSA任务定义如下:
image.png
其中 D D D包含所有句子-方面术语对,并且 C C C是不同情感极性的集合。

6 实验结果

6.1 数据集分析

image.png
表1:三个实验数据集的统计。

6.2 对比实验

我们在三个公共标准数据集上进行实验。Restaurant和Laptop数据集从SemEval ABSA挑战(Pontiki等人,2014年)的报告。
image.png
表2:三个公开可用数据集上的实验结果比较。

6.3 消融实验

image.png
表3:消融研究的实验结果。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
graph convolutional networks (GCNs)是一种用于半监督分类的图卷积网络。GCNs适用于处理图数据,其中图由节点和节点之间的连接边组成。半监督分类是指在一些标记有类别的节点样本的基础上,对未标记的节点进行分类。以下是关于GCNs在半监督分类中的代码解释: GCNs的代码通常包含以下主要部分: 1. 数据准备:首先,我们需要准备图数据。这包括节点特征矩阵和图的邻接矩阵。节点特征矩阵是一个二维矩阵,每一行对应一个节点的特征向量。邻接矩阵描述节点之间的连接关系。 2. 定义模型:接下来,我们定义GCNs的模型结构。这包括定义卷积层、池化层和分类层等。卷积层用于在图上学习节点的特征表达,池化层用于减少节点的数量,分类层用于进行节点分类。 3. 前向传播:在GCNs中,前向传播的过程是通过迭代卷积层来逐步改进节点特征。我们可以通过相邻节点的特征加权平均来更新每个节点的特征。这个过程被称为图卷积。 4. 反向传播与优化:在前向传播后,我们计算模型预测结果与真实标签之间的损失。然后,使用反向传播算法计算梯度,并通过优化算法(例如随机梯度下降)更新模型的参数,以最小化损失。 5. 训练和评估:使用带有已标记节点标签的图数据集进行模型的训练。训练的目标是使模型能够准确预测未标记节点的类别。评估阶段,我们在测试集上评估模型的性能,通常使用准确率等指标来度量分类结果的质量。 总的来说,GCNs的代码实现主要涉及图数据的准备、模型定义、前向传播、反向传播与优化以及训练和评估等步骤。通过这些步骤,我们可以使用GCNs对图数据进行半监督分类任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值