文章目录
1 文档级关系抽取
1.1 将关系抽取由句子级扩展到文档级的原因
目前大多数关系抽取方法抽取单个实体对在某个句子内反映的关系,在实践中受到不可避免的限制:在真实场景中,大量的关系事实是以多个句子表达的。文档中的多个实体之间,往往存在复杂的相互关系。
以下图为例,就包括了文章中的两个关系事实(这是从文档标注的19个关系事实中采样得到的),其中涉及这些关系事实的命名实体用蓝色着色,其它命名实体用下划线标出。为了识别关系事实(Riddarhuset,country,Sweden),必须首先从句子4中抽取Riddarhuset位于Stockholm的关系事实,然后从句子1确定Stockholm是Sweden的首都,以及Sweden是一个国家,最后从这些事实推断出Riddarhuset的主权国家是瑞典。
该过程需要对文档中的多个句子进行阅读和推理,这显然超出了句子级关系抽取方法的能力范围。根据从维基百科采样的人工标注数据的统计表明,至少40%的实体关系事实只能从多个句子联合获取。因此,有必要将关系抽取从句子级别推进到文档级别。
1.2 文档级关系抽取数据集DocRED
19年的ACL上提出了一个关系抽取数据集DocRED,为文档级关系抽取的研究提供了一个非常好的标注数据集,今年的ACL上,就有论文使用DocRED作为语料,提出了文档级关系抽取的模型。
DocRED包含对超过5000篇Wikipedia文章的标注,包括96种关系类型、143,375个实体和56,354个关系事实。这在规模上超越了以往的同类精标注数据集。与传统的基于单句的关系抽取数据集相比,不同之处在于,DocRED中超过40%的关系事实只能从多个句子中联合抽取,因此需要模型具备较强的获取和综合文章中信息的能力,尤其是抽取跨句关系的能力。
2 图神经网络
相比较传统的CNN和RNN,图神经网络能够更好地在文档层面上建立实体之间的联系,从而实现文档级的关系推理。因此在解决文档级实体关系抽取任务中,图神经网络的主流的方法。
2.1 图网络结构的分类
在使用图神经网络时,图的构造是关键的一个环节,根据是否需要区分图中边的类型,可以将图分为异质图和同质图。
- 异质网络图
这种图定义了不同类型的边,边的表示方式因类型不同而有所区别,主要的代表工作是GCNN、EOG。 - 同质网络图 (latent structure)
把所有的边当作同质关系进行处理,利用attention或者其他的方式自动进行区分,主要的代表是LSR。
2.2 GCN
图卷积神经网络是一个很好地在图结构上进行特征抽取的神经网络模型,在图网络上进行卷积,简单的说就是是用=邻接节点的特征,更新节点自己的向量表达,达到特征传递的目的。使用GCN时,首先构建一个无向图,然后计算图的邻接矩阵 A i j A_{ij} Aij,下面是GCN的一般形式:
这里需要注意的是GCN只能在同质网络图上使用,即不区分边的类型,所有的边在进行特征传递时进行相同的处理。而且上面的GCN一般形式只能在无向图中使用,如果是有向图,则需要针对问题进行调整。
GCN每次卷积过程中,节点通过跟自己相连接的节点的向量表示更新自己的向量表达。下图展示了GCN的卷积过程,第一次卷积操作过后节点使用一阶邻接节点的特征更新自己的状态
第二次卷积操作过后节点使用到了二阶邻接节点的特征
3 文档级关系抽取论文总结
GP-GNN
论文:Graph Neural Networks with Generated Parameters for Relation Extraction
GP-GNN主要解决的是句子级的长距离关系推理。GP-GNN首先用文本序列中的实体构造一个全连接的同质网络图,不区分边的类型,通过编码的方式让模型自动学习边的参数(这也是为什么模型叫做生成参数的GNN的原因)。图构建完成之后使用三个模块来处理关系推理:
编码模块:
该模块的输入是 E ( x t i , j ) = [ x t ; p t i , j ] E(x^{i,j}_t) = [x_t;p^{i,j}_t] E(xti,j)=[xt;pti,j],其中 x t x_t xt是单词t的词向量, p t i , j p^{i,j}_t pti,j表示单词t与一个实体对的相对位置向量,单词t相对于实体对1,2的位置向量为 p t 1 , 2 p^{1,2}_t pt1,2。编码模块最终得到一个向量 A i , j ( n ) A^{(n)}_{i,j} Ai,j(n) 作为图中边的参数:
A i , j ( n ) = [ M L P n ( B i L S T M n ( ( E ( x 0 i , j ) , E ( x 1 i , j ) , . . . , E ( x l i , j − 1 ) ) ] A^{(n)}_{i,j}=[MLP_n(BiLSTM_n((E(x^{i,j}_0),E(x^{i,j}_1),...,E(x^{i,j}_l-1))] Ai,j(n)=[MLPn(BiLSTMn((E(x0i,j),E(x1i,j),...,E(xli,j−1))]
传播模块:
使用GCN,在各个节点之间传播关系信息,其中 N ( v i ) N(v_i) N(vi)表示图G中节点 v i v_i vi的邻接节点。
分类模块:
首先构建两个节点之间的关系表示 r v i , v j r_{ {v_i},{v_j}} rvi,vj,其中K表示传播模块的层数。
r v i , v j = [ [ h v i ( 1 ) ] ⊙ [ h v j ( 1 ) ] ; [ h v i ( 2 ) ] ⊙ [ h v j ( 2 ) ] ; . . . ; [ h v i ( K ) ] ⊙ [ h v j ( K ) ] ; ] r_{ {v_i},{v_j}}=[[h^{(1)}_{v_i}]⊙[h^{(1)}_{v_j}];[h^{(2)}_{v_i}]⊙[h^{(2)}_{v_j}];...;[h^{(K)}_{v_i}]⊙[h^{(K)}_{v_j}];] rvi,vj=[[hvi(1)]⊙[hvj(1)];[hvi(2)]⊙[hvj(2)];...;[hvi(K)]⊙[hvj(K)];]
然后使用 r v i , v j r_{ {v_i},{v_j}}