Span-based Joint Entity and Relation Extraction with Transformer Pre-training


Span-based Joint Entity and Relation Extraction with Transformer Pre-training

发表在ECAI 2020上的一篇文章。

Background(要解决的问题)

  1. 传统的BIO/BILOU等序列标注方式不能很好地解决重叠实体的问题,例如实体codeine被实体codeine intoxication所包含;
  2. 进行关系抽取时,大多的方法没有应用到实体与实体之间相隔的局部上下文关系。

Contributions(创新点)

  1. 抛弃了传统的BIO/BILOU标注实体的方式,构建了一个完全基于跨度的联合实体识别和关系抽取模型——SpBERT;
  2. 使用了负采样的方式增强模型;
  3. 通过max pooling的方式,提取了一个关系中实体对之间的文本特征

Method

0. An Example of the Method(Overview)

如上图所示,模型主要由span classificationspan filteringrelation classification三个部分构成。其中span classificationspan filtering用于实体的识别和分类,relation classification用于关系抽取。

1. Span Classification

通过BERT之后,模型获得了句子的向量表示:$(c,e_1,e_2,…,e_n)$。之后模型将在任意的跨度(即span)内判断其是否为实体。例如,对于句子(we,will,rock,you),将要检测(we)(we will)(rock,you)等等跨度是否为实体。在实现阶段,模型不会对所有的实体和关系进行beam search,而是通过positive entity span + negative sampling的方式构建训练集,具体来说是:使用所有标注为实体的跨度$S^{gt}$作为正样本,同时从不是实体的跨度中,只随机抽取其中的$N_e$个作为负样本。

如上图所示,Span Classifier的输入包含三个部分:跨度的向量表示(红色),宽度嵌入(蓝色),CLS的向量表示(绿色)。

其中,跨度的向量表示是通过max pooling操作得来的。宽度嵌入的含义是不同的跨度宽度,所表达的信息是不一样的,因此需要加入到特征中。CLS的向量表示用于提供语境上下文的信息。

最后,过一个线性分类层就可以得到跨度对应的实体类型了:
$$
{\bf {\hat y}} ^s = softmax(W^s \cdot {\bf x}^s + b)
$$

2. Span Filtering

这个步骤是衔接Span Classification和Relation Classification,功能很简单,就是剔除Span Classification中预测不是实体的跨度,将是实体的跨度输入到Relation Classification之中。

3. Relation Classification

在上一步中,我们得到了所有预测为实体的跨度,接下来就是预测它们之间的关系,与Span Classification相似,这里同样使用positive relation + negative sampling的方式,具体来说就是:使用所有标注为存在关系的entity pair作为正样本,其他不存在关系的entity pair中,我们随机采样$N_r$个作为负样本。

如上图所示,Relation Classification的输入包含三个部分:$Entity_i$的特征向量,$Entity_i$和$Entity_j$之间的local context的特征向量,以及$Entity_j$的特征向量。

最后将其输入到一个多标签的线性分类器(而不是多分类)中:
$$
{\bf \hat y_{1/2}} := \sigma(W^r \cdot x^r_{1/2} + b^r)
$$
因为关系是非对称的,所以要分开识别$(Entity_i,Entity_j)$和$(Entity_j,Entity_i)$。

最后的损失函数就是常见的Joint损失函数:
$$
\mathcal L = \mathcal L^s + \mathcal L^r
$$

Experiments

作者在三个数据集:CoNLL04,SciERC,ADE上进行了实验,得到的结果都是SOTA:

后记

思考

这篇文章的思路其实也很简单,但是结果却是很有效的。其改进了上篇文章中会存在的overlapping entity的问题。

同时,它的思想更像是一种非常暴力地枚举每个可能的span,然后一一进行判断,假设一个句子有$N$个token,那么理论上需要判断的span有$N \cdot (N+1) /2$,计算量应该会很大,好在其在训练时,提出了有效的negative sampling技术,保证了计算量不会太大。下图是我在知乎文章中看到的更加形象的描述图:

后续阅读

  1. Entity, Relation, and Event Extraction with Contextualized Span Representations
  2. Empirical Analysis of Unlabeled Entity Problem in Named Entity Recognition

参考文档

  1. 刷爆3路榜单,信息抽取冠军方案分享:嵌套NER+关系抽取+实体标准化
  2. 信息抽取——实体关系联合抽取
  3. 知识图谱之nlp端到端实体关系抽取最强综述

文章作者: CarlYoung
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 CarlYoung !
 上一篇
Negative Sampling in Relation Extraction Negative Sampling in Relation Extraction
参考文献 Negative Sampling负采样采的究竟是什么 Understanding Negative Sampling in Knowledge Graph Embedding Generating negative eviden
2021-05-16 CarlYoung
下一篇 
Joint entity recognition and relation extraction as a multi-head selection problem Joint entity recognition and relation extraction as a multi-head selection problem
本文通过将联合实体关系抽取任务定义为一个NxNxC的分类任务,通过multi-head selection的方式为每个实体抽取多个关系。
  目录