论文笔记 – A Frustratingly Easy Approach for Joint Entity and Relation Extraction

Zexuan Zhong, Danqi Chen, “A Frustratingly Easy Approach for Joint Entity and Relation Extraction”, arxiv

1 简介

这篇文章使用 pipeline 的方法做实体关系抽取,效果却好过一众 joint 方法,取得 sota。这篇文章提出的方法使用两个独立的 BERT 分别做实体抽取和关系分类的任务,并且在关系分类的任务中显式地把实体信息拍在句子里,逐对(每对 entity 修改后的句子就都不一样了) embedding 上下文信息,做关系预测。为了提升速度,作者还提出了近似的 batch 训练方法。

整篇文章得到这几个结论:

  1. 为什么用两个独立的模型?实体和关系抽取所需要的上下文信息是不同的,因此共享会降低性能。
  2. 实体信息(span 边界和实体类型)对于关系抽取非常重要。
  3. 跨句子的信息对于实体和关系抽取都很有用。

2 方法

这部分很好理解,[1] 已经写了,我就复制过来 😄

2.1 实体抽取

如上图 (a) 所示,采取 Span-level NER [2] 的方式,即基于片段排列的方式,提取所有可能的片段排列,通过 SoftMax 对每一个 Span 进行实体类型判断。这样做的好处是可以解决嵌套实体问题,但计算复杂度较高,因此需要限制 Span 长度(对于含 n 个 token 的文本,理论上共有 $n(n+1)/2$ 种片段排列)。

2.2 关系抽取

这部分是拿来实体抽取的结果,做关系抽取。(实际实现的时候,还是用 gold entity 做的效果更好)

如上图 (b) 所示,对所有的实体 pair 进行关系分类。其中最重要的一点改进,就是将实体边界和类型作为标识符加入到实体 Span 前后,然后作为关系模型的 input。例如,对于实体 pair(Subject 和 Object)可分别在其对应的实体前后插入以下标识符:

  • <S:Md> 和 </S:Md>:代表实体类型为 Method 的 Subject,S 是实体 span 的第一个 token,/S 是最后一个 token;
  • <O:Md> 和 </O:Md>:代表实体类型为 Method 的 Object,O 是实体 span 的第一个 token,/O 是最后一个 token;

对于关系模型,对每个实体 pair 中第一个 token 的编码进行 concatenate,然后进行 SoftMax 分类。

但是这样计算开销很大:每个 entity pair 都要来一次编码。于是作者提出批处理的近似方法。

如上图 (c) 所示,可将实体边界和类型的标识符放入到文本之后,然后与原文对应实体共享位置向量。上图中相同的颜色代表共享相同的位置向量。具体地,在 attention 层中,文本 token 只去 attend 文本 token、不去 attend 标识符 token,而标识符 token 可以 attend 原文 token。综上,通过这种「近似模型」可以实现一次编码文本就可以判断所有实体 pair 间的关系。

2.3 跨句子信息

跨句信息可用于帮助预测实体类型和关系(尤其是在代词性提及中),所以还通过简单方式引入了跨句信息,即文本输入的左右上下文中分别滑动 $(W-n)/2$ 个words,$n$ 为文本长度,$W$ 为固定窗口大小,实验中取 100 最好。

3 实验结果

  1. 独立编码很有用
  2. 引入实体类别信息对关系分类很重要,显示地直接拍到句子里更好,span 边界和实体类别信息都有用;辅助 loss 不如显式的方法
  3. 作者在实体识别的模型中引入预测 span pair 关系的辅助 loss,这样就把关系信息也用于实体识别了,最后发现关系信息对于实体识别没啥用

pipeline 方法会有曝光误差,即在训练阶段,使用了 golden truth 作为已知信息对训练过程进行引导,而在推理阶段只能依赖于预测结果。这导致中间步骤的输入信息来源于两个不同的分布,对性能有一定的影响。作者还做了一些实验探究这个问题:

  1. 关系分类模型在训练时 ① 使用 gold entity ② 使用 jackknifing method(分十份,每一份都用在其它 9 份上训练的模型预测结果)发现还是 ① 最好。曝光误差还是无法证实。
  2. 现在的模型相当于,如果在实体抽取的时候没抽到 gold entity,那么关系抽取时也一定凉了。作者就扩充了关系抽取实体对的范围,取实体抽取模型输出分数最高的 40% 作为 top span,在这些 span 上用 [2] 的方法 beam search 做关系抽取,发现不行,噪声太多。

4 参考

[1] 反直觉!陈丹琦用pipeline方式刷新关系抽取SOTA

[2] David Wadden, et.al “Entity, Relation, and Event Extraction with Contextualized Span Representations”, EMNLP 2019 src

发表评论