题目
A Unified MRC Framework for Named Entity Recognition
命名实体识别的统一MRC框架
论文URL:https://www.semanticscholar.org/paper/A-Unified-MRC-Framework-for-Named-Entity-Li-Feng/d3c7971f5e1e13712a31722073983599bf71ac43
代码 : https://github.com/ShannonAI/mrc-for-flat-nested-ner
作者
Xiaoya Li♣, Jingrong Feng♣, Yuxian Meng♣, Qinghong Han♣, Fei Wu♠ and Jiwei Li♣ ♠ Department of Computer Science and Technology, Zhejiang University 浙江大学
♣ Shannon.AI 香农AI
摘要
NER任务分为nested NER与flat NER,flat NER是一个序列标注任务;序列标注任务解决不了overlapping NER任务,故提出了一个统一MRC来解决NER问题,采用机器阅读理解的方法来取代标注序列的方法。
提出的MRC框架主要是用来解决嵌套NER问题。
这里所提到的Nested NER是包含了overlapping的情况的。
NER任务看成是MRC
数据
构建数据集,即把标注格式转变成 (QUESTION, ANSWER, CONTEXT)形式的三元组; 最后形成的三元组为: (q_y, xstart,end, X);
[每个标注类型y与q_y是相关联在一起的;]
问题的生成-QUESTION,例子(这些问题是人为设置的,可理解为问题生成的规则是人工设置的,后面有对于不同的问题设置实验分析):
作者在选择采用哪种方法去生成问题的方法进行了一系列实验,最后选择了Annotation guideline notes的方法:
看一下数据例子,一个来自mrc的句子:
华/ns 裔/o 作家/o 韩素音/nr 女士/o 曾/o 三次/o 到/o 大足/ns ,/o 称/o “/o 大足石窟/ns 是/o 一/o 座/o 未/o 被/o 开发/o 的/o 金矿/o ”/o 。/o
经过转换之后变成:
{
"context": "华 裔 作 家 韩 素 音 女 士 曾 三 次 到 大 足 , 称 “ 大 足 石 窟 是 一 座 未 被 开 发 的 金 矿 ” 。",
"end_position": [
0,
14,
21
],
"entity_label": "NS",
"impossible": false,
"qas_id": "193.1",
"query": "按照地理位置划分的国家,城市,乡镇,大洲",
"span_position": [
"0;0",
"13;14",
"18;21"
],
"start_position": [
0,
13,
18
]
},
{
"context": "华 裔 作 家 韩 素 音 女 士 曾 三 次 到 大 足 , 称 “ 大 足 石 窟 是 一 座 未 被 开 发 的 金 矿 ” 。",
"end_position": [
6
],
"entity_label": "NR",
"impossible": false,
"qas_id": "193.2",
"query": "人名和虚构的人物形象",
"span_position": [
"4;6"
],
"start_position": [
4
]
},
{
"context": "华 裔 作 家 韩 素 音 女 士 曾 三 次 到 大 足 , 称 “ 大 足 石 窟 是 一 座 未 被 开 发 的 金 矿 ” 。",
"end_position": [],
"entity_label": "NT",
"impossible": true,
"qas_id": "193.3",
"query": "组织包括公司,政府党派,学校,政府,新闻机构",
"span_position": [],
"start_position": []
},
如果由于google那个网盘下载限制问题,这里复制了一份上传(只有中文的):zh_msra_onto4_mrc4ner.zip
或者想看一下MSRA源数据的可以下载:MSRA(NER).zip
或者还想看一下英文的处理后数据:conll03_ace2004_ace2005_mrc4ner_data.zip
模型
Model Backbone:BERT
q_y与 passageX数据级联起来作为输入:{[CLS], q1*, q2, …, qm,* [SEP], x1*, x2, …, xn}*
输出:上下文表示矩阵E,(n x d维)
Span Selection:
提出两个策略来对span进行选择。
策略1:有两个N-类分类器分开来预测start与end的index,n表示上下文的长度,这个方法的缺点为:只可以输出给定查询的单个跨度。
理解一下:就是对上下文章的位置计算一个概率,对于start的分类器,是所有位置的一个概率分布,取概率大的那个位置作为位置的开始;同理,对于end也是位置的概率分布,取概率大的位置作为结束。
策略2:用两个二元分类去工作。一个分类器预测每个token是否为start,另一个分类器预测每个token是否为end.
理解一下:对每个token都输入到二元分类中,输出这个token是否为start的分类,如果分类大就认为这个token为开始的token; 同理,认为token为end的token.
论文采用策略2.
Start Index Prediction —预测开始的index:
T_start表示要学习的权重参数。
End Index Prediction–预测end的index: 与start的同样,不同的是它学习了参数T_end.
Start-End Matching–匹配start与end
在上下文中,存在同一种类型多个实体的情况。意味着有多个start与end.
i表示第i行。
i_start∈I__start,i_end∈I__end. 这个是受限于上面的那个规则的。
训练与测试
找start,end的分类模型的损失函数:
匹配开始与结束模型的损失函数:
综上两个阶段的损失函数:
α, β, γ ∈ [0*,* 1] 为超参,用来控制各部分的权重情况。
在训练时,这些任务会end-to-end进行计算的,可是在test阶段start与end首先会被计算出来,然后再进行start与end的匹配查找,得到最终的抽取的目的。
CE指的是交叉熵CrossEntropy,看代码的时候可以看到。
实验
实验一:Nested NER
数据集: ACE 2004, ACE 2005, GENIA,KBP2017。这些数据分别含有 24%, 22%, 10% and 19%的nested数据。
Baselines:
Hyper-Graph,Seg-Graph,ARN,KBP17-Best,Seq2Seq-BERT,Path-BERT,Merge-BERT,DYGIE
Results:
超出了最领先的效果: 对于ACE04,ACE05, GENIA ,KBP-2017分别超+1.28%, +2.55%, +5.44% ,+6.37%
实验二:Flat NER
英文数据: CoNLL2003 ,OntoNotes5.0;
中文数据:OntoNotes 4.0 ,MSRA
Baselines:
对于英文:BiLSTM-CRF,ELMo,CVT ,Bert-Tagger,
对于中文:Lattice-LSTM,Bert-Tagger,Glyce-BERT
消融研究
性能提找是MRC或者Bert?
这个实验设计成,不加入bert的情况,采用BiDAF与QAnet框架去对比LSTM+CRF的情况,可见MRC是有提升的。如果再加入bert可以达到1.95的提升。再看一下这个关注图:
可以很看到India,Russian,Afghanistan 匹配 geographical, cities and state.可见阅读理解模型是可以学习到有用的信息的。
怎样去设置问题?
Position index of labels: query使用标记的索引来构造的,即,“one”、“two”、“three”;
Keywords:query是描述标记的关键字,例如,标记ORG的问题查询是“organization”;
**Wikipedia:**一个查询是使用其对维基百科的定义来构造的。对标签ORG的查询是:“an organization is an entity comprising multiple people, such as an institution or an association.”
Rule-based template fifilling: 使用模板生成问题。 标记ORG的查询是“which organization is mentioned inthe text”;
**Synonyms:**是指与使用牛津词典提取的原始关键字完全或几乎相同的单词或短语。 标记ORG的查询是“association”;
Keyword+Synonyms: Keyword及其Synonyms的连接在一起;
**Annotation guideline notes:**是我们在本文中使用的方法。对标签ORG的查询是“fifind organizations including companies, agencies and institutions”;
zero-shot学习能力(迁移能力)怎样?
可以看到BERT-tagger是没有什么迁移能力的,迁移这后F1只有31.81;对于BERT-MRC扔然还保留了72.34的效果。
训练数据的规模?
提出的方法比较bert-tagger有更好的学习效果。
相关技术
Named Entity Recognition (NER)
传统CRF–作为backbone;
然后加入了神经网络的研究;
最后加入了预测训练等一系列内容。
Nested Named Entity Recognition
nested NER被第一次关注:2003,Genia corpus—a semantically annotated corpus for bio-textmining,采用手工规则去识别overlapping的mentions;
接着, BioNLP 2007,Recognising nested named entities in biomedical text,提出两个多层CRF模型去解决nested NER问题;第一个是inside-out model,第二个是 outside in model;区别是先从内向外识别还是先从外向内识别的顺序问题。
接着,2009,Nested named entity recognition,提出基于parse trees来处理Nested NER.这里作了一个假设如mentions的overlapping关系是nested的。
2015,Joint mention extraction and classifification with mention hypergraphs,提出超图的方法来解决overlapping ner的问题;
2017,A local detection approach for named entity recognition and mention detection,为了解决overlapping mentions使用分类器去识别所有可能的span来抽取mentions.
2018,. Nested named entity recognition revisited,为了解决overlapping mentions使用神经网络模型去学习超图表达;
2018,A neural layered model for nested named entity recognition,用分层方法动态堆叠flat NER层来解决overlapping问题。
ACL,2019, Sequence-to-nuggets: Nested entity men tion detection via anchor-region networks. 提出通过建模与利用头驱嵌套mentions词组结构的Anchor-Region Networks来解决nested;
2019,A general framework for information extraction using dynamic span graphs,通过枚举spans,并从中选择置信度最高的spans,采权重值来连接这些节点。
其它方法: 2017-Labeling gaps between words: Recognizing overlapping mentions with mention separators,2018-Deep exhaustive model for nested named entity recognition,2019-A boundary-aware neural model for nested named entity recognition。
最近使用语言的预测训练来解决nestedNER:
2019,Merge and label: A novel neural network architecture for nested NER,基于bert模型,首先把tokens与实体融合成实体,然后把labeled信息赋予给这些实体。
2019,Nested named entity recognition via second-best sequence learning and decoding,提出了一种从最外层的实体迭代地提取到最内层实体;
2019,Neural architectures for nested NER through linearization, 把nested NER看成是一个序列生成问题,输入tokens,输出为labels序列。
Machine Reading Comprehension(MRC)
MRC任务:MRC模型根据所给的问题从passage中找到答案的spans.
最近几年有把NLP的任务转向MRC任务的趋势。
例如把关系抽取也看成了QA任务(2017- Zero-shot relation extraction via reading comprehension)。每个关系类型R(x,y)都可以参数化为问题q(X),其答案是y。例如关系“EDUCATED-AT”,它将会被匹配成问题“Where did x study?”。
再例如: 把概要抽取或情感分析等任务看成问答任务(2018-The natural language decathlon: Multitask learning as question answering.)。
论文(ACL 2019 - Entity-relation extraction as multi-turn question answering),关系抽取看作为一项多轮问答任务;这里面的问题生成是基于模板的。
关于代码
关于BertQueryNER类:
主要是三个内容:start_outputs,end_outputs,span_embedding;
关于BertLabeling类:
采用了PyTorch Lightning框架。这个东西是一道闪电。
总结
这篇论文最好是从代码开始去理解模型。
采用阅读理解的方法去处理NER问题,可谓是眼前一亮的,对于这个效果也是很另人兴奋的。
对实验结果的分析也是比较全面的,对于目前所用到的解决nested也作了一个比较全面的分析,是属于比较完整的论文,研究思路很值得参考。
整个模型代码流程来,基于BERT之上的阅读理解任务修改,修改成为可以解决NER问题。
参考
【1】ACL2020-MRC Framework for Named Entity Recognition,https://zhuanlan.zhihu.com/p/158714655
【2】Li, Xiaoya, J. Feng, Yuxian Meng, Qinghong Han, F. Wu and J. Li. “A Unified MRC Framework for Named Entity Recognition.” ArXiv abs/1910.11476 (2020): n. pag.
【3】pytorch-lightning,https://github.com/PyTorchLightning
happyprince;https://blog.csdn.net/ld326/article/details/114306736