论文:Dependency-driven Relation Extraction with Attentive Graph Convolutional Networks.ACL 2021
现有的研究已经广泛使用句法信息,特别是依赖树,来改进关系提取,为分析与给定实体相关的上下文信息提供更好的语义指导。
然而,现有的研究大多存在依赖树噪声的问题,特别是当依赖树自动生成时,过度利用依赖信息可能会给关系分类带来混乱,必要的修剪在这一任务中非常重要。本文提出了一种依赖驱动的关注图卷积网络(A-GCN)关系提取方法。在这种方法中,一种基于图卷积网络的注意机制应用于从现成的依赖解析器获得的依赖树中的不同上下文单词,以区分不同单词依赖的重要性。
考虑到单词之间的依赖类型也包含重要的上下文指导,这可能有助于关系提取,我们还在A-GCN建模中包含了类型信息。在两个英语基准数据集上的实验结果证明了我们的A-GCN的有效性,在两个数据集上都达到了最先进的性能
模型的整体架构如下图所示。具体来说,给定一个非结构化输入语句 X = x1,···,xn,其中有n个单词并让 E1 和 E2 表示 X 中的两个实体,我们的方法通过以下方式预测 E1 和 E2 之间的关系 :
r
^
=
arg
max
r
∈
R
p
(
r
∣
A
−
G
C
N
(
X
,
T
X
)
)
\widehat{r}=\underset{r \in \mathcal{R}}{\arg \max } p\left(r \mid \mathrm{A}-\mathrm{GCN}\left(\mathcal{X}, \mathcal{T}_{\mathcal{X}}\right)\right)
r
=r∈Rargmaxp(r∣A−GCN(X,TX))
其中Tx是从现成的工具包中获得的x的依赖树,R是关系类型集; P计算给定两个实体的特定关系r的概率,而是r以X和Tx为输入的A-GCN的输出。
在标准的GCN中,单词之间的连接被平等对待(即ai,j为0或1)。因此,基于GCN的正则模型无法区分不同连接的重要性,因此对它们进行修剪对正则非常重要。传统图卷积计算公式如下:
h
i
(
l
)
=
σ
(
∑
j
=
1
n
a
i
,
j
(
W
(
l
)
⋅
h
j
(
l
−
1
)
+
b
(
l
)
)
)
\mathbf{h}_i^{(l)}=\sigma\left(\sum_{j=1}^n a_{i, j}\left(\mathbf{W}^{(l)} \cdot \mathbf{h}_j^{(l-1)}+\mathbf{b}^{(l)}\right)\right)
hi(l)=σ(j=1∑nai,j(W(l)⋅hj(l−1)+b(l)))
我们的方法通过使用A-GCN和合并依赖信息来遵循这个范式,以提高模型性能,其中我们的模型的总体架构如图2所示。
因此,我们提出了A-GCN,它使用一种注意机制来计算不同连接的权重,使模型能够相应地利用不同的依赖连接。
此外,标准GCN和大多数以前的研究忽略了与依赖连接相关的依赖类型,这些类型包含对RE非常有用的信息,在本文中被引入到A-GCN中。我们首先用类型矩阵在
T
X
T_X
TX中表示依赖类型
T
=
(
t
i
,
j
)
n
×
n
\mathbf{T}=\left(t_{i, j}\right)_{n \times n}
T=(ti,j)n×n,其中ti,j是xi和xj之间的有向依赖连接相关的依赖类型(如nsubj);接下来,我们将每种类型ti,j映射到它的嵌入eti,j。然后,在第l- GCN层,计算xi和xj之间连接的权值。
p
i
,
j
(
l
)
=
a
i
,
j
⋅
exp
(
s
i
(
l
)
⋅
s
j
(
l
)
)
∑
j
=
1
n
a
i
,
j
⋅
exp
(
s
i
(
l
)
⋅
s
j
(
l
)
)
p_{i, j}^{(l)}=\frac{a_{i, j} \cdot \exp \left(\mathbf{s}_i^{(l)} \cdot \mathbf{s}_j^{(l)}\right)}{\sum_{j=1}^n a_{i, j} \cdot \exp \left(\mathbf{s}_i^{(l)} \cdot \mathbf{s}_j^{(l)}\right)}
pi,j(l)=∑j=1nai,j⋅exp(si(l)⋅sj(l))ai,j⋅exp(si(l)⋅sj(l))
其中,ai,j为领接矩阵A,“.”表示内积,si和sj是xi和xj的两个辅助矩阵,计算方法如下:
s i ( l ) = h i ( l − 1 ) ⊕ e i , j t \mathbf{s}_i^{(l)}=\mathbf{h}_i^{(l-1)} \oplus \mathbf{e}_{i, j}^t si(l)=hi(l−1)⊕ei,jt和 s j ( l ) = h j ( l − 1 ) ⊕ e i , j t \mathbf{s}_j^{(l)}=\mathbf{h}_j^{(l-1)} \oplus \mathbf{e}_{i, j}^t sj(l)=hj(l−1)⊕ei,jt;表示向量拼接。
我们对xi和xj之间的关联依赖连接施加权重p(i,j),通过以下方式训练得到xi的输出表示:
h
i
(
l
)
=
σ
(
∑
j
=
1
n
p
i
,
j
(
l
)
(
W
(
l
)
⋅
h
~
j
(
l
−
1
)
+
b
(
l
)
)
)
\mathbf{h}_i^{(l)}=\sigma\left(\sum_{j=1}^n p_{i, j}^{(l)}\left(\mathbf{W}^{(l)} \cdot \widetilde{\mathbf{h}}_j^{(l-1)}+\mathbf{b}^{(l)}\right)\right)
hi(l)=σ(j=1∑npi,j(l)(W(l)⋅h
j(l−1)+b(l)))
其中W和b是权重矩阵和偏置,
h
~
j
(
l
−
1
)
\tilde{\mathbf{h}}_j^{(l-1)}
h~j(l−1)是x的一种加强表示,计算方法如下:
h
~
j
(
l
−
1
)
=
h
j
(
l
−
1
)
+
W
T
(
l
)
⋅
e
i
,
j
t
\tilde{\mathbf{h}}_j^{(l-1)}=\mathbf{h}_j^{(l-1)}+\mathbf{W}_T^{(l)} \cdot \mathbf{e}_{i, j}^t
h~j(l−1)=hj(l−1)+WT(l)⋅ei,jt
其中
W
T
W_T
WT是为了将依赖类型embdding映射为跟h一样的维度。
现将句子放入BERT中,并加入[CLS]开始标记位,得到隐藏向量表示h,之后放入A-GCN(L层)获得
h
i
(
L
)
\mathbf{h}_i^{(L)}
hi(L),然后,我们将最大池机制应用于属于一个实体提及(即
E
k
E_k
Ek,K=1,2)的词的输出隐藏向量,以计算实体表示(表示为
h
E
k
h_Ek
hEk)
h
E
k
=
MaxPooling
(
{
h
i
(
L
)
∣
x
i
∈
E
k
}
)
\mathbf{h}_{E_k}=\operatorname{MaxPooling}\left(\left\{\mathbf{h}_i^{(L)} \mid x_i \in E_k\right\}\right)
hEk=MaxPooling({hi(L)∣xi∈Ek})
之后,我们将句子
h
x
h_x
hx和两个实体
h
E
1
和
h
E
2
h_E1和h_E2
hE1和hE2的表示连接起来,并将一个可训练矩阵
W
R
W_R
WR应用于计算的向量,以通过以下步骤将其映射到输出空间:
o
=
W
R
⋅
(
h
X
⊕
h
E
1
⊕
h
E
2
)
\mathbf{o}=\mathbf{W}_R \cdot\left(\mathbf{h}_{\mathcal{X}} \oplus \mathbf{h}_{E_1} \oplus \mathbf{h}_{E_2}\right)
o=WR⋅(hX⊕hE1⊕hE2)
其中,o是一个| R |维向量,其每个值都表示关系类型集R中的关系类型。最后,我们通过o的softmax函数通过以下公式预测E1和E2之间的关系:
r
^
=
arg
max
exp
(
o
u
)
∑
u
=
1
∣
R
∣
exp
(
o
u
)
\widehat{r}=\arg \max \frac{\exp \left(o^u\right)}{\sum_{u=1}^{|\mathcal{R}|} \exp \left(o^u\right)}
r
=argmax∑u=1∣R∣exp(ou)exp(ou)
在实验中,我们为模型准备了两个英文基准数据集,即 ACE2005EN和 SemEval 2010 。对于 ACE05,我们对其进行预处理(删除两个小子集 cts 和 un)并将文档拆分成训练集、开发集和测试集。下图中显示了 ACE05 和 SemEval 基准数据集的训练/开发/测试集的实例数(即实体对数)。
为了构造A-GCN的图,我们使用标准的CorenLP Toolkits(SCT)来获得每个输入句子x的依赖关系树Tx。虽然我们的方法能够通过注意力机制来区分不同依赖关系的重要性,但如果我们能够通过特定的剪枝策略过滤掉那些给RE带来混乱的依赖关系,则仍然是有益的。 本文通过包含两组依赖连接,即局部连接和全局连接,构造了A-GCN的图。 具体来说,局部连接包括直接连接到两个实体头部的所有依赖项,全局连接包括沿着两个实体头部之间的最短依赖路径(SDP)的所有依赖项,在许多情况下,也涉及到不直接连接到两个实体的字。 通过一个包括两个实体(即“公司”和基准测试)的示例语句,下图说明了两组依赖关系以及由这两组关系构建的邻接矩阵。 值得注意的是,当SDP较短时,本地组中的连接可能比全局组中的连接多。
我们在输入句子中插入四个特殊标记(即“”、“”、“”和“”)来标记两个实体的边界,这使得编码器在编码过程中能够区分实体的位置,从而提高模型性能。对于编码器,我们使用 BERT。对于A-GCN,我们随机初始化所有可训练参数和依赖类型嵌入。 为了评估方便,我们遵循以前的研究,使用标准的微观F1分数在ACE05数据集上,使用宏观平均F1分数在Semeval数据集上。 在我们的实验中,我们尝试了不同的超参数组合,并在DEV集上对它们进行调整,然后用在DEV集上获得最高F1分数的模型对测试集进行评估。
我们的A-GCN模型的F1分数和基线(即仅Bert-only,标准GAT,标准GCN)在不同设置下,使用Bert-Base(A)和Bert-Large(B)。 所有基于图的模型(即GAT、GCN和A-GCN)都使用两种设置进行测试:第一种是使用包含所有依赖连接的全图(FULL),第二种是使用局部和全局连接的组合(L+G)。 我们还运行具有不同层数(即1到3层)的GCN和A-GCN,以进行公平的比较。
在ACE05和Semeval上使用两层的A-GCN和Bert-Large编码器将前人研究和我们的最佳模型进行了比较(F1评分)。
使用 BERT-large 编码器在来自 SemEval 的三组测试实例上的不同模型(即仅 BERT、两层标准 GCN 和两层 A-GCN)的性能(F1 分数),其中每组是基于生成的关于实例中两个实体之间的距离(即单词数)。
模型利用不同类型依存信息,在两个基准数据集上的性能、不同设定下模型在两个基准数据集上的性能如下:
下图中为示例输入分配给A-GCN(full)和AGCN(L+G)不同依赖连接的权重的可视化,其中较深和较粗的线表示具有较高权重的连接。
本文提出了利用依赖信息进行关系提取的A-GCN方法,即对依赖连接应用注意机制,对连接和类型同时施加权重,以便更好地区分重要的依赖信息并进行相应的利用。在这样做的过程中,A-GCN能够动态地从不同的依赖连接中学习,从而巧妙地修剪信息较少的依赖。在两个用于关系提取的英语基准数据集上的实验结果和分析证明了我们的方法的有效性,特别是对于长单词序列距离的实体,在两个数据集上都获得了最先进的性能。
该论文主要创新点提出了一种依赖驱动的神经网络方法,利用依赖树建图,引入注意力机制获得注意力权重矩阵,可以用于区分该任务的重要上下文信息,从而达到依存语法树降噪的效果;此外,本文一大创新点是考虑到与依赖连接相关的依赖类型(例如,名义主语)对RE也可能有用,因为它们包含连接词之间的语法指令,通过向A-GCN中引入类型信息来进一步改进模型。
https://blog.csdn.net/weixin_41545327/article/details/126966157?spm=1001.2014.3001.5502
论文地址:https://aclanthology.org/2021.acl-long.344.pdf
论文代码:GitHub - cuhksz-nlp/RE-AGCN
[博客参考]:本文为ACL2021中的一篇论文,从实验结果来看,使用GCN是有增益的,尤其是加入了attention 系数的GCN,但是增益不会很大,且GCN并不需要太多层,2层性能就不错,甚至使用Full信息的时候,也就是 依存关系全保留的情况下,使用GCN反而有坏处,如图中的 +1 GCN Layer FULL效果都比Baseline差,精简了信息以后,才有一定的正向增益。相比于使用GAT模型,作者由于引入了entity type信息,故整体的效果还是可以的。GNN模型本身的思想是信息的传播与聚合,在这个过程中,信息会进行流动,相同类别的数据会趋同,不同类别的数据差异会拉大,故GNN非常适用于分类任务,经典的任务如在cora上进行半监督学习。但是用于其他的任务,这种信息的聚合流动不一定能带来收益。由此观之,Graph的信息并不是越多越好,去掉噪声信息,保留核心信息便于模型“突出重点”,而不是全局平均化。