ACL 2020 | 基于机器阅读理解框架的命名实体识别方法

论文标题:

A Unified MRC Framework for Named Entity Recognition

论文作者:

Xiaoya Li, Jingrong Feng, Jiwei Li

论文链接:

https://arxiv.org/pdf/1910.11476.pdf


本文提出使用基于机器阅读理解(Machine Reading Comprehension, MRC) 的框架代替序列标注模型(sequence labeling) 统一处理嵌套与非嵌套命名实体识别问题

该方法解决了序列标注模型无法处理嵌套命名实体识别的缺陷,在8个中英数据集(OntoNotes4.0/5.0、ACE2004/2005、GENIA、KBP17、MSRA、CoNLL)上取得接近或超过当前最佳效果的表现,尤其是在嵌套任务上大幅超越之前最优结果。

概述

近年来关于命名实体识别(NER)的研究非常多,其中大多数都是针对的“非嵌套型”的NER(Flat NER),然而在实际场景中,“嵌套型”的NER(Nested NER)占了相当的比例。

如下图所示的两个例子所示。如此一来,以往针对Flat NER的模型就不对Nested NER起效,这是因为它们大多数是序列标注模型,这就没有办法直接迁移到Nested NER上。

ACL 2020 | 基于机器阅读理解框架的命名实体识别方法_第1张图片

另一方面,过去对Nested NER的解决方法大都是构建一个pipelined的模型结构,即先抽取所有的实体,然后再判断每个实体的实体类型。

这种方法尽管比较简单,但是由于其pipeline性质,实体抽取的错误直接会导致整体正确率的降低。而且,将Flat NER与Nested NER分开考虑本身也不够简洁。

我们想要一种将二者联系起来,并且不失效果的方法。

受到近来机器阅读理解问答(MRC-QA)的启发,我们提出使用机器阅读理解框架去合并处理Flat NER与Nested NER。

比如,现在想要抽取PER类型的实体,那么我就可以问“Which person is mentioned in the text”。使用这种方法,无论是Flat NER还是Nested NER,都能很直观地抽取出来。

总的来说,本文贡献如下

  • 提出一种基于MRC的方法抽取命名实体,该方法适用于Flat和Nested两种类型的NER。相比序列标注方法,该方法简单直观,可迁移性强。

  • 我们将会通过实验说明,基于MRC的方法能够让问题编码一些先验语义知识,从而能够在小数据集下、迁移学习下表现更好。

  • 在8个中英数据集上取得当前最佳效果(OntoNotes4.0/5.0、ACE2004/2005、GENIA、KBP17、MSRA、CoNLL等)。

方法:用MRC框架进行NER

数据构建

先来回顾一下NER任务。给定一个文本序列X,它的长度为n,我们要抽取出其中的每个实体,其中实体都有各自的实体类型。

假设该数据集的所有实体标签集合为Y,那么对其中的每个实体标签y,比如地点LOC,都有一个关于它的问题q(y)。

这个问题可以是一个词,也可以是一句话等等。现在,我们给模型输入X和q(y),就可以期望模型输出所有具有标签y的所有实体。

那么,训练数据如何构建呢?首先来构造问题q(y)。我们使用“标注说明”作为每个标签的问题。所谓“标注说明”,是在构造某个数据集的时候提供给标注者的简短的标注说明。

比如标注者要去标注标签为LOC的所有实体,那么对应LOC的标注说明就是“Find locations in the text, including non-geographical locations, mountain ranges and bodies of water”,下图是更多的例子。

ACL 2020 | 基于机器阅读理解框架的命名实体识别方法_第2张图片

在有了问题q(y)之后(现在假设问题的长度为m),我们就有了一个训练实例三元组(Question, Answer, Context),也就是(q(y), Answer, X),这里Answer就是对应的所有实体。

我们用x(start:end)表示其中的实体。其中start是实体的开始位置,end是实体的结束位置。比如在句子X=“北京欢迎你”这句话中,“北京”这个实体就可以表示为x(1:2),因为“北”是句子的第1个位置,“京”是句子的第2个位置。

模型细节

我们使用BERT作为主体模型,输入到BERT的就是{[CLS],q(1),……, q(m),[SEP],x(1),…… ,x(n)},其中[CLS]和[SPE]是特殊符号,然后得到原文的表示矩阵E,它的形状为n*d,这里n是原文X的长度,d是BERT最后一层的向量维度。

下面是关键。传统的MRC模型抽取答案的方法是预测它的开始位置和它的结束位置,这相当于2个n分类,分别去在n个字符中预测开始位置和结束位置。

但是,在NER中,原文里可以有很多实体,甚至还可能嵌套,所以这种方法就不适用,基于此,我们采用2个2分类:对每个字符,它有两个预测结果,即是不是“可能”成为开始位置,是不是“可能”成为结束位置。

具体来说,我们有两个参数T(s)和T(e),分别去和BERT出来的表示做点积并得到概率分布:P(s) =softmax(E·T(s)), P(e) =softmax (E·T(e))。

现在,对P(s),P(e)的每一行,构成了一个是或不是(第一个位置为“不是的概率”,第二个位置为“是的概率”)开始或结束位置的概率分布。

比如,P(e)的第一行是[0.6,0.4],那么我就可以认为第一个token不是开始位置;P(e)的第三行是[0.1,0.9],那么第三个token就可能是实体的结束位置。

现在我们对P(s),P(e)每行做argmax,就得到了两个长度为n的0-1序列I(s)和I(e),如果第k个位置是1,那么说明第k个token就可能是开始或结束位置。

现在对I(s)中每个为1的位置i,和I(e)中每个为1的位置j且满足i<=j的连续字符序列x(i:j),计算x(i:j)为实体的概率p(i:j)=sigmoid(m· [E(i); E(j)])即可。得到的这个概率就是x(i:j)是实体类型为y的实体的概率。

训练与推理

在训练的时候,我们有三个损失,分别是开始位置损失、结束位置损失和实体损失,分别定义如下:

ACL 2020 | 基于机器阅读理解框架的命名实体识别方法_第3张图片

意思是,分别把预测的和真实的结果做交叉熵。然后加起来就是最后的损失。

在推理的时候,先得到I(s)和I(e),然后根据p(i,j)的得分去预测即可。如果p(i:j)>0.5,我们就认为x(i:j)是实体,否则就不是。

NER实验

Nested NER

我们首先在Nested NER上做实验,数据集(英文)用ACE2004,ACE2005,GENIA,KBP2017。

基线模型有Hyper-Graph,Seg-Graph,ARN,KBP17,Seq2seq-BERT,Path-BERT,Merge-BERT和DYGIE,具体实验设置详见原文。实验结果如下:

ACL 2020 | 基于机器阅读理解框架的命名实体识别方法_第4张图片

在所有数据集上,MRC的方法都取得显著更优。

Flat NER

下面我们在Flat NER上做实验,数据集分为中文和英文。英文有CoNLL2003,OntoNotes5.0;中文有MSRA,OntoNotes4.0,基线模型有BiLSTM-CRF, ELMo, CVT, BERT-Tagger(以上为英文), Lattice-LSTM, BERT-Tagger, Glyce-BERT(以上为中文)。实验结果如下:

ACL 2020 | 基于机器阅读理解框架的命名实体识别方法_第5张图片

可以看到,在两个OntoNotes数据集上,MRC的方法都有更多的提升,这是因为OntoNotes有更多的实体类型,一些类型数据非常稀疏。

这表明MRC方法有助于缓解数据稀疏问题,因为MRC中的问题能够编码一部分先验信息。

比对实验

下面我们从四个方面进行比对实验:提升来源(MRC还是BERT);问题构建策略;Zero-Shot表现;训练集大小。

提升来源:MRC还是BERT

第一个问题是,实验的提升到底是来自BERT还是来自MRC呢?如果来自MRC,那么把这种MRC方法加到其他非BERT模型上应该也会有显著提升。

所以,对非BERT模型,我们比较了普通的LSTM Tagger(non-MRC)和BiDAF/QAnet(MRC);对BERT模型,我们比较了BERT Tagger和BERT-MRC,实验结果如下:

ACL 2020 | 基于机器阅读理解框架的命名实体识别方法_第6张图片

很显然,无论对non-BERT还是BERT模型,MRC都比non-MRC好,尽管有了BERT也会有大幅提升。

问题构建策略

下面我们来讨论问题构建的不同策略。我们使用的是“标注说明”,但也有其他方法:

  • 标签下标:直接用标签在标签集中的下标作为问题,比如“one”,“two”;

  • 关键词:使用一个关键词作为问题,比如ORG的问题是“organization”;

  • 规则模板:用一个模板生成问题,比如ORG的问题是“which organization is mentioned in the text”;

  • 维基百科:用维基百科的定义作为问题,比如ORG的问题是“an organization is an entity comprising multiple people, such as an institution or an association”;

  • 近义词:用标签的近义词作为问题,近义词从牛津词典中抽取,比如ORG的问题是“association”;

  • 关键词+近义词:把这两个连接起来作为问题;

  • 标注说明:本文的方法。

下表是这几种方法的结果:

ACL 2020 | 基于机器阅读理解框架的命名实体识别方法_第7张图片

使用“标注说明”得到的模型效果最好,这是因为:

  • 标签下标没有任何有用的信息,因此效果很差;

  • 维基百科携带了较多无用信息,造成了干扰;

  • 标注说明描述准确,最为合适。

Zero-shot 表现

上面我们说到,MRC的问题由于编码了一些先验信息,所以可能在标签迁移上效果较好,下表是结果。可以看到,在两个数据集迁移上,tagger都远差于MRC。

ACL 2020 | 基于机器阅读理解框架的命名实体识别方法_第8张图片

训练集大小

最后来看看不同数据集大小对MRC和Tagger效果的影响,下图可见,即使训练数据只有50%,MRC方法都能达到Tagger的最优结果。这也说明了MRC具有一定的先验知识编码能力。

ACL 2020 | 基于机器阅读理解框架的命名实体识别方法_第9张图片

小结

在本文中,我们把命名实体识别置于一种机器阅读理解的问答框架下,用特定的问题去抽取特定标签的实体,不仅可能抽取一般的实体,还可以抽取嵌套的实体,方法简单有效,在中英8个数据集上取得了显著的效果提升。基于MRC的命名实体识别由于其简洁有效,很有实际应用的潜力。

你可能感兴趣的:(NLP,知识图谱)