笔记:Graph Convolution over Pruned Dependency Trees Improves Relation Extraction
Graph Convolution over Pruned Dependency Trees Improves Relation Extraction
作者:Yuhao Zhang et al., 2018 EMNLP.
目录
- 简介
- 方法
- 实验
- 总结
1 简介
本文使用GCN作为编码器结合依赖树结构做关系抽取(分类),既能高效处理数据,又能有效利用所有的信息。
发现问题:针对之前两种比较流行的基于依存关系树做关系抽取的方法,主要有两个缺点,一是直接利用依存树但并行能力不足效率低没法batch处理,二是剪枝依存树,直接使用两实体之间的最短依赖路径,但仅使用最短依赖路径有些限制如下图Figure 1 中最短依存路径对于not的忽略,且虽然主要信息都集中在最短依赖路径中并没有完全利用有效的信息。
2 方法
2.1 Graph Convolutional Networks over Dependency Trees
首先介绍一下如何将GCN用到依存关系树结构。
对于GCN,基本原理着实看不懂太难了,这里就按照论文里的论述简单说明一下GCN大致原理应用吧,如下公式Eq(1)为GCN的基本操作。
假设一个图有n个节点,A即为邻接矩阵,其中\(A_{ij}=1\)表示存在一条从节点i到节点j的边,\(h^{(l)}_i\)表示第\(l\)层中的第i个节点的输出,同理\(h_j^{(l-1)}\)为第\(l\)层的输入。\(W^{(l)}\)为每层线性变换矩阵,这里实验中对于每条边的权重都用的是同一个值W。
但直接用GCN在依赖树上的话有个问题,一是由于(依赖树另一种形式也可以是图)每个token的度的变化都很大,这样由公式1可知对于每一个token的输出,是要判断所有节点是否邻接进而计算每个节点的度作为公式的一环,那度变化很大的话,就会导致最后整个句子的表示偏向度大的节点,而非偏向含有我们需要的信息的节点了。另一个问题是,依赖路径是没有闭环的或者说没有自环的,也就是第\(l-1\)层的第i个节点的信息没法传给它自己(没法带到第\(l\)层的第i个节点),所以针对这两个问题,作者对公式1稍微做了下改变,如Eq (2)。
其中,\(\tilde{A}_{ij}=A+\mathbf{I}\),\(\mathbf{I}\)为\(n\times n\)单位矩阵--即解决自环,\(d_i=\sum_{j=1}^n{\tilde{A}_{ij}}\)为token i在最终的图中的度--即归一化解决high-degree问题。
2.2 Encoding Relations with GCN
假设我们有一个输入语句\(\mathcal{X}=[x_1,...,x_n]\),句子中两个实体subject、object分别用\(\mathcal{X}_s=[x_{s1},...,x_{s2}]\)来表示。使用多层GCN对输入语句进行编码,整体结构如图2,右侧图表示对其中一个词的GCN处理即下一层的每个位置都需要遍历它,relative的对位下一层也需要遍历上一层\(l-1\)层的每个词来计算度。
通过下面公式3的编码得到句子的表示\(h_{sent}\)。
\(h^{(0)}\)为输入序列,\(h^{(L)}\)为多层GCN的输出,\(f\)为一个池化函数\(f:\mathbb{R}^{d\times n}\rightarrow{\mathbb{R}^d}\),将输出的n个向量映射为一个vector即句子表示,又因为依赖树中与实体相关的信息对关系分类很有帮助,所以在最后的表示中又加入了两个实体的信息,如下公式4为subject实体的信息--\(h_s\)为从\(h^{(L)}\)中抽取的subject span内的hidden state的拼接池化处理得到的,对于object实体同上。
最后,将三者拼接后喂给前馈全连接网络(FCNN),后得到最终的句子表示\(h_{final}\),再作为之后的softmax线性层做分类。
同时,为了能够获得输入语句关于词序的上下文信息或者消歧,输入序列在喂给GCN之前,先经过position-attention 的LSTM(Zhang et al., 2017)得到预处理的句子表示再输入给GCN,至此整个流程大致结束了。
2.3 Incorporating Off-path Information with Path-centric Pruning
以上是GCN编码以及整个结构,但说了这么多都没涉及到依赖树的问题,本节介绍作者提出的新的剪枝方式对依赖树路径进行剪枝得到最后的路径--即一个序列,作为整个模型的输入。
首先要通过依赖标注工具对输入语句进行依赖标注得到如下图所示的一个依赖\(^{[2]}\)。
Xu et al.,(2015)\(^{[2]}\)这篇是直接用的最短依赖路径作为输入,但这对依赖树剪枝的太多了,原因最开始的两个问题也说了,因此我们采用一种path-centric pruning方式,”这里引入一个概念 K, 是指, 距离最短路径距离为 K 的图. 例如K=0, 也就是最短路径本身,K=1, 也就是最短路径上的点,加上距离最短路径为K的点的全部点的子图(即最短路径上的点及每个点的1阶子图),K=无穷,是指 LCA(最近公共祖先) subtree 全部,这里测试最佳 K, 答案是 K=1 是最佳答案\(^{[4]}\)。“
这种剪枝策略得到的最终的path(也就是一个word和edge关系的序列)也就如下图所示。
3 实验
做了挺多实验,包括消融实验、Entity Bias 做mention masked等各种分析,感兴趣可以看看原文,这里不再赘述。
- Path-centric Pruning有效果
- PA-LSTM对GCN结构有补充
- 没有实体masked的模型训练,泛化能力差一些
4 总结
依赖树对于长距离实体关系还有很有效的,对于依赖树可以看成图结构,用GCN处理效果不错,且LSTM对于局部信息以及context信息的处理较好,可以先用LSTM处理句子再输入给GCN,同时提出的这个剪枝策略相比(Xu et al., 2015)要好且比(Liu et al., 2015)\(^{[3]]}\)处理要简单些效果也更好。
参考
【1】Yuhao Zhang,* Peng Qi,* Christopher D. Manning.Graph Convolution over Pruned Dependency Trees Improves Relation Extraction.EMNLP 2018.
【2】Yan Xu,? Lili Mou,? Ge Li,??Yunchuan Chen,? Hao Peng,? Zhi Jin??.Classifying Relations via Long Short Term Memory Networks along Shortest Dependency Paths.ACl 2015.
【3】Yang Liu1,2? Furu Wei3 Sujian Li1,2 Heng Ji4 Ming Zhou3 Houfeng Wang1,2.A Dependency-Based Neural Network for Relation Classification.ACL 2015.
【4】赵来福.[论文笔记]利用基于依存树的GCN提升关系抽取任务.知乎 2018.https://zhuanlan.zhihu.com/p/46310190.