0%

NLP|RE-Integrate GNN into Document-level RE task|PART ONE

这篇博客主要是讲解图神经网络在Document-level关系抽取上的应用,共讲解4篇论文:《Inter-sentence Relation Extraction with Document-level Graph Convolutional Neural Network》、《Connecting the Dots: Document-level Neural Relation Extraction with Edge-oriented Graphs》、《Reasoning with Latent Structure Refinement for Document-Level Relation Extraction》、《Double Graph Based Reasoning for Document-level Relation Extraction》。

Inter-sentence Relation Extraction with Document-level Graph Convolutional Neural Network(ACL2019)

Background

文档级关系抽取的难点在于:我们往往需要抽取的entity pair是span across multi-sentences,所以我们必须对entity的local、non-local、semantic、dependency等信息进行提取和建模。这篇paper提出的GCNN,正是以word为node,words之间的local与non-local dependency作为edge,来构建document-level graph,从而解决文档级关系抽取问题。

Model

先放图~

GCNN模型分为4部分:input layer、graph construction、GCNN layer、MIL-based relation classification。

  • task definition:给定一个document $t$: $[w_1,w_2,…,w_n]$,$e_1,e_2$是$t$中的两个entity,我们的目标是:提取出$e_1$与$e_2$之间的relation。

  • input layer:对于document中的每一个word $i$,我们将它本身以及它与我们target entity pair的的相对位置分别编码为三个向量:$w_i,d^1_i,d^2_i$,如果一个entity有多个mention的话,那么就选择与当前word最接近的mention来计算相对位置。最后,每一个word的representation为:$x_i=[w_i;d^1_i;d^2_i]$。

  • graph construction:我们需要根据document来构建graph。在GCNN中,node set就是每一个word,edge set有5种:

    • Syntactic dependency edge:句法依赖,也就是使用每一个sentence中的word之间的句法关系建立edge;
    • Coreference edge:指代,对于表示同一个含义的phrase,进行连接;
    • Adjacent sentence edge:将sentence的根结点鱼上下文sentence的根结点进行连接;
    • Adjacent word edge:对于同一个sentence,我们去连接当前word的前后节点;
    • self node edge:word与本身进行连接;
  • GCNN layer:在构建好doucment graph的基础上,使用GCNN来计算得到每一个node的representation。这里使用的GCNN与普通的GCN不同,这里在aggregate node representation的时候,只使用了其邻域的信息,并且对于不同类型的edge,分别使用GCN(毕竟GCN只能用于同质图),最终的结果是所有类型的graph的结果的加和。我认为这里是GCNN模型最出彩的地方了,虽然现在来看并没有什么很新颖的,不过这种GCN的使用方法并不是很好,参见how power GNN这篇论文。公式如下:

    其中,$f()$表示某种encoder(e.g. relu)。

  • MIL-based relation classification:这里使用MIL。因为在一篇document中,每一个entity会有多个mention,我们希望能够去聚合target entity所有的mention,并通过bi-affine pairwise scoring来进行最终的关系分类。具体公式如下:

Experiment

  1. 数据集:CDR、CHR(这种两个biochemistry领域的document-level 关系抽取数据集)

  2. 结果

    结果就不分析了,没什么好分析的,总的来说,GCNN中规中矩吧,没有太出色的地方,缺点在于:构建了异质图,但是却没有考虑到不同类型的edge的作用;对于mention的处理不够好;logical reasoning几乎没有另外处理,纯靠GCNN;edge的构建需要其他的工具,不一定准确;对于word representation的表示不够。

Connecting the Dots: Document-level Neural Relation Extraction with Edge-oriented Graphs(EMNLP2019)

Background

这篇paper也是解决document-level relation extraction问题,提出的模型基于以下几个发现:1. 之前很多的graph based model都是基于node的,然而作者发现entity 之间的relation,可以通过节点之间路径来形成唯一的edge representation,从而更好地得到表达;2.每一个target entity的mentions对于entity之间的relation是非常重要的。这篇paper提出的EoG模型很好地解决了这两个问题。

Model

先放图~

EoG模型分为四部分:sentence encdoing layer、graph construction、inference layer、classification layer。

  • task definition:给定标注好的document(entity与mentions),目标是抽取出所有entity pair的relation。

  • sentence encoding layer:doucment中的每一个sentence的word都被编码为一个vector,实际上,这样得到的是4维的张量[batch_size,nums_seqs,seq_length,embedding_dim],然后将其输送到BILSTM中进行编码,得到contxtual representation。

  • graph costruction:graph construction分为两部分:node construction与edge construction。

    • node construction:在EoG模型中,有三种node:mention node($n_m$)、entity node($n_e$)、sentence node($n_s$)。mention node是所有entity的mentions的集合。每一个mention node的representation是此mention的所有word embedding的平均;entity node是所有entity的集合,每一个entity node的representation是该entity所有的mentions的平均;sentence node是所有sentence的集合,每一个sentence node是该sentence中所有word embedding的平均。除此之外,我们为了区别不同类型的node,还给每一个node的representation上concat对应类型的node embedding。所以最终的表示:

    • edge construction:有五种edge:mention-mention(MM)、mention-entity(ME)、mention-sentence(MS)、entity-sentence(ES)、sentence-sentence(SS)。MM edge,我们是连接两个在同一个sentence的两个mention,并且其表示我们是concat这两个mention本身的representation+context+两个mention的距离。具体公式:

      $x_{MM}$表示的是对于mention pair $(m_i,m_j)$的MM edge,当i=1,j=2时,$x_{MM}=[n_{m_1};n_{m_2};c_{m_1,m_2};d_{m_1,m_2}]$,其中$c_{m_1,m_2}$的计算如下:

      其中,$a_i$表示sentence的第$i$个word对此mention pair的重要性程度,也就是attention weight。

      ME edge,我们连接所有的mention与其对应的entity,$x_{ME}=[n_m;n_e]$;

      MS edge,将mention与此mention所在的sentence node进行连接,$x_{MS}=[n_m,n_s]$ ;

      ES edge,如果一个sentence中至少存在一个entity的mention,那么我们将setence node与entity node进行连接,$x_{ES}=[n_e;n_s]$;

      SS edge:将所有的sentence node进行连接,以获得non-local information,$x_{SS}=[n_{s_i};n_{s_j};d_{s_i,s_j}]$,其中$d_{s_i,s_j}$表示两个sentence的距离vector。

      当然了,我们最终的目的是提取出entity pair的relation,所以我们对所有的edge representation都做一个线性变换,从而让其唯独一致。即:$e^{(1)}_z=W_zx_z,z\in[MM,ME,MS,ES,SS]$。

  • inference layer:由于我们没有直接的EEedge,所以我们需要得到entity之间的唯一路径的表示,来产生EE edge的representation。这里使用了two-step inference mechanism来实现这一点。

    • the first step:利用中间节点$k$在两个节点$i$和$j$之间产生一条路径,如下:

    • The second step:将原始的edge(如果有的话)与所有新产生的edge进行聚合,如下:

      重复上述两步N次,我们就可以得到比较充分混合的EE edge。实际上,这一步就是为了解决logical reasoning。

  • classification layer:这里使用softmax进行分类,因为实验所使用的两个数据集其实都是每一个entity pair都只有一个relation。具体公式:

Experiment

  1. 数据集:CDR、GDA

  2. 实验结果:

    结果没什么好看的,主要来看一下ablation。

  3. ablation

    EoG模型做了一些消融实验。首先是对EoG(full)、EoG(NoInf)、EoG(Sent)在不同长度的entity pair进行实验:

    可以看到,当entity pair之间相差4句以上时,结果明显要好,这说明原始的EoG忽略了一些重要节点之间的交互信息,那么能不能让模型自动选择哪些节点要交互,哪些节点不要交互呢?(在LSR就是这么做的)除此之外,作者还对不同的compnent进行了消融实验。如下:

    从结果可以看到,去掉SS对结果影响巨大,这说明对于document-level RE,提取inter-sentence之间的交互信息是非常重要的,另外,MM似乎对结果影响最小,但是我认为MM对于entity pair的relation identification是非常重要的,只是EoG里面构造的方式不对,在之后的GAIN模型里面,可以看到MM对结果提升巨大,当然构建方式不一样。

  4. 当然了,最后还做了一些bad case的分析,有三种:使用and相连接的entity,model无法找到她们之间的relation;缺少coreference;3.不完全的实体链接。个人觉得EoG模型是一个非常好的开端,提供了很多思路,值得细细品读。

Reasoning with Latent Structure Refinement for Document-Level Relation Extraction(ACL2020)

Background

这篇我个人感觉是EoG模型的改良,针对的问题就是:在EoG模型的消融实验中,发现full version在长度大于4时的效果要比原始的EoG模型要好,那么在full的情况下,是否可以让模型自动选择哪些边重要,那些不重要呢?这就是LSR模型。

个人觉得这篇相对较难,主要是其使用矩阵树原理,对数学要求较高,如果觉得看不懂,只看个大概也是OK的,这篇个人觉得没有follow的价值。

Model

LSR模型分为三部分:node constructor、dynamic reasoner、classifer。

  • node constructor:这一部分分为两小部分:context encoding与node extraction,主要就是对document中的所有word进行编码,并得到graph所有类型的node的representation。先放图·

    • Context encoding:对于给定的document $d$,我们将其输入到一个encoder中(BILSTM/BERT etc),得到contextual representation。

    • node extraction:在LSR中,有三种node:mention node、entity node以及meta dependancy path node。mention node表示的是一个sentence中entity的所有的mention,其表示是该mention中的所有word的representation的平均;entity node指的是entity node,其表示是所有mention node的representation的平均;MDP表示一个句子中所有mention的最短依赖路径集,在MDP元依赖路径中,mention和单词的表示分别被提取为提及节点和MDP节点。(说实话,不是很懂MDP。🧐)

      ⚠️LSR与EoG模型不同的地方之一在于:mention node与entity node一样的,但是LSR没有sentence node,并且使用了MDP node来代替,本质上差不多吧,不过相比于sentence node,MDP node能够过滤掉无关信息(paper原话🧐),但是说实话,在context encoding中,已经引入了无关信息吧,而且在之后的实验中,确实也证明MDP没啥用。

  • dynamic reasoner:这一部分就是inference,因为在EoG里面,已经证明了没有inference对最终结果影响还是蛮大的。主要分为两部分:structure induction与multi-hop reasioning。先放图~

    • structure induction:这一部分主要是用来学习文档图的结构,从而得到文档图的邻接矩阵,从而以便使用GCN来进行aggregate。公式如下:

      其中,$s_{ij}$表示的是node i与node j之间的关联度,$s_i^r$表示的是node i被当作structure root node的非规范化概率,$P_{ij}$表示的是node i与node j之间的edge的权重,$L$是laplace矩阵,$\tilde L$是变体,为了进一步计算用的,$A$表示的是文档图的邻接矩阵。

      这里使用了structure attention network以及矩阵树原理的思想,这里不具体展开,想要深究的可以百度或者Google。

    • multi-hot reasoning:在得到邻接矩阵之后,LSR便使用GCN来对graph进行aggregate。公式如下:

      当然了,我们可以重复多次dynamic reasoner模块,从而得到更加丰富的node representation。

  • classifier:这一步就是直接对entity pair进行关系分类,使用sigmoid函数。如下:

Experiment

  1. 数据集:CDR、GDA、DocRED

  2. 结果

    从在DocRED上的结果来看,可以说是非常好。我们在来看一下其在CDR与GDA数据集上的结果。

    在没有MDP节点的情况下,取得了SOTA,说明MDP的作用一般。总的来说,LSR模型确实很新颖,但是follow的价值一般。

Double Graph Based Reasoning for Document-level Relation Extraction(EMNLP2020)

Background

这篇paper也是继承了EoG模型,主要解决三个问题:1.一个relation的subject与object可能位于不同的sentence,不能仅仅利用一个句子来得到relation;2.同一个entity可能会出现在不同的sentence当中,因此需要利用cross-sentence context information,从而更好的表示entity;3.很多relation需要logical reasoning(main issue)。为此提出了GAIN模型。个人认为这篇paper的模型比较优雅,挺好的。

Model

先放图~

GAIN模型分为四部分:encoding module、mention-level graph aggregation module、entity-level graph aggregation module、classification module。

  • task definition:给定一篇含有$N$个sentence的documnt:$\cal D=\{s_i\}_{i=1}^{N},s_i=\{w_j\}_{j=1}^{M}$,以及$P$个entity:$\cal E=\{e_i\}_{i=1}^{P},e_i=\{m_j\}_{j=1}^{Q}$,其中$e_i$表示第$i$个entity,$m_j$表示第$i$个entity的第$j$个mention。我们的目标是entity之间的relation。

  • encoding module:这一部分主要是将document中的word经过编码,得到contextual representation。给定有n个word的document:$\cal D=\{w_i\}_{i=1}^{n}$,然后将word embedding与type embedding以及coreference embedding进行concat,得到final word embedding,即:

    其中,$t_i$与$c_i$是$w_i$对应的named entity type id与entity id,对于那些不属于任何entity的word,我们引入Nonetype。得到final word embedding之后,我们将其输入到一个encoder当中(BISLTM/BERT etc),得到这一层的输出:

  • mention-level graph aggregation module:这个graph的构建主要是对mention之间的关系进行建模。在mention-level graph当中,node set:mention node与document node。mention node就是表示每一个mention,document node是一个虚拟节点,主要是为了对document information进行建模,同时也是视其为一个中继节点,让不同mention之间的交互变得更加容易。edge set:intra-entity edge、inter-entity edge、document edge。intra-entity edge是让同一个entity的mention彼此连接;inter-entity edge是让一个句子内的不同entity的mention之间进行连接;document edge是让所有的mention与document node进行连接。

    构建好graph之后,GAIN模型使用与GCNN中同样的GCN,如下:

    但是这种虽然很接近WL-test,但是会存在范数不收敛的情况,这个真的不需要考虑一下吗?🧐在stack N层GCN之后,对于每一个node,我们去concat所有layer的representation,来作为每一个node的final representation,即:$m_u=[h^{(0)}_u;h^{(1)}_u;…,h^{(N)}_u]$。

  • entity-level graph inference module:这一步就是进行inference,得到entity-entity的表示,用于最终的分类,所以path reasoning mechanism很重要。在entity-level graph中,我们将同一个entity的所有mention的表示的平均作为此entity的表示,即:$e_i=\frac{1}{N}\sum_n m_n$。entity node之间的边表示:$e_{ij}=\sigma(W_q[e_i;e_j]+b_q),\sigma \text{是激活函数}$。对于entity pair之间不同的路径,其表示是:$p^i_{h,t}=[e_{ho};e_{ot};e_{to};e_{oh}]$,当然了,entity pair之间的path会有多个,我们使用attention机制,如下:

    其中,$\sigma$是某一个激活函数。这里只使用了2-hop,如果使用multi-hop,效果会不会更好?🧐

  • classification module:这里就是最终的分类。但是这里借用了ESIM中表示,对于enitty pair $(e_h,e_t)$,其综合的inferential path information是:

    其中,$m_{doc}$就是document node,然后我们将其看作一个多标签分类问题,使用sigmoid函数,来完成分类,如下:

    最终的loss使用CE。

Experiment

  1. 数据集:DocRED

  2. 实验结果

    从结果上看,GAIN的效果是令人惊艳的。我们再来看看ablation,如下:

    从消融实验来看,可以发现各个模块对于结果的话影响都是非常巨大的,很优雅,没有多余的设计。

    目前来看,主要的处理:encoding?怎么构建图,才能够利用好mention、entity、sentence、document的信息(edge-oriented or node-oriented)?heterogeneous graph的处理?logical reasoning的处理?长期建模很重要,怎么更好地处理?

References

《Inter-sentence Relation Extraction with Document-level Graph Convolutional Neural Network》

code:见EoG的code,差不多

《Connecting the Dots: Document-level Neural Relation Extraction with Edge-oriented Graphs》

code:https://github.com/fenchri/edge-oriented-graph

《Reasoning with Latent Structure Refinement for Document-Level Relation Extraction》

code:https://github.com/nanguoshun/LSR

《Double Graph Based Reasoning for Document-level Relation Extraction》

code:https://github.com/DreamInvoker/GAIN

Would you like to buy me a cup of coffee☕️~