Future丨Intelligence丨Nutrition丨Energy

让阅读成为习惯,让灵魂拥有温度

点击关注PKUFineLab 

一起进步

命名实体识别研究进展概述

命名实体识别任务旨在从自然语言文本中识别具有特定意义的实体,如人名、地名、组织名等。在自然语言处理(Natural Language Processing, NLP)中,命名实体识别通常是自然语言理解的第一步,它的结果被用于许多后续的NLP任务,如实体链接(Entity linking)、关系抽取(Relation extraction)和句法分析(Syntactic parsing)等,因此,命名实体识别任务的效果好坏就至关重要了。举例来讲,如果命名实体识别任务从“南京市长江大桥于1968年12月29日建成通车”这句话中错误地识别出职务名——“南京市长”和人名——“江大桥”,而不是正确地识别出地名——“南京市”和桥名——“长江大桥”,则后续基于错误识别结果的NLP任务也无法得到期望的结果。

命名实体识别任务往往被看作语言序列标注(Linguistic sequence labeling)任务。传统的序列标注任务多使用线性模型,如隐马尔可夫模型(Hidden Markov Models, HMM)和条件随机场(Conditional Random Fields, CRF),并且依赖专家知识(Task-specific knowledge)和人工提取特征(Hand-crafted features)。近年来随着机器算力的增长和深度学习算法的发展,命名实体识别任务利用分布式表示学习方法和非线性的神经网络构建了端到端的模型,从而在无专家知识和人工提取特征的基础上实现了更好的效果。进一步的,针对命名实体识别现阶段面临的各类问题,近期的研究工作相应地对模型做了精细化的调整,也提出了一些新颖的想法。下文将首先介绍现阶段命名实体识别的基本套路,接着在此基础上介绍一些新的、有意思的探索,最后是个人的一点体会。

基本套路

现阶段主流的命名实体识别的基本套路可以总结为“三板斧”:单词的字符级表示、(双向)LSTM编码和CRF解码。代表性工作是2016年发表在ACL的工作[1]。

首先,在对句子中的单词进行向量表示的时候,除了常用的词嵌入向量(word embedding),文章还利用CNN来学习每个单词字符级别的特征,如图1所示。

图1 用于提取单词的字符级表示的CNN

将单词“playing”的各字符嵌入向量作为CNN的输入,经过卷积和池化后,得到单词“playing”的字符级表示。通过这种方式,文章认为可以学习到单词的词法特征,如单词的前缀、后缀等特征。

接着,文章使用双向LSTM作为编码层,学习每个单词在句子中上下文的特征,如图2所示。

图2 双向LSTM和CRF组成的模型框架

将每个单词的词嵌入向量和字符级表示向量拼接之后作为编码层的输入,通过双向LSTM为每个单词得到两个(前向和后向)隐藏层向量表示,将这两个隐藏层向量拼接后作为解码层——CRF的输入。

最后,文章选用CRF作为解码层的原因是,CRF会考虑相邻label间的关系,而不是独立地将每个单词解码成label,例如,在词性标注任务中,“形容词”后更可能跟一个“名词”而不是“动词”,或者是在利用BIOES(Begin, Inside, Other, End & Single)标注模式的实体识别任务中,“I-ORG”不可能紧跟在“I-PER”后。从而能够为一个给定的文本序列解码出一个最好的label链。

新的探索

随着深度学习的发展,命名实体识别任务也有了一些新的探索,包括解决标注数据规模和模型参数量不匹配的问题、文本中命名实体嵌套的问题、中文分词对实体识别的影响问题和模型的并行化问题等等,本章节主要就前两个问题及相关工作做进一步叙述。

标注数据不足

随着模型的愈发精细复杂,需要训练的参数日益庞大,但其训练所需的人工标注数据却因为标注成本的问题难以得到相应地增长。为解决这个问题,一个常用的方法是使用远程监督的方法来得到大量的远程监督标注数据,但由于用于远程监督的知识库规模有限,大量的实体存在于文本中而未出现在知识库中,导致在远程监督时,将这些未出现在知识库中的实体标注为非实体,从而产生大量的假负例,这即是远程监督标注数据带来的有限覆盖问题(Limited Coverage)。除此之外,另外一种思路是通过优化模型,限制参数量,从而使得模型能够在较小的标注数据集上也能够完成训练。

有限覆盖问题

为了缓解有限覆盖问题对模型训练的影响,Shang J等人在2018年的工作中提出了两种方式。首先是利用最先进的短语挖掘方法在文本中挖掘出“高质量短语”,然后在利用知识库远程监督标注时,将文本中未出现在知识库中的“高质量短语”标注为“Unknow”。这样标注数据除了实体类别和非实体以外,还多了“Unknown”类别。随着标签的扩展,上一章中提到的基本套路中的CRF解码层就需要做相应改变,如图3所示。

图3 扩展的CRF解码层

基于BIOES序列标注模式进行实体标注,句子中每个单词的标签是“位置-实体类别”的形式,于是,每个单词有5*实体类别数量个可能的标签(图3中的每一列)。在传统的数据标注上,CRF解码层是从图中所有的路径中找出最大可能性的“一条”路径进行解码标注,即每列找出一个最可能的标签。而增加了“Unknow”类别后,文章认为“Unknown”类别即意味着其单词可能是任意的标签(图3中“prostaglandin”和“synthesis”对应的两列),则CRF解码层需要从图中所有路径中找出最大可能性的“一簇”路径进行解码标注。

进一步的为了缓解有限覆盖问题带了的负面影响,文章提出了第二种方法——“Tie or Break”序列标注模式。不同于传统的标准的BIO2标注模式,“Tie or Break”不再直接对文本中的单词进行标注,而是对文本中相邻单词的关系进行标注。其规则如下,

  1. 相邻的两个单词出现在同一个(知识库)实体中,这两个单词间的关系标注为“Tie”;

  2. 相邻的两个单词中但凡有一个出现在Unknown类型的“高质量短语”中,这两个单词间的关系标注为“Unknown”;

  3. 其它情况,标注为“Break”。

这种标注模式有两点好处,其一,当文本中的短语在远程监督时被知识库中的实体部分匹配或者错误匹配时,这些短语内单词间的Tie关系是正确的不受影响的;其二,在远程监督标注时,文本中的单词极容易被知识库中unigram entity即由单独单词组成的实体错误地标注成假正例。而使用“Tie or Break”序列标注模式,无论一个单词时真正的unigram entity或者是假正例,它与两边的单词间的关系都是“Break”,由此减少了假正例对模型的影响。为了匹配这种新的标注模式,文章提出了一种新的命名实体识别模型——AutoNER,如图4所示。

图4 基于“Tie or Break”标注模式的AutoNER

自下而上,我们依然能看到单词的字符级别表示和双向LSTM编码,虽然与上一章提到的具体方法有所差异,但其思想基本是一致的,我们重点关注在LSTM编码层之后的解码层。在这个模型中,文章没有继续使用CRF而是分为两步去做解码:第一步,使用双向LSTM表示出单词间关系的隐藏层向量表示后,然后使用一个二分类器区分“Break”和“Tie”,不对“Unknown”做判断;第二步,将第一步预测出的两个相邻“Break”之间的短语视为一个待预测的候选实体,用单词的隐藏层向量综合表示该短语,然后输入到一个多分类器中。

领域敏感特征

为了使得模型能在较小的标注数据集上完成训练,2018年Liu L等人发表在AAAI上的工作[3]提出了一种可行的思路。文章提出了一种LM-LSTM-CRF模型,通过模型的名称,我们就可以看出在该模型的编码层和解码层应当和第一章提到的主流方法相同,文章的主要贡献在单词的字符级表示,准确来讲,文章的主要贡献在对字符级别的特征的挑选。文章认为,单词字符级的特征虽然在已有的工作中被证明有效,但其是在大规模预料上经过预训练得到,包含了大量领域无关的特征,这些领域无关的特征需要更多的数据、更大的模型来训练更长的时间。而本文利用多任务学习提取共享特征的思路,以及语言模型(Neural Language Model)可以学习领域敏感特征的特性,使用语言模型从文本的大量特征中只提取领域相关的特征用于序列标注模型的训练,屏蔽掉了大量的任务无关特征,从而使得序列标注模型可以用少量的参数达到较好的效果,具体模型如图5所示。

图5 LM-LSTM-CRF模型结构

图中使用了双向LSTM提取字符级别的特征,而隐藏层向量却是用于两个任务:序列标注(主要任务)和语言模型(辅助任务)。其中,序列标注任务不再赘述,语言模型就是利用已知序列预测下一个单词是什么,在该模型中,利用单词的前一个隐藏层输出来表示该单词,如前向LSTM中用“Pierre”前一个字符的隐藏层向量来表示“Pierre”,然后进行Softmax分类操作。并且由于这两个任务是不相关的(相关的任务如实体识别和关系抽取),所以文章中在字符级别的LSTM后特意使用了highway层,将隐层向量映射到两个不同的向量空间,各自完成不同的任务。

命名实体嵌套

实体嵌套是指在一句文本中出现的实体,存在某个较短实体完全包含在另外一个较长实体内部的情况,如“南京市长”中地名“南京”就嵌套在职务名“南京市长”中。而传统的命名实体识别任务关注的都是平坦实体(Flat entities),即文本中的实体之间不交叉、不嵌套。为了解决嵌套命名实体识别的问题,近年来的研究做了不同的尝试,本文就我了解的几篇工作作简要的介绍,希望能对大家有所启发。

首先,第一篇是Ju M等人于2018年发表在NAACL上的工作[4],该工作提出一种层模型,其思路其实非常简单,就是对文本一遍一遍的识别,直到识别不出实体为止。具体就是将前面提到的LSTM+CRF看作一个平坦命名实体识别层(flat NER layer),通过动态的堆叠flat NER layer,自内而外的一层一层的识别嵌套实体(先识别inner entities,再识别outer entities),直到flat NER layer识别不出实体,停止堆叠,模型如图6所示。

图6 层模型

自下而上,在第一个flat NER layer内,文章把每个token经过双向LSTM后对应的隐藏层表示输入到CRF中,用于识别最内层实体(most inner entities),然后将构成每个最内层实体的单词的隐藏层向量相加并平均来表示最内层实体,然后将其看作一个新的“单词”,替换组成最内层实体的所有单词,然后和其他被识别为Other的单词组成新的序列输入到下一个flat NER layer中,重复以上内容,直到某个flat NER layer将其输入的token都标记为Other后结束堆叠。作者认为通过这样的方式不但可以将嵌套的实体识别出来,还能考虑到inner entities和其outer entities之间的关系。

接着,第二篇是Sohrab M G等人于2018年发表在EMNLP上的工作[5],该工作的主要内容集中在解码层,单词的字符级表示和双向LSTM编码层与前面的工作大同小异。如图7所示,在解码层,文章不再使用CRF,而是使用一个可变长的滑动窗口在编码层输出的隐藏层向量序列上滑动,枚举出所有可能的片段作为候选实体,然后利用隐藏层向量表示这些候选实体,最后分别通过Softmax进行分类。虽然试验结果不错,但我认为这种穷举的方法比较适合于序列长度较短的情况,因为一方面它忽略了标签间的相关性,另一方面当序列长度较长的情况下,穷举法会得到大量的负样本,使得正负样本不均衡,影响模型效果。

图7 枚举模型

最后,同样是一篇来自2018年EMNLP的工作[6],不同于前面两篇工作对平坦命名实体识别主流方法的修修改改,本文的核心思想是将文本进行一定的转化之后,实现对嵌套实体的平坦访问(顺序访问)。

首先,如图8所示,作者将嵌套实体表示成一棵句法成分树,文本中的多个嵌套实体便被表示成一个森林。其中,树的叶子节点是文本中的token,而非叶子节点便是实体类别,这样实体的嵌套关系便被表示成了树中非叶子节点的父子关系。

图8 用句法成分树标注的嵌套实体

同时自底向上构建句法成分树的过程中,便实现了嵌套实体平坦访问,即构建树的过程中,用非叶子节点的构建动作对应了相应的实体类别,而这些动作是顺序的,不存在嵌套关系。而森林的构建过程是由多个树的顺序构建过程组成,其被放入一个栈中。如图9所示,

图9 句法成分森林的构建过程

构建动作的执行是由系统的当前状态决定的,系统的当前状态包含栈的状态,文本序列的剩余部分,构建动作的历史。这样,以系统状态作为输入,当前状态应执行的动作为输出,即可完成模型的训练。

具体而言,文章首先定义了三类动作:SHIFT,REDUCE-X和UNARY-X,其中X是指实体类别,属于一个预定义的类别集合。SHIFT操作是指将文本序列中的当前单词入栈;REDUCE-X是给栈顶的两个元素出栈,并给他们设置一个共同父节点X,然后将这个树元素入栈;UNARY-X则是将栈顶元素出栈,为其设置一个父节点X,然后将这个新的树元素入栈。定义好动作之后即得到了模型的输出(label),而其输入——系统的状态,则分三部分表示:

  1. 栈的向量化表示使用了stack LSTM模型,在传统的LSTM上加入了栈顶指针,用栈顶指针所指向的unit的隐藏层输出来表示栈的状态;

  2. 文本序列的剩余部分则通过一个后向的LSTM建模,使用顺序第一个单词的隐藏层输出表示文本序列的剩余部分的状态;

  3. 历史构建动作则通过一个前向的LSTM进行学习,最近一次动作的隐藏层输出表示历史动作的状态。

将这三种状态的向量表示拼接起来表示系统状态,作为Softmax的输入。

总结

科研有时候是使用新技术解决旧问题,而同时,新技术的使用也会带来新的问题,这一点在命名实体识别领域让我感触尤为深刻。一方面,得益于深度学习的发展,命名实体识别模型实现了更好的效果,对各种细节问题也有了精细化的建模;而另一方面,深度学习技术也带来了一些问题,比如标注数据同参数规模不匹配的问题,精细模型并行化程度不高的问题等。

针对命名实体识别领域的研究现状,本文首先介绍了该领域的主要任务和主流方法,并在此基础上,就近年来的最新进展挑选了两个有意思的问题和相关探索进行了介绍。此外还有中文分词对命名实体识别的影响,以及模型并行话程度不高等问题,由于篇幅所限,这里未作介绍,感兴趣的话可以查看[7][8]两篇工作。

参考文献

[1] Ma X, Hovy E H. End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF[J]. meeting of the association for computational linguistics, 2016: 1064-1074.

[2] Shang J, Liu L, Ren X, et al. Learning Named Entity Tagger using Domain-Specific Dictionary[J]. arXiv preprint arXiv:1809.03599, 2018.

[3] Liu L, Shang J, Ren X, et al. Empower sequence labeling with task-aware neural language model[C]//Thirty-Second AAAI Conference on Artificial Intelligence. 2018.

[4] Ju M, Miwa M, Ananiadou S. A neural layered model for nested named entity recognition[C]//Proceedings of the 2018 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, Volume 1 (Long Papers). 2018, 1: 1446-1459.

[5] Sohrab M G, Miwa M. Deep Exhaustive Model for Nested Named Entity Recognition[C]//Proceedings of the 2018 Conference on Empirical Methods in Natural Language Processing. 2018: 2843-2849.

[6] Wang B, Lu W, Wang Y, et al. A neural transition-based model for nested mention recognition[J]. arXiv preprint arXiv:1810.01808, 2018.

[7] Zhang Y, Yang J. Chinese NER Using Lattice LSTM[J]. meeting of the association for computational linguistics, 2018: 1554-1564.

[8] Strubell E, Verga P, Belanger D, et al. Fast and Accurate Entity Recognition with Iterated Dilated Convolutions[J]. empirical methods in natural language processing, 2017: 2670-2680.

作者简介及往期文章

张程博

博士研究生二年级、软件工程专业

研究方向:日志增强技术,知识图谱构建及应用

作者往期文章汇总:

  1. 浅谈程序语言处理

  2. 语义网:这二十年的’老古董’究竟是什么

  3. 表示学习之跨语言表示学习

扫 描 关 注

PKUFineLab

转载请联系:

colordown@pku.edu.cn

Where there is a will there is a way.

xmlstreamexception 参数实体未进行声明_命名实体识别研究进展概述相关推荐

  1. 【NER综述】近五年中文电子病历命名实体识别研究进展

    来自:python遇见NLP 阅读综述性论文是一种能够快速了解某一领域的方法,接下来通过今年的一篇综述性论文来了解一下近五年来中文电子病历的命名实体识别研究进展. 基本的,我们应该先来了解一下两个概念 ...

  2. 近五年中文电子病历命名实体识别研究进展

    原文链接: 近五年中文电子病历命名实体识别研究进展 阅读综述性论文是一种能够快速了解某一领域的方法,接下来通过今年的一篇综述性论文来了解一下近五年来中文电子病历的命名实体识别研究进展. 基本的,我们应 ...

  3. lstm原始论文_命名实体识别NER论文调研

    因为NER任务与笔者之前做的CCF互联网金融新实体识别竞赛相关,所以这两个月也调研了一些NER的算法,这两年的NER算法思想主要集中在将词典信息融入训练过程,达到减少中文语义歧义的效果. CCF互联网 ...

  4. 命名实体识别_命名实体识别的几种标注形式

    选择一个正确的用例和工作流 Choosing the right recipe and workflow 所以你有一个需要解决的NER问题,以及需要注释的数据.你要尽可能高效地完成它.但是如何为你的用 ...

  5. python 命名实体识别_命名实体识别的两种方法

    作者:Walker 目录 一.什么是命名实体识别 二.基于NLTK的命名实体识别 三.基于Stanford的NER 四.总结 一 .什么是命名实体识别? 命名实体识别(Named Entity Rec ...

  6. 草履虫纳米机器人_纳米机器人的研究进展如何?

    纳米机器人是一个学科高度交叉的研究领域,涉及物理.化学.材料.生物等多个学科的基础科学研究. 撰文 | 王威(哈尔滨工业大学(深圳)教授) 说起纳米机器(nanomachines),人们恐怕不免联想到 ...

  7. 谭民机器人_机器人视觉伺服研究进展-中科院自动化所-谭民.

    文章编号 :100220446(2004 0320277206 机器人视觉伺服研究进展 Ξ 王麟琨 , 徐德 , 谭民 ( 中国科学院自动化研究所复杂系统与智能科学实验室 , 北京 100080 摘 ...

  8. 计算机网络信息中心韩文静,语音情感识别研究进展综述_韩文静

    软件学报ISSN 1000-9825, CODEN RUXUEW E-mail: jos@http://www.wendangwang.com Journal of Software,2014,25( ...

  9. 【论文笔记】《基于深度学习的中文命名实体识别研究》阅读笔记

    作者及其单位:北京邮电大学,张俊遥,2019年6月,硕士论文 摘要 实验数据:来源于网络公开的新闻文本数据:用随机欠采样和过采样的方法解决分类不均衡问题:使用BIO格式的标签识别5类命名实体,标注11 ...

最新文章

  1. [Web 前端] react-router4-0中文文档
  2. 方法的重写-覆盖父类方法,重写子类方法实现
  3. linux svn 面板,Linux下SVN服务器搭建(CentOS+Subversion)
  4. linux查找修改时间在三天前,ECS linux 中查找最近一次修改过的文件的具体操作
  5. 代码大全(第二版)笔记——高质量的子程序
  6. html底部线条,这种APP底部横线+文字该怎么布局?css
  7. Atitit 微服务的一些理论 目录 1. 微服务的4个设计原则和19个解决方案 1 2. 微服务应用4个设计原则 1 2.1. AKF拆分原则 2 2.2. 前后端分离 2 2.3. 无状态服务
  8. linux 7.4ip配置,新手进阶 Ubuntu7.10中配置IP地址
  9. Linux安装fcitx输入法
  10. java 调用阿里云翻译
  11. jvm学习——jvm内存区域
  12. tp5 怎么安装 后盾网加密解密crypt扩充扩展包?
  13. mac地址修改_全球首款支持电脑名称和MAC地址修改的浏览器 VMLogin超级防关联指纹浏览器 同时支持模拟真人输入,支持自定义经纬度...
  14. [Angular] ng-alain的一些实践
  15. 极光im java_java手写一个迷你版的Tomcat代码分享
  16. 浪潮和思科联合 华为、新华三怎么看?
  17. 一个图层隶属下一个图层
  18. python制作的网站例子_利用Python绘制Jazz网络图的例子
  19. iNode智能客户端 是什么,实现了怎样的功能。
  20. 2022.12.30

热门文章

  1. Windows Phone 实用开发技巧(9):自定义Windows Phone 页面切换动画
  2. 基于混合储能的并网光伏发电系统仿真
  3. MATLAB/simulink控制系统之传递函数模型
  4. Oracle数据库的一些常用命令
  5. php 剩余空间,PHP内核探索:内存的申请与销毁
  6. 易语言逐条读access数据_易语言对ACCESS数据库基础(适合新手)
  7. delphi 折叠代码 快捷键_我收藏的几个更快搬砖的vscode快捷键
  8. 树莓派python网络通信_Python3使用Socket实现树莓派与计算机半双工通信,实现聊天功能...
  9. VS 调试断点命中了,程序无法再断点处中断
  10. 简单Unity时间架构设计(克洛诺斯之匙)