每天给你送来NLP技术干货!

来自:AI算法小喵
作者:小喵
写在前面
NER(命名实体识别)通常可以分为nested NER(嵌套命名实体识别)及flat NER(非嵌套命名实体识别)。在flat NER上常用的序列标注模型通常不适用于nested NER,为了将两个任务用一套统一框架处理,BERT-MRCMRC(机器阅读理解)角度建模实体识别任务。
简单地说,BERT-MRC将实体类别相关的先验信息(比如实体类别描述)构建为一个问句,并将问句与文本内容一起输入模型,然后从文本内容中抽取问句的答案,也就是实体在文本中的位置(answer span)。本文将对BERT-MRC做一个简要的介绍。
论文名称:《 A Unified MRC Framework for Named Entity Recognition》
论文链接:https://arxiv.org/abs/1910.11476
代码地址:https://github.com/ShannonAI/ mrc-for-flat-nested-ner

1. 背景

1.1 nested NER vs flat NER

NER旨在识别出输入文本内容中的实体文本及其所对应的实体类型,根据实体之间是否可能嵌套,NER进一步可分为nested NERflat NER
上图是论文中给出的例子,既有嵌套实体又有非嵌套实体。这里,我们再给一些不同领域的中文文本的例子来让大家对嵌套有一个直观的印象。
下图左侧是允许嵌套的实体标注结果,右侧是不允许嵌套的实体标注结果(以就长不就短为标注原则)。
显然,嵌套实体指的就是识别的实体中可能会存在嵌套的情况。比如明显鼻扇是一种临床表现,而其中的又是一个身体部位;叶圣陶散文集是一部作品,而其中的叶圣陶则是一名作者;北京是一个地点,而北京大学是一个组织机构。

1.2 序列标注模型与flat NER

flat NER通常被当作序列标注任务处理,常见的经典模型有:BERT+CRFBERT+SoftmaxBERT+BiLSTM+CRF等。以BERT+CRF为例,序列标注模型会给文本中的每个token(字)打上一个标签,以表示这个token所属的实体类别。
上图所示例子采用的标签体系是BIOES
  • B,即Begin,表示开始;
  • I,即Intermediate,表示中间;
  • E,即End,表示结尾;
  • S,即Single,表示单个字符;
  • O,即Other,表示其他,用于标记无关字符。
因此最终BERT+CRF实体识别模型预测出小明就读于北京大学一句中存在两个实体:人物实体小明、组织机构实体北京大学。可以看出,本质上这类抽取的方式其实是从token级别多分类角度建模实体识别任务的。

1.3 序列标注模型与nested NER

显然1.2节中的BERT+CRF是不适用于nested NER(即存在嵌套实体的实体识别任务)。因为序列标注模型通常只给一个token打一个标签,但是在nested NER中某些token可能同时拥有两个不同的类型实体标签。
比如在北京大学 中  应该分别具有B-LOCB-ORG两个标签;同理北京大学中的  也应该分别拥有E-LOCI-ORG两个标签。
其实,个人认为BERT+CRF也不是完全就不适用于nested NER场景了。如上图,有一个比较直观的做法可以使BERT+CRF支持实体嵌套的情况,那就是利用多层CRF,其中每一层CRF的输入均为经过BERT之后的向量,每一层CRF负责一类实体的预测。但是,其实这无形中增加了模型的参数量。
接下来,我们抛开序列标注类实体抽取解决方案,来看一个新的实体识别框架BERT-MRC,它可以同时应用于nested NERflat NER

2. 核心思想

2.1 问答式建模

前面,我们提过BERT-MRC是从MRC问答式机器阅读理解)角度来建模实体抽取任务的。而MRC通常被拆解为两个多分类任务,这两个多分类任务分别负责答案的起点和止点位置预测answer span Extraction)。
换句话说,BERT-MRC在抽取每类实体时,首先都会基于实体类别建立自然语言问句,然后在给定的上下文文本中抽取这个问句的答案片段,也就是相应实体类别下的各个实体文本片段的起点和止点位置。最后,我们采用一定的头尾匹配策略(如就近匹配)就可以获得实体预测结果。既然对每类实体的抽取是独立进行的,自然可以解决不同类别实体嵌套问题。

2.2 头尾匹配层

MRC+就近匹配只能解决不同类实体的嵌套问题,而针对同类实体的嵌套问题,BERT-MRC引入了一个二分类层计算头尾配对概率来解决。

2.3 先验知识的引入

还有一点,BERT-MRC还指出问句引入了实体类别的信息,显式地告诉模型所要抽取的是什么类的实体。
此外,问句中所包含的更全面更细粒度的描述信息则可能提供了区分性信息,帮助实体抽取模型去区分相近的实体类别。比如GPE(按照国家、城市、州县划分的地理区域)与LOC(山脉、河流自然景观的地点)。其实这样的话,北京的标签应该是GPE
个人认为这一点可以这么理解:在以往的序列标注模型中,实体类别其实就是一个无语义one-hot标签;模型之所以能够抽取出这个类别下的那些实体,是因为抓住了它们的相似点,但实际上模型并不知道它们是因为什么相似的。现在我们可以通过问句显式地直接地告诉模型。
问句1:找出文本中的地理区域类地点,包括国家、城市、州县等;

问句2:找出文本中的自然景观类地点,包括山脉、河流等;

问句3:找出文本中的组织机构,包括公司、机构等;

3. 模型细节

给定实体类别标签下的问句和上下文,BERT-MRC需要从中抽取实体类别为的所有文本片段。

3.1 编码层(Model backbone)

BERT-MRC使用BERT作为编码层,所以整体模型的输入是问句与上下文的拼接结果:
其中。
经过编码层后,BERT-MRC只取上下文部分的表征进行后续的运算,也就是说。

3.2 起止点预测 (start end prediction)

前面已经提过,BERT-MRC抽取实体本质上就是识别相应实体类别下的各个实体文本片段的起点和止点位置
因为在一个实体类别下文本中可能有多个实体片段,所以需要定位多个起止点。因此BERT-MRC选择设置两个二分类器,分别对每一个token进行起点和止点的判断,以获得每个token作为起点、止点的概率:
其中概率大于设定阈值的即为候选首尾点(每个节点的均为2维向量,2个维度分别代表不是起点是起点的概率。同理):

3.3 起止点匹配(start end matching)

获得候选起点和止点后需要进行起止点配对以获取实体片段(span)。如果只有不同类别的实体嵌套,那么选用就近匹配策略就可以很自然地解决,可是实际上同类别实体也可能嵌套(原文用overlap重叠)。
换句话说,MRC+最近匹配策略是无法解决的同类别实体嵌套问题的,所以我们需要换一个头尾匹配策略。
BERT+MRC选择在以候选起止点的表征拼接结果作为特征,用一个全连接层+sigmoid进行判定来确定起点、止点是否为一个span的头尾点

3.4 损失函数

注:CE代表交叉熵损失函数
如上式,BERT-MRC模型的损失函数由三部分组成,其中是各个损失的权重。
假设真实结果中每个token是否为起点或止点由分别表征,那么就分别代表起点和止点的预测损失:
假设表征真实结果中每个token是否和另一个token分别作为一个span的起点和止点。

4. 实验结果

4.1 评价指标

span-level micro-averaged precision、recall、f1,即在实体层面计算。假设第类实体预测正确的总个数为,预测错误的总个数为,实际为该类实体却未被预测到的总个数为,那么有:
为:

4.2 实验结果

在这里,我们比较关心的是在中文数据上的效果。在BERT-MRC所做实验中,仅两个数据为中文数据:MSRAOntoNotes 4.0,并且它们都属于flat ner。从实验结果来看,BERT-MRC超越了其他baseline

总结

好了,关于BERT-MRC的内容就到这里了。如果本文对你有所帮助,记得点赞+在看,也可以分享给你需要的朋友~~。
最近文章
继续阅读
阅读原文