命名实体识别(Name Entity Recognition) 是自然语言处理中一个比较基础的问题。要解决的问题是,从unstructure的文本当中找到实体并归类。当然我这么定义已经有了一定的bias,认为是先找实体在归类,但实现过程则并不一定如此。
 
定义一般来说都比较抽象,我们举一些例子来理解一下NER试图要解决的问题。比如说,一篇作文中,找出时间,人物,地点; 一个医学报告中,找出疾病名称及药品名称等; 一份合同中,找出甲方乙方,付款方式以及到期日期等。
 
这些问题看上去似乎并不难,近几年的BiLSTM, BERT以及各种变形模型也不断刷新分数棒,F1高达0.95.
 
然而,当把NER运用到实际中来时,效果并不像理论上那么好。很多人称,NER问题离被解决还有很长的路要走。
 
为什么呢?
 
首先,对于实体的定义,据说即使都是行业专家,认同度达到95%已是非常难。人类尚未清楚自己想要什么,怎能期待模型能给出完美答案呢。这句话其实不然,也许模型就是知道你想要什么。
扯远了,其实要说的是,定义的模糊是这个问题的难点之一。举一个药品的例子。上下文是,一个人得了感冒,医生建议吃点泡腾片,补充一下vc。那,这个泡腾片可以是药品吗?
 
难点之二,一词多义,在简短的上下文中无法正确归类。比如说, 甲壳虫走了。这句话中,甲壳虫可以是汽车,可以是昆虫。
 
难点之三,边界模糊,主要原因是复杂的实体在标注的时候,就很难有一致的认识,以及实体prevalence(出现率)比较低导致边界在哪里嘛,太难说了。对于前者,比如说合同类型,"某某公司的员工雇佣合同”和"员工雇佣合同”都可以归类为合同类型,但前缀取不取呢,在不同上下文中可能有不同的需求。
 
NER问题解决经历了三个阶段。
最早的技术是,规则匹配和词典查询匹配。为了提高precision和recall,规则会变得非常的复杂,词典会变得非常的庞大。要构造完整的词典代价非常的大,于是在词典匹配上又结合了集群以及相似度查询的方法。
第二阶段,手工特征工程机器学习。这个阶段的特征工程的工作相当繁重,除了n-gram的词之外,比如说POS tag, 大小写,数字替代,词语集群等等。机器学习部分一般是比较简单的逻辑回归加CRF解码。即使手动工作量相当繁重,但是比起规则匹配和完善词典的工作还是轻松不少,效果也好很多。
第三阶段,深度学习。这个阶段,重要特征在深度神经网络中基本上可以做到自动提取,并且,效果明显比手动的特征工程好很多。加上embedding的使用,使得模型的输入含有更加丰富的信息。排行榜不断被刷新的事实也可以说明这一点。
 
那为什么深度学习还是不能完美解决实际的问题呢。这和之前提出来的难点息息相关的。
一词多义需要很长的上下文才能明确意思,但一般的深度学习模型不能有太长的输入。比如说经典的用来解决NER的深度模型BERT或BiLSTM一般输入为512或728个token,如果太长,系统资源消耗太大。
另外,一般的评分系统都是基于token的,最终整个词组被准确识别出来的分数并未受到非常大的关注。词组分界问题在不同的领域难度也差别很大,但如何在token模型之后准确解码到词组,并没有被很好的research过。
实际的NER问题比公共数据库,比如说CoNLL的难度要大很多。每个行业可能有自己的twist,但是并没有系统的被讨论和共享起来。
难以得到完美的数据集,使得这个问题即使解决的再完美也只能停留在某个水平。
 
之前看spacy的创始人讲NER, 说大家要达到一个基础水平很容易,要上一个台阶就非常难了。NER这个问题尚未解决也是相当fair的一种说法。 
 
阅读作者更多原创,观众微信公众号:

NER为什么那么难的更多相关文章

  1. 『深度应用』NLP命名实体识别(NER)开源实战教程

    近几年来,基于神经网络的深度学习方法在计算机视觉.语音识别等领域取得了巨大成功,另外在自然语言处理领域也取得了不少进展.在NLP的关键性基础任务—命名实体识别(Named Entity Recogni ...

  2. NER

    写在前面:在初学nlp时的第一个任务——NER,尝试了几种方法,cnn+crf.lstm+crf.bert+lstm+crf,毫无疑问,最后结果时Bert下效果最好. 1.关于NER: NER即命名实 ...

  3. 中文NER的那些事儿1. Bert-Bilstm-CRF基线模型详解&代码实现

    这个系列我们来聊聊序列标注中的中文实体识别问题,第一章让我们从当前比较通用的基准模型Bert+Bilstm+CRF说起,看看这个模型已经解决了哪些问题还有哪些问题待解决.以下模型实现和评估脚本,详见 ...

  4. 中文NER的那些事儿4. 数据增强在NER的尝试

    这一章我们不聊模型来聊聊数据,解决实际问题时90%的时间其实都是在和数据作斗争,于是无标注,弱标注,少标注,半标注对应的各类解决方案可谓是百花齐放.在第二章我们也尝试通过多目标对抗学习的方式引入额外的 ...

  5. 看完SQL Server 2014 Q/A答疑集锦:想不升级都难!

    看完SQL Server 2014 Q/A答疑集锦:想不升级都难! 转载自:http://mp.weixin.qq.com/s/5rZCgnMKmJqeC7hbe4CZ_g 本期嘉宾为微软技术中心技术 ...

  6. 听H3絮叨:何以让天下没有难用的流程

    最近朋友圈.网站新闻铺天盖地是"让天下没有难用的流程",有人就要问了,H3 BPM何德何能,为BPM站台,让天下没有难用的流程? 这是一个关于"办公室空想"的故 ...

  7. H3 BPM让天下没有难用的流程之产品概述

    一.产品简介 BPM(Business Process Management),是指根据业务环境的变化,推进人与人之间.人与系统之间以及系统与系统之间的整合及调整的经营方法与解决方案的IT工具. H3 ...

  8. 【转】真正从零开始,TensorFlow详细安装入门图文教程!(帮你完成那个最难的从0到1)

    AI这个概念好像突然就火起来了,年初大比分战胜李世石的AlphaGo成功的吸引了大量的关注,但其实看看你的手机上的语音助手,相机上的人脸识别,今日头条上帮你自动筛选出来的新闻,还有各大音乐软件的歌曲& ...

  9. 别老嫌Mac系统难用 这些快捷键你都用过吗

    苹果今年10月发布的全新带把儿(bar)的MacBook,轻薄炫酷的外观大受欢迎,其中当然不乏很多从Windows转到Mac阵营的用户.不少习惯了Windows操作习惯的用户在上手Mac时都会觉得非常 ...

随机推荐

  1. 源码解析.Net中DependencyInjection的实现

    前言 笔者的这篇文章和上篇文章思路一样,不注重依赖注入的使用方法,更加注重源码的实现,我尽量的表达清楚内容,让读者能够真正的学到东西.如果有不太清楚依赖注入是什么或怎么在.Net项目中使用的话,请点击 ...

  2. 前端axios请求二进制数据流转换生成PDF文件空白问题(终极解决方案)

    本文章共1570字,预计阅读时间1 - 3分钟. 问题场景: axios请求二进制数据转换生成PDF空白问题,使用axios请求后端接口,后端返回的二进制流文件,需要转换成PDF,但是在postman ...

  3. 记录Mac下使用Charles抓包

    抓包 简述 在网络应用如后端系统,app,小程序等的开发过程中,免不了接口可能会报错,但是一般在app中或者小程序中没有便捷的console控制台,而且线上环境也不会开启调试模式,所以想看一下接口的响 ...

  4. springmvc图片上传、json

    springmvc的图片上传 1.导入相应的pom依赖 <dependency> <groupId>commons-fileupload</groupId> < ...

  5. Smooth

      考场\(AC\),还是很开心的.   考虑这题让你干啥,就是给你一堆素数,然后让你用他们去构造数,求其中第\(k\)小的.   我们可以用系数累乘的方式,同时利用小根堆实现有序,加一个优化,就过了 ...

  6. scikit-learn 1.0 版本新特性及变动前瞻性预览

    1 简介 就在几天前,著名的机器学习框架scikit-learn在pypi上释放了其1.0rc1版本,这里给大家科普一下,版本号中的rc是Release Candidate的简称,代表当前的版本是一个 ...

  7. (4)ElasticSearch在linux环境中搭建集群

    1.概述 一个运行中的Elasticsearch实例称为一个节点(node),而集群是由一个或者多个拥有相同cluster.name配置的节点组成,它们共同承担数据和负载的压力.当有节点加入集群中或者 ...

  8. Spring中使用@within与@target的一些区别

    目录 背景 模拟项目例子 看看使用@within和@target的区别 @within @target @target 看起来跟合理一点 通知方法中注解参数的值为什么是不一样的 想用@within,但 ...

  9. POJ1321——棋盘问题

    http://poj.org/problem?id=1321 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解 ...

  10. 学习PHP中的国际化功能来查看货币及日期信息

    做为一门在世界范围内广泛使用的编程语言,国际化能力往往是衡量一个编程语言是否能够大范围流行的重要内容.特别是对于 PHP 这种以 Web 页面编程为主战场的语言来说,国际化能力更是重中之重.在 PHP ...