【论文阅读】A Unified MRC Framework for Named Entity Recognition

一、论文摘要

(一)解决 "嵌套型"的NER(Nested NER) 的问题

嵌套NER,顾名思义,就是识别的实体中可能会存在嵌套的情况。比如北京大学不仅是一个组织,同时北京也是一个地点;雅诗兰黛小棕瓶是一个产品,同时雅诗兰黛是一个品牌。

(二)使用MRC阅读理解的方式做NER

相比于传统的序列标注做法,使用MRC方式做NER好处在于引入了query这个先验知识,比如对于LOC类别,我们构造这样的query:找出国家,城市,山川等抽象或具体的地点。模型通过attention机制,对于query中的国家,城市,山川词汇学习到了地点的关注信息,然后反哺到passage中的实体信息捕捉中。提取具有不同类别重叠的两个实体需要回答两个独立的问题。

二、论文细节

(一)构造query

假设目前我们要预测的实体类别个数为m,则我们需要构造m个不同的query。每个样本相当于扩充了m倍,得到m个新的样本。关于如何构造query,这个就需要人工来设计了。对于通用的location,person,organization类别,可以使用一些简单的query:

"ORG":"找出公司,商业机构,社会组织等组织机构"

"LOC":"找出国家,城市,山川等抽象或具体的地点"

"PER":"找出真实和虚构的人名"

(二)构造训练数据

用BERT来做阅读理解任务首先需要构造相应格式的训练数据。目前假设我们对每个原始样本,构造了m个query。接下来就是将每个query和样本passage进行拼接,得到m个不同的bert输入数据,如下所示:

【论文阅读】A Unified MRC Framework for Named Entity Recognition

由上述描述可知经过构造后的一条数据样本是预测一个类别的实体的位置信息。

另外,在构造数据的时候有很多细节需要注意:

1.序列长度问题。由于bert最长只能接收512长度的序列,因此很多情况下都需要截断。

2.对序列进行mask。由于我们搜索实体的范围仅局限与上下文passage,不包括query。但是bert处理的是query+passage整体序列。在最后计算loss的时候,我们需要将query部分(以及cls,sep、pad等特殊字符)mask掉,使其在计算loss时被忽略。

(三)损失函数

分别预测实体的开始位置、结束位置以及从开始到结束位置是实体的概率,损失函数分为三个部分,L-start.L-end,L-span

L-start:每一个token的二分类CE之和(答案开始),L-end:每一个token的二分类CE之和(答案结束),L-span:答案开始和答案结束组合的二分类CE之和。span loss通过一个二维矩阵来记录真实实体在句子中的(Start,End)位置,比如某个实体在文本中的位置是1~3,那么它在二维矩阵的坐标(1,3)则标注为1。

Lstart = CE(Pstart, Ystart)

Lend = CE(Pend, Yend)

Lspan = CE(Pstart,end, Ystart, end)

L = αLstart + βLend + γLspan

α, β, γ [0, 1]

三、其他

(一)为什么需要L-span loss

在NER中还存在实体重叠的情况,如果只用启发式的方法比如选择答案开始和答案结束位置最近的作为答案不能解决这个问题,于是论文通过添加这个组合任务来解决这个问题。

(二)问题的设计

【论文阅读】A Unified MRC Framework for Named Entity Recognition

对于不同的question输入,能带来的提升效果也很大不同,从这个比对可以看出,question的设计应该尽可能的根据实体的含义来设计。

这篇论文是在BERT基础上做的,文章对加预训练模型和不加预训练模型的效果进行了比较,证明即使没有预训练模型,该方法仍然能够取得最优的结果。本文通过实验证明了效果的提升主要来自于基于自然语言的标签描述引入了更多的先验信息,尤其是对数据稀少的标签提升会比较明显。

(三)该方法的问题

1.实体标签的query问题设置,标准比较模糊,不同的自然语言描述会导致不同的效果:

2.效率会降低,需要处理的样本量随实体类型的数量成正比增加。(考虑并行处理 or 将计算 Pstart和 Pend的参数扩大K倍,K为待预测的实体类别数)

3.标签不平衡问题,在真实场景下,大部分的文本中只存在很少的实体,而一个实体只对应一个start和end标签,剩下的大部分标签都是负样本。针对这个问题,该团队提出DSC loss。