论文: 20年ACL A Unified MRC Framework for Named Entity Recognition
代码链接:https://github.com/ShannonAI/mrc-for-flat-nested-ner
解决嵌套型NER的问题,例子如下:
有地方介绍,这种方法对于小样本效果会更好
论文引入了query先验知识,进行ner预测。
比如对于LOC类别,我们构造这样的query:找出国家,城市,山川等抽象或具体的地点。模型通过attention机制,对于query中的国家,城市,山川词汇学习到了地点的关注信息,然后反哺到passage中的实体信息捕捉中。
提取具有不同类别重叠的两个实体需要回答两个独立的问题。
这里query除了是这种人工构造的模板,如下图,也可以是相关的实体定义。
同时,根据经验来说,不同的query会导致结果不同。
输入: [CLS]query[SEP]text[SEP], 例如:
这里一些细节需要注意:① 序列长度,BERT不能超512,需要截断 ② 序列mask。预测结果算loss的时候需要mask掉query部分进行计算。
预测结果为实体的开始位置、结束位置以及从开始到结束位置是实体的概率,损失函数分为三个部分,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问题。 这里有点没太看懂, 解决重叠问题和span loss有什么关系
优点:
可以有效解决重叠NER的问题;
加入预训练模型对于小样本效果更好
缺点:
query问题设置,标准比较模糊,设置不好可能导致效果较差;
需要处理的样本量随实体类型的数量成正比增加,导致效率可能较低
标签不平衡问题,在真实场景下,大部分的文本中只存在很少的实体,而一个实体只对应一个start和end标签,剩下的大部分标签都是负样本。
【论文阅读】A Unified MRC Framework for Named Entity Recognition
A Unified MRC Framework for Named Entity Recognition | ACL2020
命名实体识别Baseline模型BERT-MRC总结
【NLP】详聊NLP中的阅读理解(MRC)
LM-BFF 提出了拼接模板做多种NLP任务的方案,采用T5模型自动生成模板。跟BERT_MRC方法有一些相似之处,有兴趣可以读一下~