本文对自然语言基础技术之命名实体识别进行了相对全面的介绍,包括定义、发展历史、常见方法、以及相关数据集,最后推荐一大波 Python 实战利器,并且包括工具的用法。

01

定义

先来看看维基百科上的定义:Named-entity recognition (NER) (also known as entity identification, entity chunking and entity extraction) is a subtask of information extraction that seeks to locate and classify named entity mentions in unstructured text into pre-defined categories such as the person names, organizations, locations, medical codes, time expressions, quantities, monetary values, percentages, etc.

命名实体识别(Named Entity Recognition,简称NER),又称作“专名识别”,是指识别文本中具有特定意义的实体,主要包括人名、地名、机构名、专有名词等。简单的讲,就是识别自然文本中的实体指称的边界和类别。

02

发展历史

命名实体识别这个术语首次出现在 MUC-6(Message Understanding Conferences),这个会议关注的主要问题是信息抽取(Information Extraction),第六届 MUC 除了信息抽取评测任务还开设了新评测任务即命名实体识别任务。

除此之外,其他相关的评测会议包括CoNLL(Conference on Computational Natural Language Learning)、ACE(Automatic Content Extraction)和IEER(Information Extraction-Entity Recognition Evaluation)等。

在MUC-6之前,大家主要是关注人名、地名和组织机构名这三类专业名词的识别。自MUC-6起,后面有很多研究对类别进行了更细致的划分,比如地名被进一步细化为城市、州和国家,也有人将人名进一步细分为政治家、艺人等小类。

此外,一些评测还扩大了专业名词的范围,比如CoNLL某年组织的评测中包含了产品名的识别。一些研究也涉及电影名、书名、项目名、研究领域名称、电子邮件地址、电话号码以及生物信息学领域的专有名词(如蛋白质、DNA、RNA等)。甚至有一些工作不限定“实体”的类型,而是将其当做开放域的命名实体识别和分类。

03

常见方法

早期的命名实体识别方法基本都是基于规则的。之后由于基于大规模的语料库的统计方法在自然语言处理各个方面取得不错的效果之后,一大批机器学习的方法也出现在命名实体类识别任务。宗成庆老师在统计自然语言处理一书粗略的将这些基于机器学习的命名实体识别方法划分为以下几类:

有监督的学习方法:这一类方法需要利用大规模的已标注语料对模型进行参数训练。目前常用的模型或方法包括隐马尔可夫模型、语言模型、最大熵模型、支持向量机、决策树和条件随机场等。值得一提的是,基于条件随机场的方法是命名实体识别中最成功的方法。

半监督的学习方法:这一类方法利用标注的小数据集(种子数据)自举学习。

无监督的学习方法:这一类方法利用词汇资源(如 WordNet)等进行上下文聚类。

混合方法:几种模型相结合或利用统计方法和人工总结的知识库。

值得一提的是,由于深度学习在自然语言的广泛应用,基于深度学习的命名实体识别方法也展现出不错的效果,此类方法基本还是把命名实体识别当做序列标注任务来做,比较经典的方法是 LSTM+CRF、BiLSTM+CRF。

04

相关数据集

1. CCKS2017 开放的中文的电子病例测评相关的数据。

评测任务一:

https://biendata.com/competition/CCKS2017_1/

评测任务二:

https://biendata.com/competition/CCKS2017_2/

2. CCKS2018 开放的音乐领域的实体识别任务。

评测任务:

https://biendata.com/competition/CCKS2018_2/

3. (CoNLL 2002)Annotated Corpus for Named Entity Recognition。

地址:

https://www.kaggle.com/abhinavwalia95/entity-annotated-corpus

4. NLPCC2018 开放的任务型对话系统中的口语理解评测。

地址:

http://tcci.ccf.org.cn/conference/2018/taskdata.php

5. 一家公司提供的数据集,包含人名、地名、机构名、专有名词。

下载地址:

https://bosonnlp.com/dev/resource

05

工具推荐

1. Stanford NER

斯坦福大学开发的基于条件随机场的命名实体识别系统,该系统参数是基于 CoNLL、MUC-6、MUC-7 和 ACE 命名实体语料训练出来的。

地址:

https://nlp.stanford.edu/software/CRF-NER.shtml

Python 实现的 Github 地址:

https://github.com/Lynten/stanford-corenlp

2 .MALLET

麻省大学开发的一个统计自然语言处理的开源包,其序列标注工具的应用中能够实现命名实体识别。

官方地址:

http://mallet.cs.umass.edu/

3. Hanlp

HanLP 是一系列模型与算法组成的 NLP 工具包,由大快搜索主导并完全开源,目标是普及自然语言处理在生产环境中的应用。支持命名实体识别。

Github 地址:

https://github.com/hankcs/pyhanlp

官网:

http://hanlp.linrunsoft.com/

4. NLTK

NLTK 是一个高效的 Python 构建的平台,用来处理人类自然语言数据。

Github 地址:

https://github.com/nltk/nltk

官网:

http://www.nltk.org/

5. SpaCy

工业级的自然语言处理工具,遗憾的是不支持中文。

Gihub 地址:

https://github.com/explosion/spaCy

官网:https://spacy.io/

6. Crfsuite

可以载入自己的数据集去训练 CRF 实体识别模型。

文档地址:

https://sklearn-crfsuite.readthedocs.io/en/latest/?badge=latest

代码已上传:

https://github.com/yuquanle/StudyForNLP/blob/master/NLPbasic/NER.ipynb

参考:

1. 统计自然语言处理

2. 中文信息处理报告-2016

相关阅读:

NLP 入门 (1)| 一篇小文入门 Python

NLP 入门 (2)| 快速入门 Numpy

NLP 入门 (3)| NLP 分词的那些事儿

NLP 入门 (4)| 一起来看看词性标注

作者简介

乐雨泉 (yuquanle),湖南大学在读硕士,研究方向机器学习与自然语言处理。曾在IJCAI、TASLP等会议/期刊发表文章多篇。欢迎志同道合的朋友和我在公众号"AI小白入门"一起交流学习,探讨成长。

一文读懂命名实体识别相关推荐

  1. 初学者 | 一文读懂命名实体识别

    本文对自然语言基础技术之命名实体识别进行了相对全面的简绍,包括定义.发展历史.常见方法.以及相关数据集,最后推荐一大波python实战利器,并且包括工具的用法. 定义 先来看看维基百科上的定义:Nam ...

  2. 论文解读丨图神经网络应用于半结构化文档的命名实体识别和关系提取

    摘要: 随着用于传递和记录业务信息的管理文档的广泛使用,能够鲁棒且高效地从这些文档中自动提取和理解内容的方法成为一个迫切的需求.本次解读的文章提出利用图神经网络来解决半结构化文档中的实体识别(NER) ...

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

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

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

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

  5. 一文读懂3D人脸识别十年发展及未来趋势

    来源丨机器之心 人脸识别是机器学习社区研究最多的课题之一,以 3D 人脸识别为代表的相关 ML 技术十年来都有哪些进展?这篇文章给出了答案. 近年来,人脸识别的研究已经转向使用 3D 人脸表面,因为 ...

  6. 一文读懂身份证ocr识别

    2004年,我国推出二代身份证并大力普及,时至今日应该所有国民都已统一更换了.二代身份证中内嵌有一枚国密智能芯片,加密存储了公民的所有基本信息(姓名.性别.民族.出生日期.身份证号.证件照片.家庭住址 ...

  7. 一文读懂语音语义识别技术的现状与未来

    [IT168 评论]我一直认为,人工智能应用的大前提是可以很自然的进行人机语言交互.近年来,在深度学习的驱动下,语音技术取得了重大进展,语音云用户规模达到了亿级规模,每日请求千万次,并且交互技术由单一 ...

  8. (转)OpenNLP进行中文命名实体识别(下:载入模型识别实体)

    上一节介绍了使用OpenNLP训练命名实体识别模型的方法,并将模型写到磁盘上形成二进制bin文件,这一节就是将模型从磁盘上载入,然后进行命名实体识别.依然是先上代码: [java] view plai ...

  9. 神圣的NLP!一文理解词性标注、依存分析和命名实体识别任务

    词性标注(Part-of-Speech Tagging, POS).命名实体识别(Name Entity Recognition,NER)和依存句法分析(Dependency Parsing)是自然语 ...

最新文章

  1. QT信号与槽——观察者模式——回调函数
  2. .net core EFcore model生成数据
  3. 高性能网络编程1----accept建立连接
  4. 整理了7道Python函数的练习题,希望对你学习函数有帮助
  5. linux执行脚本查找ip,linux 查看ip、用户、时间对应执行的命令
  6. 火焰效果材质实现_「游戏开发」使用Unity实现魔法火焰效果
  7. IntelliJ IDEA 中文官方文档
  8. 如何通过三视图判断立方体个数_装机小白看过来:如何通过显卡参数来判断高端低端?...
  9. import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder; 报错的解决方法
  10. qtp java_QTP Java swing 一些控件的遍历
  11. wps带阴影的边框怎么设置_win7系统下wps阴影边框如何设置
  12. DDR4内存大小等信息计算
  13. 不能正常打开Eclipse闪退的问题
  14. 工业智能网关BL110应用之64:如何实现智能楼宇控制BACnet 接入金鸽MQTT云平台
  15. Yii 网页播放器扩展 yii-web-player
  16. QoS 测量 (目标,方法,协议)
  17. 基于Python接口自动化测试框架(初级篇)附源码
  18. 行为识别 - ACTION-Net: Multipath Excitation for Action Recognition
  19. 多网盘 下载 管理工具 FreeRapid,gpl 开源软件,国外网盘
  20. MSE 治理中心重磅升级-流量治理、数据库治理、同 AZ 优先

热门文章

  1. 计算机软件可以用虚拟串口吗,虚拟串口以及在Proteus中的使用
  2. vue双向绑定数据更新会频繁触发render更新
  3. 机器学习中的数据简介
  4. Shiro登录的使用以及原理(一)
  5. freeswitch语音识别一系列干货
  6. 谓词表示法求解农夫、狼、山羊、白菜问题(个人理解)
  7. 计算机网络与无线通信系统学习6:路由器基础
  8. Window Server 2008虚拟机安装
  9. Linux常用基本命令详解(二)-------磁盘分区和磁盘管理类命令
  10. 二叉树的先序遍历(源代码)