命名实体识别 – Named-entity recognition | NER
- 2019 年 12 月 18 日
- 筆記
文章目录

什么是命名实体识别?
命名实体识别(Named Entity Recognition,简称NER),又称作“专名识别”,是指识别文本中具有特定意义的实体,主要包括人名、地名、机构名、专有名词等。简单的讲,就是识别自然文本中的实体指称的边界和类别。
命名实体识别的发展历史
NER一直是NLP领域中的研究热点,从早期基于词典和规则的方法,到传统机器学习的方法,到近年来基于深度学习的方法,NER研究进展的大概趋势大致如下图所示。

阶段 1:早期的方法,如:基于规则的方法、基于字典的方法
阶段 2:传统机器学习,如:HMM、MEMM、CRF
阶段 3:深度学习的方法,如:RNN – CRF、CNN – CRF
阶段 4:近期新出现的一些方法,如:注意力模型、迁移学习、半监督学习的方法
4类常见的实现方式

早期的命名实体识别方法基本都是基于规则的。之后由于基于大规模的语料库的统计方法在自然语言处理各个方面取得不错的效果之后,一大批机器学习的方法也出现在命名实体类识别任务。宗成庆老师在统计自然语言处理一书粗略的将这些基于机器学习的命名实体识别方法划分为以下几类:
有监督的学习方法:这一类方法需要利用大规模的已标注语料对模型进行参数训练。目前常用的模型或方法包括隐马尔可夫模型、语言模型、最大熵模型、支持向量机、决策树和条件随机场等。值得一提的是,基于条件随机场的方法是命名实体识别中最成功的方法。
半监督的学习方法:这一类方法利用标注的小数据集(种子数据)自举学习。
无监督的学习方法:这一类方法利用词汇资源(如WordNet)等进行上下文聚类。
混合方法:几种模型相结合或利用统计方法和人工总结的知识库。
值得一提的是,由于深度学习在自然语言的广泛应用,基于深度学习的命名实体识别方法也展现出不错的效果,此类方法基本还是把命名实体识别当做序列标注任务来做,比较经典的方法是LSTM+CRF、BiLSTM+CRF。
NER 的相关数据集
数据集 |
简要说明 |
访问地址 |
---|---|---|
电子病例测评 |
CCKS2017开放的中文的电子病例测评相关的数据 |
测评1 | 测评2 |
音乐领域 |
CCKS2018开放的音乐领域的实体识别任务 |
CCKS |
位置、组织、人… |
这是来自GMB语料库的摘录,用于训练分类器以预测命名实体,例如姓名,位置等。 |
kaggle |
口语 |
NLPCC2018开放的任务型对话系统中的口语理解评测 |
NLPCC |
人名、地名、机构、专有名词 |
一家公司提供的数据集,包含人名、地名、机构名、专有名词 |
boson |
相关工具推荐
工具 |
简介 |
访问地址 |
---|---|---|
Stanford NER |
斯坦福大学开发的基于条件随机场的命名实体识别系统,该系统参数是基于CoNLL、MUC-6、MUC-7和ACE命名实体语料训练出来的。 |
官网 | GitHub 地址 |
MALLET |
麻省大学开发的一个统计自然语言处理的开源包,其序列标注工具的应用中能够实现命名实体识别。 |
官网 |
Hanlp |
HanLP是一系列模型与算法组成的NLP工具包,由大快搜索主导并完全开源,目标是普及自然语言处理在生产环境中的应用。支持命名实体识别。 |
官网 | GitHub 地址 |
NLTK |
NLTK是一个高效的Python构建的平台,用来处理人类自然语言数据。 |
官网 | GitHub 地址 |
SpaCy |
工业级的自然语言处理工具,遗憾的是不支持中文。 |
官网 | GitHub 地址 |
Crfsuite |
可以载入自己的数据集去训练CRF实体识别模型。 |
文档 | GitHub 地址 |
本文转载自公众号 AI 小白入门,原文地址
扩展阅读
实践类文章(1)
【实战】NLP命名实体识别开源实战教程(2019-9)
基于 BERT 的中文命名实体识别 – NER(2019-7)