前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >这篇文章告诉你,如何用阅读理解来做NER!

这篇文章告诉你,如何用阅读理解来做NER!

作者头像
zenRRan
发布2021-07-19 17:09:53
2.1K0
发布2021-07-19 17:09:53
举报

点击下面卡片关注我呀,每天给你送来AI技术干货!

作者:林哲乐

之前做过实体关系抽取/联合抽取等任务,是用LSTM+CRF模型+BIO标注的方法,最近看到有一篇ACL用MRC(Machine Reading Comprehension)的方法去做NER(Named Entity Recognition)任务,以下是对这篇论文的分享。

Paper: A Unified MRC Framwork for Name Entity Recognition Code: https://github.com/ShannonAI/mrc-for-flat-nested-ner

摘要

NER任务分为:

1.nested NER(嵌套命名实体识别,一个实体可能属于多个类型,如北京大学中的北同时属于 B-Location,也属于 B-Organization;而京也拥有 I-Location 与 I-Organization 两个标签。)

2.flat NER (普通命名实体识别,将实体识别看作序列标注任务来解决,不适用于存在实体嵌套的情况)

本文提出的统一化MRC框架则同时解决了上述两种类型的任务。如:

原任务:提取一个PER(PERSON)类型的实体

演变成:获取“文中提到了哪个人?”问题答案所在段(定位答案所在的span)

相当于把提取两个重叠的实体,转化成:回答两个独立的问题。

另外由于问题中对先验知识进行了编码,本文策略其实就相当于利用了实体提取的过程,在嵌套和非嵌套的NER任务上都能v表现更佳。

本文对nested NER和flat NER的实验,分别采用不同的数据集

1. 引言

命名实体识别:从大段文字中识别一小段span、实体的类别

根据实体是否嵌套,分为嵌套命名实体识别nested NER(如下图)、普通命名实体识别flat NER

(上图中,实体[Chinese embassy in France]中还有两个实体[Chinese]和[France] )

2. 相关工作

2.1 NER(Named Entity Recognition)

从2003年开始,传统的序列标注模型使用CRF作为主干,如LSTM-CRF、CNN-CRF、BiLSTM-CRF,最近的模型就是在之前的模型上加了BERT或者ELMo等预训练模型

2.2 Nested NER

2003年重叠实体的识别还采用手工定义的规则,2007年提出两层CRF模型解决Nested NER的问题,第一层CRF识别最里层的实体,后续的CRF识别第二层/外层的实体。2009年提出的模型基于语法树,假设两个重叠实体中,一个是完全包含另一个的。2015年:超图。2017年:本地分类器。2018年:分层的方式。2019年:ARNs (Anchor-Region Networks)。

今年来,多加入预训练模型如BERT或者ELMo,2019年Strakova等将NER看作seq2seq的生成问题。

2.3 MRC(Machine Reading Comprehension)

MRC模型是对于给出的一个问题Q在文本中提取答案所在的小段span,可以将此任务看作是两个多分类任务,比如预测答案span的开始位置和结束位置。近两年有将NLP任务转化为MRC问答的趋势,例如:关系类型

R_(x,y)

可以表示为答案为

y

的问题

q_x

3. NER as MRC

3.1 任务形式化定义

给一个长度为n的序列:

我们的目标是从X中获取实体,且实体类别为y∈Y 。y的可能取值有 PER、LOC等等

本文训练需要的是一些已标注实体的数据集,形式为三元组:

其中长度为m的问题

q_y

记作

被标记的实体

x_{start, end}

记作(是序列X的子序列):

实体类型(即标签)记作

y

,有:

则我们最终得到的是

3.2 问题生成

另外,我们需要根据需要获取的实体类型,生成一些问题,如下图:

3.3 模型细节

3.3.1 模型主干

给出问题

q_y

,我们需要从

X

中提取实体

x_{start, end}

,及其类型标签

y

。将BERT作为我们MRC模型的主干,而将

X

q_x

结合起来作为输入序列

此时BERT接收到我们的序列,输出一个上下文向量矩阵

其中d是BERT最后一层的维度,一般d=768

3.3.2 跨度选择

MRC中跨度选择(span selection)的方法有两种:

  1. 用2个n类分类器,分别预测start下标和end下标;但是此方法只能定位一个span
  2. 用2个二分类器,每个分类器都判断某个分类器是否为start/end,这样可以输出多个start/end,再进行组合;此方法可以定位多个span

(跨度选择的整个过程是:得到start下标,得到end下标,匹配跨度)

本文采用上述第二种方法,得到BERT的输出

E

,预测某个下标是否为start下标的概率:

其中

T_{start}

为可学习的参数。end下标的预测概率同上式。

在上下文

X

中,同类实体可能有多个,即有多个start和多个end。由于存在重叠,最近的end下表不一定和start下标对应,则本文采取的办法是:

其中,上标代表第 i 行,则start和end匹配的概率预测表示为:

3.4 训练与测试

训练时,

X

有两组标签:

Y_{start}

Y_{end}

,则我们的损失可以表示为:

则整个span的损失表示为:

则整体的训练目标为最小化下式:

其中

上述三个损失在端到端网络中联合训练。

测试时,start和end首先分开,然后再用排列的方法来定位跨度段span

4. 实验

4.1 Nested NER的实验

baselines:

Hyper-Graph、Seg-Graph、ARN等,后面表格会有对比

实验结果:

4.2 Flat NER的实验

baseline及实验结果:

5. 消融实验

5.1 在MRC或BERT上的提升

一方面MRC编码了先验知识,另一方面性能的提升确实有可能来自大规模模型BERT

为了验证BERT的效果,我们对比LSTM-CRF和其他MRC模型(QAnet、BiDAF等),如下:

可以看出,即便不用BERT,QAnet和BiDAF依然表现比LSTM-CRF好。

而MRC的效果提升在于,对于只用BERT的模型,BERT-MRC的性能提升了1.95%。

我们画出了BiDAF模型输出的注意力矩阵,如下图:

通过上图,上下文和标记的分类标签之间的相似度可以更好的体现出来,如Flevland和geographical、cities和state.

5.2 如何使用问句

我们采用不同的方法使用问句,并观察问句的影响,对比如下图:

  • Position index of labels:使用标签的索引构造查询
  • Keyword :查询的是类别标签,例如,标签ORG的问题查询是“organization”
  • Rule-based template filling:生成问题需要使用模板
  • Wikipedia:查询是使用维基百科的定义
  • Synonyms:与使用牛津词典提取的原始关键字完全或几乎相同
  • Keyword+Synonyms:连接关键字及其同义词
  • Annotation guideline notes:注释指南注释,也是本文使用的方法

5.3 在看不见的标签上的零次学习(Zero-shot)

零次学习(Zero-shot):在一个数据集上训练好的模型,在另一个数据集上测试

训练数据:CoNLL 2003 测试数据:OntoNotes5.0

OntoNotes5.0有18种实体类型,其中有3种和CoNLL03中的实体类型一样

如上图所示,不采用零次学习时,两个模型的性能差别不大。在零次学习的情况下,BERT-tagger只达到F1值31.87;而BERT-MRC在新的数据集上却能达到F1值72.34

5.4 训练集大小

由于问句编码了大量的先验知识,我们期望所提出的框架在较少训练的情况下工作得更好。

在ChineseOntoNotes4.0训练集上,基于BERT-MRC方法只用一半的训练数据,技能达到性能与BERT-tagger相当。如下图所示:

6. 结论

本文将NER任务转化为MRC下的问答任务,好处有:

  1. 可以处理重叠或嵌套的实体
  2. 问题编码了重要的先验知识

同时在nested和flat数据上都取得了SOTA的效果

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-07-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 深度学习自然语言处理 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 摘要
  • 1. 引言
  • 2. 相关工作
    • 2.1 NER(Named Entity Recognition)
      • 2.2 Nested NER
        • 2.3 MRC(Machine Reading Comprehension)
        • 3. NER as MRC
          • 3.1 任务形式化定义
            • 3.2 问题生成
              • 3.3 模型细节
                • 3.4 训练与测试
                • 4. 实验
                  • 4.1 Nested NER的实验
                    • 4.2 Flat NER的实验
                    • 5. 消融实验
                      • 5.2 如何使用问句
                        • 5.3 在看不见的标签上的零次学习(Zero-shot)
                          • 5.4 训练集大小
                          • 6. 结论
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档