论文标题:

A Unified MRC Framework for Named Entity Recognition

论文作者:

Xiaoya Li, Jingrong Feng, Jiwei Li

论文链接:

https://arxiv.org/pdf/1910.11476.pdf


本文提出使用基于机器阅读理解(Machine Reading Comprehension, MRC) 的框架代替序列标注模型(sequence labeling) 统一处理嵌套与非嵌套命名实体识别问题

该方法解决了序列标注模型无法处理嵌套命名实体识别的缺陷,在8个中英数据集(OntoNotes4.0/5.0、ACE2004/2005、GENIA、KBP17、MSRA、CoNLL)上取得接近或超过当前最佳效果的表现,尤其是在嵌套任务上大幅超越之前最优结果。

概述

近年来关于命名实体识别(NER)的研究非常多,其中大多数都是针对的“非嵌套型”的NER(Flat NER),然而在实际场景中,“嵌套型”的NER(Nested NER)占了相当的比例。

如下图所示的两个例子所示。如此一来,以往针对Flat NER的模型就不对Nested NER起效,这是因为它们大多数是序列标注模型,这就没有办法直接迁移到Nested NER上。

另一方面,过去对Nested NER的解决方法大都是构建一个pipelined的模型结构,即先抽取所有的实体,然后再判断每个实体的实体类型。

这种方法尽管比较简单,但是由于其pipeline性质,实体抽取的错误直接会导致整体正确率的降低。而且,将Flat NER与Nested NER分开考虑本身也不够简洁。

我们想要一种将二者联系起来,并且不失效果的方法。

受到近来机器阅读理解问答(MRC-QA)的启发,我们提出使用机器阅读理解框架去合并处理Flat NER与Nested NER。

比如,现在想要抽取PER类型的实体,那么我就可以问“Which person is mentioned in the text”。使用这种方法,无论是Flat NER还是Nested NER,都能很直观地抽取出来。

总的来说,本文贡献如下

  • 提出一种基于MRC的方法抽取命名实体,该方法适用于Flat和Nested两种类型的NER。相比序列标注方法,该方法简单直观,可迁移性强。

  • 我们将会通过实验说明,基于MRC的方法能够让问题编码一些先验语义知识,从而能够在小数据集下、迁移学习下表现更好。

  • 在8个中英数据集上取得当前最佳效果(OntoNotes4.0/5.0、ACE2004/2005、GENIA、KBP17、MSRA、CoNLL等)。

方法:用MRC框架进行NER

数据构建

先来回顾一下NER任务。给定一个文本序列X,它的长度为n,我们要抽取出其中的每个实体,其中实体都有各自的实体类型。

假设该数据集的所有实体标签集合为Y,那么对其中的每个实体标签y,比如地点LOC,都有一个关于它的问题q(y)。

这个问题可以是一个词,也可以是一句话等等。现在,我们给模型输入X和q(y),就可以期望模型输出所有具有标签y的所有实体。

那么,训练数据如何构建呢?首先来构造问题q(y)。我们使用“标注说明”作为每个标签的问题。所谓“标注说明”,是在构造某个数据集的时候提供给标注者的简短的标注说明。

比如标注者要去标注标签为LOC的所有实体,那么对应LOC的标注说明就是“Find locations in the text, including non-geographical locations, mountain ranges and bodies of water”,下图是更多的例子。

在有了问题q(y)之后(现在假设问题的长度为m),我们就有了一个训练实例三元组(Question, Answer, Context),也就是(q(y), Answer, X),这里Answer就是对应的所有实体。

我们用x(start:end)表示其中的实体。其中start是实体的开始位置,end是实体的结束位置。比如在句子X=“北京欢迎你”这句话中,“北京”这个实体就可以表示为x(1:2),因为“北”是句子的第1个位置,“京”是句子的第2个位置。

模型细节

我们使用BERT作为主体模型,输入到BERT的就是{[CLS],q(1),……, q(m),[SEP],x(1),…… ,x(n)},其中[CLS]和[SPE]是特殊符号,然后得到原文的表示矩阵E,它的形状为n*d,这里n是原文X的长度,d是BERT最后一层的向量维度。

下面是关键。传统的MRC模型抽取答案的方法是预测它的开始位置和它的结束位置,这相当于2个n分类,分别去在n个字符中预测开始位置和结束位置。

但是,在NER中,原文里可以有很多实体,甚至还可能嵌套,所以这种方法就不适用,基于此,我们采用2个2分类:对每个字符,它有两个预测结果,即是不是“可能”成为开始位置,是不是“可能”成为结束位置。

具体来说,我们有两个参数T(s)和T(e),分别去和BERT出来的表示做点积并得到概率分布:P(s) =softmax(E·T(s)), P(e) =softmax (E·T(e))。

现在,对P(s),P(e)的每一行,构成了一个是或不是(第一个位置为“不是的概率”,第二个位置为“是的概率”)开始或结束位置的概率分布。

比如,P(e)的第一行是[0.6,0.4],那么我就可以认为第一个token不是开始位置;P(e)的第三行是[0.1,0.9],那么第三个token就可能是实体的结束位置。

现在我们对P(s),P(e)每行做argmax,就得到了两个长度为n的0-1序列I(s)和I(e),如果第k个位置是1,那么说明第k个token就可能是开始或结束位置。

现在对I(s)中每个为1的位置i,和I(e)中每个为1的位置j且满足i<=j的连续字符序列x(i:j),计算x(i:j)为实体的概率p(i:j)=sigmoid(m· [E(i); E(j)])即可。得到的这个概率就是x(i:j)是实体类型为y的实体的概率。

训练与推理

在训练的时候,我们有三个损失,分别是开始位置损失、结束位置损失和实体损失,分别定义如下:

意思是,分别把预测的和真实的结果做交叉熵。然后加起来就是最后的损失。

在推理的时候,先得到I(s)和I(e),然后根据p(i,j)的得分去预测即可。如果p(i:j)>0.5,我们就认为x(i:j)是实体,否则就不是。

NER实验

Nested NER

我们首先在Nested NER上做实验,数据集(英文)用ACE2004,ACE2005,GENIA,KBP2017。

基线模型有Hyper-Graph,Seg-Graph,ARN,KBP17,Seq2seq-BERT,Path-BERT,Merge-BERT和DYGIE,具体实验设置详见原文。实验结果如下:

在所有数据集上,MRC的方法都取得显著更优。

Flat NER

下面我们在Flat NER上做实验,数据集分为中文和英文。英文有CoNLL2003,OntoNotes5.0;中文有MSRA,OntoNotes4.0,基线模型有BiLSTM-CRF, ELMo, CVT, BERT-Tagger(以上为英文), Lattice-LSTM, BERT-Tagger, Glyce-BERT(以上为中文)。实验结果如下:

可以看到,在两个OntoNotes数据集上,MRC的方法都有更多的提升,这是因为OntoNotes有更多的实体类型,一些类型数据非常稀疏。

这表明MRC方法有助于缓解数据稀疏问题,因为MRC中的问题能够编码一部分先验信息。

比对实验

下面我们从四个方面进行比对实验:提升来源(MRC还是BERT);问题构建策略;Zero-Shot表现;训练集大小。

提升来源:MRC还是BERT

第一个问题是,实验的提升到底是来自BERT还是来自MRC呢?如果来自MRC,那么把这种MRC方法加到其他非BERT模型上应该也会有显著提升。

所以,对非BERT模型,我们比较了普通的LSTM Tagger(non-MRC)和BiDAF/QAnet(MRC);对BERT模型,我们比较了BERT Tagger和BERT-MRC,实验结果如下:

很显然,无论对non-BERT还是BERT模型,MRC都比non-MRC好,尽管有了BERT也会有大幅提升。

问题构建策略

下面我们来讨论问题构建的不同策略。我们使用的是“标注说明”,但也有其他方法:

  • 标签下标:直接用标签在标签集中的下标作为问题,比如“one”,“two”;

  • 关键词:使用一个关键词作为问题,比如ORG的问题是“organization”;

  • 规则模板:用一个模板生成问题,比如ORG的问题是“which organization is mentioned in the text”;

  • 维基百科:用维基百科的定义作为问题,比如ORG的问题是“an organization is an entity comprising multiple people, such as an institution or an association”;

  • 近义词:用标签的近义词作为问题,近义词从牛津词典中抽取,比如ORG的问题是“association”;

  • 关键词+近义词:把这两个连接起来作为问题;

  • 标注说明:本文的方法。

下表是这几种方法的结果:

使用“标注说明”得到的模型效果最好,这是因为:

  • 标签下标没有任何有用的信息,因此效果很差;

  • 维基百科携带了较多无用信息,造成了干扰;

  • 标注说明描述准确,最为合适。

Zero-shot 表现

上面我们说到,MRC的问题由于编码了一些先验信息,所以可能在标签迁移上效果较好,下表是结果。可以看到,在两个数据集迁移上,tagger都远差于MRC。

训练集大小

最后来看看不同数据集大小对MRC和Tagger效果的影响,下图可见,即使训练数据只有50%,MRC方法都能达到Tagger的最优结果。这也说明了MRC具有一定的先验知识编码能力。

小结

在本文中,我们把命名实体识别置于一种机器阅读理解的问答框架下,用特定的问题去抽取特定标签的实体,不仅可能抽取一般的实体,还可以抽取嵌套的实体,方法简单有效,在中英8个数据集上取得了显著的效果提升。基于MRC的命名实体识别由于其简洁有效,很有实际应用的潜力。

????

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

关于PaperWeekly

PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。

ACL 2020 | 基于机器阅读理解框架的命名实体识别方法相关推荐

  1. 基于预训练模型的军事领域命名实体识别研究

    摘要 [目的]为了解决开源非结构化军事领域数据的命名实体识别问题.[方法]本文提出基于预训练模型(Bidirectional Encoder Representations from Transfor ...

  2. 【项目调研+论文阅读】基于BERT的中文命名实体识别方法[J] | day6

    <基于BERT的中文命名实体识别方法>王子牛 2019-<计算机科学> 文章目录 一.相关工作 二.具体步骤 1.Bi-LSTM 2.CRF结构 三.相关实验 1.数据集 2. ...

  3. ACL 2021 | 为什么机器阅读理解模型会学习走捷径?

    ©PaperWeekly 原创 · 作者 | Maple小七 学校 | 北京邮电大学硕士生 研究方向 | 自然语言处理 虽然当前的 MRC 模型在不少阅读理解 benchmark 上接近甚至超越了人类 ...

  4. COLING 2020 | 面向机器阅读理解的双向认知思维网络

    ©PaperWeekly 原创 · 作者|张琨 学校|中国科学技术大学博士生 研究方向|自然语言处理 Motivation 近两年,大家纷纷在提我们正在从感知智能向认知智能迈进,模型需要具备认知理解推 ...

  5. 基于BERT预训练的中文命名实体识别TensorFlow实现

    BERT-BiLSMT-CRF-NER Tensorflow solution of NER task Using BiLSTM-CRF model with Google BERT Fine-tun ...

  6. BERT-BiLSTM-CRF基于BERT预训练的中文命名实体识别TensorFlow实现

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx Tensorflow solution of NER task Using BiLSTM-CR ...

  7. 【论文泛读164】MECT:基于多元数据嵌入的中文命名实体识别交叉变换器

    贴一下汇总贴:论文阅读记录 论文链接:<MECT: Multi-Metadata Embedding based Cross-Transformer for Chinese Named Enti ...

  8. ACL 2020 | 基于多级排序学习的层次化实体标注

    ©PaperWeekly 原创 · 作者|龚俊民 学校|新南威尔士大学硕士生 研究方向|NLP.可解释学习 论文标题:Hierarchical Entity Typing via Multi-leve ...

  9. 卖萌屋福利场:《机器阅读理解》免费送送送!

    一只小狐狸带你解锁 炼丹术&NLP 秘籍 在送书之前,先来了解一下机器阅读理解是什么-已经很熟悉的小伙伴可以快速下拉进入福利场~ 机器阅读理解是什么 机器阅读理解(Machine Readin ...

最新文章

  1. Unicode字符集下WriteFile中文处理
  2. 阿里巴巴分布式服务框架 Dubbo
  3. 信息系统项目管理师-挣值管理(PV、 AC、 EV、 ETC、 CV、 SV、 CPI、 SP)
  4. idea 运行jmeter源码_学会BeanShell,才敢说自己懂Jmeter
  5. 机器学习大佬的进阶之路!一位北大硕士毕业梳理了完整的学习路线!
  6. ATHK弄出个有道词典加入生词本的快接键...
  7. 4WD机器人运动控制MDK工程(实现ROS与STM32F407通信)
  8. java .class文件和.class文件区别是什么?
  9. man综述--系统调用和库函数的关系
  10. Android 开发——环境搭建
  11. 牛顿迭代法实现平方根函数
  12. ps制作印章教程:印章ps制作盖章
  13. 【Python表白代码】“情话都是我抄来的,想说给你听是真的。”情人节快乐~
  14. Windows 7精简版(2019.04.10)
  15. torch.view()详解及-1参数是什么意思
  16. 知识点 - 后缀数组
  17. 7-2 你今天刷快手了吗
  18. Zabbix unreachable poller processes more than 75% busy
  19. java常见手写sql面试题_java sql常见面试题
  20. Windows 10 Enterprise LTSB版本

热门文章

  1. DBShop前台RCE
  2. ubuntu 安装 evpp
  3. Centos与Ubuntu
  4. Linux命令应用大词典-第1章 登录、退出、关机和重启
  5. WannaCry勒索比特币蠕虫病毒解决方案
  6. 关于CRM插件调试方面事
  7. jemalloc java_从源构建tensorflow遇到错误:规则'@jemalloc//:jemalloc'的C编译失败
  8. boot mybatis mysql_SpringBoot+Mybatis+MySql学习
  9. vue 时间插件_Vue3 插件开发详解尝鲜版「值得收藏」
  10. 计算机网络怎么查看连接打印机驱动,涨姿势:手把手教你如何连接网络打印机...