Joint entity recognition and relation extraction as a multi-head selection problem


Joint entity recognition and relation extraction as a multi-head selection problem

发表在Expert Systems with Applications上的一篇文章。

Background(要解决的问题)

  1. 人工构造的特征或者是NLP tools得到的特征存在误差传播;
  2. pipeline方法忽略了任务之间的相关性。

Contributions(创新点)

  1. 模型不依赖于人工构造的特征或者是NLP tools得到的特征,实现了在不同的领域(金融,生物等)和不同的语言(英语,德语等)的泛化;
  2. 能同时进行实体和关系的抽取;
  3. 定义实体关系联合抽取问题为multi-head selection problem,解决一个实体可能与多个实体都存在关系的问题;

Method

0. An Example of the Method(Overview)

如上图所示,该模型包含Embedding Layer,BiLSTM Layer,CRF Layer,Sigmoid Layer四个主要的层。下面对它们进行逐一地阐述:

1. Embedding Layer

通常情况下,embedding都是直接用pre-trained好的word embedding。但是在Embedding Laye还使用BiLSTM引入character级别的embedding。作者认为character级别的embedding可以学习到prefix和suffix之类的词法特征,从而提供更多的信息(例如bedroom和restroom共享了后缀“room”)。示例如下:

2. BiLSTM Layer

就是传统的双向LSTM。

3. CRF Layer for Named Entity Recognition

也是传统的技术,在BiLSTM后面接CRF来更好地进行NER,论文中实体识别部分的标注方式用的是BIO。

4. Sigmoid Layer for Relation Extraction

该层采用multi-head selection作为关系抽取的解答范式。输入是Embedding Layer中得到的word embedding concatenate上对应的实体类型的label embedding

multi-head的意思是对于一个实体,它可能与句子中的多个实体之间存在关系。同时,考虑到一个实体包含多个token,作者规定使用每个实体的最后一个token来代表这个实体。最后一个token就称为head。

例如,上面的example图中,对于实体John Smith,存在着两个关系——<John Smith, works for, Disease Control Center><John Smith, lives in, Atlanta>

假定当前需要判断$token_i$和$token_j$之间是否存在关系$r_k$,则计算公式如下:
$$
s(z_j, z_i, r_k) = V^{(r_k)}f(U^{(r_k)}z_j + W^{(r_k)}z_i + b^{(r_k)})
$$
其中,$z_j$和$z_i$是token的embedding,式子中的$f(\cdot)$是element-wise级别的激活函数(例如relu,tanh),$V^{(r_k)},U^{(r_k)},W^{(r_k)},b^{(r_k)}$都是根据关系$r_k$的不同而不同的参数。

将$s(z_j, z_i, r_k)$输入到一个Sigmoid层进行归一化,得到预测概率:
$$
Pr(head=w_j, label=r_k|w_i)=\sigma(s(z_i, z_j, r_k))
$$
从而可以进一步定义损失函数为:
$$
L_{rel} = \sum_{i=0}^{n}\sum_{j=0}^{m}-log\ Pr(head=y_{i,j}, relation=r_{i,j}|w_i)
$$
因此,结合NER和Relation Extraction两个任务,模型的整体损失为$L_{ner}+L_{rel}$。

Experiments

正如作者在introduction中说的,其提出的模型能够独立于数据集的领域和语言,所以其在4个不同的数据集上进行了实验以此来证明模型的泛化性:

  1. ACE 04
  2. CoNLL 04
  3. DREC
  4. ADE

如下图所示,论文在多个数据集上都达到了SOTA的成绩:

后记

思考

其实这篇论文的思想说来也很简单:就是构建了一个$N \times N \times C$的分类矩阵。其中$N$表示的是一个句子中token的数量,$C$是pre-defined relation type的数量。此外,不同于以往对一个token pair$<token_i,token_j>$上的$C$个关系进行$softmax$操作,这里是对每个关系都进行单独的$Sigmoid$二元分类。由此可见,模型的训练量应该是非常大的而且还存在着很大的0-1标签稀疏的问题

虽然这篇论文是用在关系抽取任务上的,但是它提出的多头机制(multi-head)也是可以用在NER之上的,例如下面是知乎文章上的一个用多头机制解决NER的示例:

如上图所示,Span[呼][枢]=1代表呼吸中枢是一个部位实体;Span[呼][累]=2,代表呼吸中枢是一个症状实体;

后续阅读

参考文档

  1. 刷爆3路榜单,信息抽取冠军方案分享:嵌套NER+关系抽取+实体标准化
  2. 信息抽取——实体关系联合抽取
  3. 对抗训练多头选择的实体识别和关系抽取的联合模型
  4. 序列标注方法BIO、BIOSE、IOB、BILOU、BMEWO、BMEWO+的异同

文章作者: CarlYoung
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 CarlYoung !
 上一篇
Span-based Joint Entity and Relation Extraction with Transformer Pre-training Span-based Joint Entity and Relation Extraction with Transformer Pre-training
本文通过将联合实体关系抽取任务定义为一个Nx(N+1)/2的排列组合span分类问题,通过负采样,局部上下文技巧,解决了entity overlapping问题,并在实验数据集上达到了SOTA。
下一篇 
Conditional Layer Normalization Conditional Layer Normalization
本文思路来源于苏建林大佬的Conditional Layer Normalization,本人整理消化后写的笔记。
2021-05-03
  目录