赞
踩
实体关系抽取是从文本中的句子里抽取出一对实体并给出实体间关系的任务。该任务的输入是一句话,输出是一个spo三元组(subject-predicate-object)。
对于实体关系抽取任务,最容易想到的方法就是先抽取句子中的实体,然后在对实体对进行关系分类,从而找出spo三元组,这种思想被称作管道模型(Pipeline)。管道模型把实体关系抽取分成了两个子任务,实体识别和关系分类,两个子任务按照顺序依次执行,它们之间没有交互。在管道模型之后,可以同时进行实体识别和关系分类的联合模型被提了出来,之后的实验证明联合模型由于实现了两个子任务之间的信息交互,大大提升了实体关系抽取的效果,目前针对实体关系抽取任务的研究大多采用联合模型。而联合模型又可以细分为基于参数共享的联合模型和基于联合解码的联合模型。
另外,解码方式对实体关系抽取性能的影响也很大,主要的解码方式有三种:基于序列标注、基于指针网络和基于片段分类的方法。
实体关系抽取任务根据抽取思路的不同可以按下图所示方式分类:
下图是参数共享方法和联合解码方法的对比。使用参数共享的联合模型和管道模型的结构是非常相似的,它们抽取spo三元组的过程都是分成多步完成的,主要的不同在于基于参数共享的联合模型的loss是各个子过程的loss之和,在求梯度和反向更新参数时会更新整个模型所有子过程的参数,而管道模型各子过程之间则没有联系。使用联合解码的联合模型则更符合“联合”的思想,主体,客体和关系类型是在同一个步骤中进行识别然后得出的。
End-to-End Relation Extraction using LSTMs on Sequences and Tree Structures
这篇论文是实体关系抽取领域内的一篇非常重要的论文,几乎所有和实体关系抽取有关的综述都会提到这篇论文,它是联合模型的开山之作,被之后许多论文借鉴。
本文提出了一种联合实体关系识别,基于参数共享的关系抽取模型,模型中有两个双向的LSTM-RNN,一个基于word sequence,主要用于实体检测;一个基于Tree Structures ,主要用于关系抽取;后者堆在前者上,前者的输出和隐含层作为后者输入的一部分。下图为整个模型的结构图:
该文章提出的模型就是一种典型的基于参数共享的联合模型,两个双向LSTM-RNN结构分别用于检测实体和分类关系,它们是单独训练的,但是loss是加在一起同时进行反向传播和更新的。
Joint Extraction of Entities and Relations Based on a Novel Tagging Scheme
该论文的主要工作是设计了一种特别的标签类型,将实体识别和关系分类转化为序列标注问题;然后提出了一个端到端模型,通过编码层对句子进行编码,将隐藏层向量输入解码层然后直接得到spo三元组,没有将抽取过程分为实体识别和关系分类两个子过程。
该论文提出的标记方法如下图所示,在该方法中,共包含 3 种标注信息:
(1) 实体中词的位置信息 { B,I,E,S,O } 分别表示{实体开始,实体内部,实体结束,单个实体,无关词};
(2) 实体关系类型信息,需根据关系类型进行标记,分为多个类别,如 { CF,CP,… } ;
(3) 实体角色信息 { 1,2 } 分别表示 { 实体 1,实体 2 }
该论文提出的端到端的神经网络模型如下图所示,对输入的句子,首先,编码层使用Bi-LSTM来进行编码;之后,解码层再使用 LSTMd( 作者提出的一种基于LSTM的改进型 ) 进行解码;最终,输出模型标注好的实体—关系三元组。
该论文提出的模型有一个明显的不足就是不能识别重叠的实体关系,下图表格展示了实体关系三元组的重叠类型,实体关系三元组根据重叠方式的不同可以分为三类:没有重叠的Normal类型,关系重叠的EPO类型,实体重叠的SEO类型。本文的模型由于标签设计的原因,只能识别Normal类型的实体关系三元组。
参数共享 | 联合解码 | |
---|---|---|
优点 | 1.实体识别和关系分类过程不是同步的,所以后面步骤的训练可以使用前面步骤的结果作为特征,2.灵活性更高,能够更好的处理重叠实体关系重叠问题。 | 没有明确的将抽取过程分为多个步骤,真正实现了实体识别和关系分类的信息共享。 |
缺点 | 实体识别和关系分类仍然是两个独立的过程,没有真正的“联合”。 | 目前要实现联合解码一般需要设计复杂的标签或者解码过程,而且联合解码的方式对重叠的关系三元组的识别效果不是很好。 |
常见的实体关系抽取的解码层的解码方式有三种,分别是基于序列标注,基于指针网络和片段分类。
基于序列标注的解码方式通常会使用CRF作为解码器,使用结合BIO或者BIOES标签的联合标签,每个token标记一个tag标签。解码层的任务就是确定每个token的tag,CRF能够进行标签约束,解码效果比直接使用Softmax更好。
序列标注方法在命名实体识别任务中非常常用,但是在实体关系抽取任务中,序列标注有非常多的不足,很重要的一点是一个token只能有一个标签,而关系抽取任务情况复杂,存在实体重叠、关系重叠等诸多特殊情况,经常需要设计比较复杂的联合标签才能完成对实体关系三元组的抽取,然而标签越复杂,抽取效果就越差。因此最新的论文基本都不再采用这种方法。
上文提到的论文Joint Extraction of Entities and Relations Based on a Novel Tagging Scheme中提出的模型使用的就是序列标注方法,该模型就无法解决实体重叠问题。
下图中的句子使用了序列标注方法,采用BIO和实体类型联合标签,该方法只能确定“北京”这一个实体,而无法将另一个实体“北京德易东方转化医学研究中心”也一起表示出来。
序列标注方法只有一个标签序列,表达能力较弱,不能解决实体重叠问题,因此有人提出使用MRC机器阅读理解中大量使用的指针网络来对关系抽取中的输入句子进行标注,使用多个标签序列(多层label网络)来表示一个句子。如下图所示,该指针网络采用了两个标签序列,一个表示实体的起始位置,另一个表示实体的结束位置。在解码时使用Sigmoid代替Softmax,预测每个token对应的标签是0还是1。由于指针网络的表达能力较强,可以很好地解决实体-关系重叠等问题,所以在目前的实体关系抽取方法中被大量使用。虽然指针网络是一个比较好的方案,但是在指针网络的使用过程中很可能会遇到标签不平衡问题,需要进行一些调参工作。
片段分类方法和上述两方法有较大的差异,片段分类方法找出所有可能的片段组合,然后针对每一个片段组合求其是否是实体的概率。如下图所示,针对一个句子,片段排序方法从开始位置起依次选取一个token,两个token……,组成实体可能的片段,然后求该片段是否是实体的概率。
在确定所有的实体之后,对所有实体两两配对,然后求每一对实体对之间存在关系的概率。例如,如果有N个实体,M种关系,那么存在N × N个实体对(实体对是有序的),需要求N × N × M个概率,来判断每个实体对之间的关系。
如果文本过长,片段分类会产生大量的负样本,在实际中需要限制span长度并合理削减负样本。
序列标注 | 指针网络 | 片段分类 | |
---|---|---|---|
优点 | 使用简单,准确率高 | 能够在解决实体重叠问题的同时保证较高的准确率 | 可以直接得到实体,不需要从标签到实体的转换过程 |
缺点 | 无法解决实体重叠问题 | 1.容易遇到标签不平衡问题。2.在使用解码层得到指针网络的多个标签序列之后还需要专门的程序根据指针网络确定实体 | 文本过长时会大大增加计算量 |
实体关系抽取任务SOTA排行榜上目前最佳的模型,这几个模型分别在不同的数据集上达到了SOTA效果:
模型 | ETL-span | HBT | SpERT | DYGIE |
---|---|---|---|---|
模型结构 | 基于共享参数的联合模型 | 基于共享参数的联合模型 | 基于参数共享的联合模型 | 基于参数共享的联合模型 |
解码方式 | 指针网络 | 指针网络 | 片段分类 | 片段分类 |
达到SOTA效果的数据集 | NYT-single | NYT,WebNLG | CoNLL04 | ACE04,ACE05 |
论文 | Joint Extraction of Entities and Relations Based ona Novel Decomposition Strategy | A Novel Hierarchical Binary Tagging Framework forJoint Extraction of Entities and Relations | Span-based Joint Entity and Relation Extraction withTransformer Pre-training | A General Framework for Information Extractionusing Dynamic Span Graphs |
该模型的抽取方案借鉴了 seq2seq 的概率图思路。在 seq2seq 解码器的解码过程是层次递归进行的的,其实际上是在建模
P
(
y
1
,
y
2
,
.
.
.
,
y
n
∣
x
)
=
P
(
y
1
∣
x
)
P
(
y
2
∣
x
,
y
1
)
.
.
.
P
(
y
n
∣
x
,
y
1
,
y
2
,
…
,
y
n
−
1
)
P(y_1,y_2,...,y_n|x)=P(y_1|x)P(y_2|x,y_1)...P(y_n|x,y_1,y_2,…,y_n-_1)
P(y1,y2,...,yn∣x)=P(y1∣x)P(y2∣x,y1)...P(yn∣x,y1,y2,…,yn−1)
而对于信息抽取任务,三元组的抽取过程也能够转化为上述层次递归的方式进行抽取,对于三元组 (s, o, p),其抽取过程可以建模为:
P
(
s
,
p
,
o
)
=
P
(
s
)
P
(
o
∣
s
)
P
(
p
∣
s
,
o
)
P(s,p,o)=P(s)P(o|s)P(p|s,o)
P(s,p,o)=P(s)P(o∣s)P(p∣s,o)
即首先预测 s(主体),然后根据 s 来预测该 s 所对应的 o (客体)及 p(关系)。具体的抽取过程如下图所示,抽取过程的开始首先预测出句子中所有的主体,Trump和Queens。然后把每一个主体作为触发词,预测该主体对应的客体及关系。在训练阶段模型会从句子中随机选取一个主体来训练,通过多个epoch的训练达到遍历全部数据的目的。预测阶段会逐一遍历每一个主体,预测出每个主体对应的客体和关系。
由于抽取 主体以及抽取主体所对应的客体及关系的过程均是非唯一性的(存在实体及关系重叠问题),因此,作者采用了 MRC 中常用的指针网络的抽取方法,即仅抽取答案的开始和结束位置,且把预测开始和结束位置的任务转化为了预测每一个位置是否为开始位置或结束位置(将softmx换成sigmoid)。模型的整体结构如下图所示:
整个模型可以分为三大部分,第一部分Shared Encoder,是模型的编码层,将输入的每个字编码为字向量。第二部分HE Extractor使用Shared Encoder的结果抽取(s,o,p)三元组中的主体s,第三部分TER Extractor也使用Shared Encoder的结果作为输入,同时还要使用HE Extractor抽取出的s作为触发词,抽取o和p。模型的loss是HE Extractor和TER Extractor两部分的loss之和,通过共享参数的方式训练。
HE Extractor和TER Extractor都使用了HBT结构来抽取结果(这里的HBT结构和下文中提到的HBT模型之间没有关系),这个HBT结构由两个双向LSTM组成,分别用来预测目标实体的开始位置和结束位置,预测结束位置的LSTM会使用预测开始位置的LSTM的结果作为特征,通过增加约束来避免不合理的预测结果,比如预测的结束位置在开始位置前面。
该模型的论文指出,当前处理关系重叠得方法存在一系列问题,大部分模型都是先抽取出实体对,然后将关系视为要分配给实体对的离散标签。 这种表述使关系分类成为困难的机器学习问题。 例如,当在相同上下文中的同一实体参与多个(在某些情况下超过五个)有效关系(即重叠的三元组)时,分类器需要大量的监督学习才能确定上下文与关系的对应关系。
该模型设计了一种 Hierarchical Binary Tagging 的框架,这个框架将三元组的抽取任务建模为三个级别的问题,从而能够更好解决三元组重叠的问题。其核心观点就是不再将关系抽取的过程看作实体对的离散标签,而是将其看作两个实体的映射关系,即f(s,o)−>r,整个三元组的过程可以概括为:
抽取三元组中的 subject
针对每一个 fr(⋅),抽取其对应的 object
这种思想和上面的ETL-span模型的思想极为相似,HBT模型也是先抽取出主体,然后使用主体作为触发词来抽取主体对应的客体和关系。
模型的整体结构如上图所示,主要包括如下几个部分:
p i s t a r t _ s = σ ( W s t a r t x i + b s t a r t ) p^{start\_s}_i=σ(W_{start}x_i+b_{start}) pistart_s=σ(Wstartxi+bstart)
p i e n d _ s = σ ( W e n d x i + b e n d ) p^{end\_s}_i=σ(W_{end}x_i+b_{end}) piend_s=σ(Wendxi+bend)
Relation-specific Object Taggers:针对每一个 subject,都需要对其进行之后的 object 进行预测。由图中可知,其与 Subject Tagger 基本一致,主要区别在于每一个关系类别独享一组 object 分类器,同时还要将subject作为特征和BERT词向量拼接后作为输入,计算公式如下:
p
i
s
t
a
r
t
_
o
=
σ
(
W
s
t
a
r
t
r
(
x
i
+
v
s
u
b
k
)
+
b
s
t
a
r
t
r
)
p^{start\_o}_i=σ(W^r_{start}(x_i+v^k_{sub})+b^r_{start})
pistart_o=σ(Wstartr(xi+vsubk)+bstartr)
p i e n d _ o = σ ( W e n d r ( x i + v s u b k ) + b e n d r ) p^{end\_o}_i=σ(W^r_{end}(x_i+v^k_{sub})+b^r_{end}) piend_o=σ(Wendr(xi+vsubk)+bendr)
DYGIE是一个多任务的信息抽取框架,该框架可以在不经过修改的情况下,同时完成命名实体识别、关系抽取和共指消解三个不同的NLP任务。DYGIE构建了一个可以更新的动态图,以实体span作为图中的节点,用关系信息和共指信息来构建边,span的表示可以通过从关系信息和共指信息获得的上下文信息进行更新优化。
有许多研究表明多任务学习通过各任务之间的信息交互,使得整体效果好于单独执行一个任务的效果。上图的例子展示了一个多任务学习的示例,该示例同时执行命名实体识别、关系抽取和共指消解三个任务。这里有两个句子,只关注第二个句子的信息无法预测出“This thing”和“it”这两个实体的实体标签。然而,由于父节点“car”的类型为VEH,因此预测“This thing”和“it”这两个实体类型也是VEH,通过共指关系帮助解决了命名实体识别问题。类似地,“Tom”位于”Starbucks”这个地点,根据“Mark”和“Tom”的关系(都是人名)可以推断出“Mark”也在”Starbucks”,这是通过命名实体识别获得的实体类型信息辅助解决了关系抽取任务。
DyGIE模型首先枚举出每个句子中所有的text span,然后识别出最可能表示实体的text spans,并将这些spans作为图中的节点。根据这些节点,预测出节点间的共指链接和关系链接,然后使用这些链接作为图中的有可信度权重的边。图构建完成后,节点使用从相邻的关系类型和共指实体传播来的信息,对节点的向量表示进行更新优化。优化后的span表示用于多任务框架,以对实体类型、关系类型和共指链接进行预测。
下图展示了DyGIE的训练过程:
第一层是输入的原始数据,Token Representation层是一个编码层,对词向量进行编码。Span Representation层将编码层的输出结果与其他信息(span长度等)拼接得到实体span的原始输入 g i 0 g_i^0 gi0。Coreference Propagation层通过共指链接更新span表示,加入共指信息,共迭代N次,得到 g i N g_i^N giN。Relation Propagation层通过关系链接更新span表示,加入关系信息,迭代M次,得到 g i N + M g_i^{N+M} giN+M。Final Prediction根据最终形态的span表示 g i N + M g_i^{N+M} giN+M,完成命名实体识别,关系抽取和共指消解三个任务。
对于命名实体识别任务,使用 g i N + M g_i^{N+M} giN+M作为输入,为每个span s i s_i si计算其为每个实体类别的分数 P E ( i ) P_E(i) PE(i)。
对于关系分类任务,使用一对span表示, g i N + M g_i^{N+M} giN+M, g i N + M g_i^{N+M} giN+M作为输入,为每个span对 s i s_i si和 s j s_j sj计算其为每个关系类别的分数 P R ( i , j ) P_R(i,j) PR(i,j)。
对于共指消解任务,使用Coreference Propagation层的结果,为每个span对 s i s_i si和 s j s_j sj计算其为共指关系的分数 pair ( g i N , g j N ) (g_i^N,g_j^N) (giN,gjN)
SpERT是一个使用片段分类作为解码方式的联合模型,SpERT分为span classification 、Span Filtering和relation classification三层结构。span classification 和 Span Filtering层对实体进行筛选和识别,relation classification 进行关系抽取。模型架构如下图所示:
SpERT使用bert获取文本的向量表示 ( e 1 , e 2 , . . . e n , c ) (e_1,e_2,...e_n,c) (e1,e2,...en,c)。之后,使用片段分类的方法,用枚举的方式将所有可能的文本片段列举出来,然后计算文本片段是实体的概率,计算实体概率时用到了token的向量、文本片段长度和特殊标记cls作为特征,拼接后作为span分类阶段的输入。为了减小计算量,模式设置了文本片段的最大长度。
在获得实体表示后,SpERT通过将实体两两配对然后对每一对实体对求它们之间关系的概率。考虑到需要分类的关系太多,SpERT在关系分类过程中还使用了负采样。
另外还有一些模型没有达到SOTA效果,但是其思路非常值得借鉴
模型 | DuIE_baseline | multi-head+AT | PASL | Multi-turn QA |
---|---|---|---|---|
模型结构 | 基于联合解码的联合模型 | 基于参数共享的联合模型 | 基于联合解码的联合模型 | 基于参数共享的联合模型 |
解码方式 | 指针网络 | 序列标注 | 序列标注 | 指针网络 |
论文 | 无 | Joint entity recognition and relation extraction as amulti-head selection problem | Joint Extraction of Entities and Overlapping Relations Using Position-Attentive Sequence Labeling | Entity-Relation Extraction as Multi-turn Question Answering |
该模型是百度20年关系抽取比赛的baseline模型,采用了指针网络,联合解码的方法,统一了实体识别和关系分类两个过程。DuIE_baseline的结构很简单,使用Ernie作为编码层,对字级别token进行编码,解码层是一个全连接层,以Ernie字向量作为输入,输出一个多层label实现实体关系抽取。
该模型最大亮点是设计了一个简单而有效的标注框架,该框架使用token level 的多label分类,即每一个token对应多个label。假设一共存在R个关系,那label一共有(2*R+2)层,如果是subject中的第一个token,则标记为「B-S-关系名称」;如果是object中的第一个token,则标记为「B-O-关系名称」;其余的实体token标记为「I」,不隶属于实体的token标记为「O」;
如下图示例中的2个spo三元组,「王雪纯-配音-晴雯」和「王雪纯-配音-红楼梦」,存在两个关系「配音-人物」和「配音-作品」,对于subject「王雪纯」,「王」是一个复合标签,同时标记为「B-S-配音-作品」和「B-S-配音-人物」;其余的「雪」「纯」用「I」来标注;对于object「红楼梦」,「红」标注为「B-O-配音-作品」;其余的「楼」「梦」用「I」来标注;对于object「晴雯」,「晴」标注为「B-O-配音-人物」;其余的「雯」用「I」来标注。
该模型将实体关系联合抽取的任务当作一个多轮问答问题来处理,即每种实体和每种关系都用一个问答模板进行刻画,从而这些实体和关系可以通过回答这些模板化的问题来从上下文中进行抽取。
Multi-turn QA的抽取过程如下图所示:
Multi-turn QA可以分为头实体抽取和关系与尾实体抽取两部分。
头实体抽取:由于每一轮多轮对话都需要一个头实体来作为 trigger,因此需要事先抽取句子中所有的头实体,而抽取实体的过程可以看作一个抽取 entity_question 答案的过程。所有 entity_question 都存放在EntityQuesTemplates 中,每一种 entity_question 都对应一类实体的抽取
关系与尾实体抽取:ChainOfRelTemplates 定义了一个关系序列,我们需要根据这个关系序列来进行多轮问答。同时,它也定义了每种关系的模板,为了生成对应的问题,要在模板槽(slot)中插入之前抽取的实体。然后,关系 REL 和尾实体 e 就能通过回答问题同时被抽取出来。如果回答是 None,就说明没有答案,即只有同时抽出头实体,以及头实体存在对应的关系和尾实体被抽出时,才算是成功抽出一个满足条件的三元组。
本文的思想和ETL-span,HBT两个模型非常相似。都是先抽取一个头实体作为触发词,然后在从句子中抽取这个头实体对应的尾实体和关系。这种抽取思路的主要优点是能够整合对关系分类任务重要的一些先验信息,这些信息可以帮助解决现有关系抽取模型难以解决的问题,如远距离实体对、关系重叠问题。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。