NLP 命名实体识别 NER
文章目录
-
-
1、命名实体识别简介
-
- 1.1 定义
- 1.2 NER标注方法
- 1.3 难点
- 1.4 发展趋势及主要方法
-
- 1)基于词典规则匹配的方法
-
2)基于特征的机器学习方式
-
3)基于深度学习的方法
-
2、主要方法
-
- 2.1 CRF
- 2.2 BiLSTM+CRF
-
对这几天看到的相关资料进行一个简单的记录。
1、命名实体识别简介
命名实体识别任务旨在从自然语言文本中识别具有特定意义的实体,如人名、地名、组织名。在自然语言处理(Natural Language Processing,NLP)中,命名实体识别通常是自然语言理解的第一步,它的结果被用于许多后续的NLP任务。如实体链接(Entity linking)、关系抽取(Relation Extraction)和句法分析(Syntactic parsing)等。因此,命名实体识别任务的效果好坏就至关重要了。
1.1 定义
命名实体识别(Named Entity Recognition, NER) 也称为实体识别、实体分块和实体提取,是信息提取的一个子任务,旨在将文本中的命名实体定位并分类为预先定义的类别,如人员、组织、位置、时间、数量、货币值、百分比等。
命名实体一般可认为是具有特定意义或指代性强的实体 ,通常包括人名、地名、组织结构名、日期时间、专有名词等。NER系统就是从非结构化的输入文本中抽取出上述实体,并且可以按照业务需求识别出更多类别的实体。因此只要是业务需求的特殊文本片段都可以称为实体。
学术上,所涉及的命名实体一般包括 3大类( 实体类、 时间类、 数字类) ,7小类命名实体(人名、地名、组织结构名、时间、日期、货币、百分比) 。
NER是NLP中一项基础性关键任务,从自然语言处理的流程来看,NER可以看做词法分析中未登录词识别的一种,是未登录词中数量最多、识别难度最大、对分词效果影响最大问题。同时NER也是关系抽取、信息检索、知识图谱、机器翻译、问答系统等诸多NLP任务的基础。
信息检索 :命名实体可以用来提高和改进检索系统的效果。
机器翻译 :命名实体的翻译常会有一些特殊翻译规则,例如中国人民翻译成英文时要用拼音来表示,有名在前姓在后的规则。
问答系统 :准确的识别出问题的各个组成部分特别重要,问题的相关领域,相关概念。
1.2 NER标注方法
对于NER任务,常见的标签体系包括IO、BIO、BMEWO、BMEWO+。下面举例说明不同标签体系的区别。
| Tokens | IO | BIO | BMEWO | BMEWO+ |
|---|---|---|---|---|
| 昨 | O | O | O | O |
| 天 | O | O | O | O |
| , | O | O | O | O_PERSON |
| 李 | I_PERSON | B_PERSON | B_PERSON | B_PERSON |
| 晓 | I_PERSON | I_PERSON | M_PERSON | M_PERSON |
| 明 | I_PERSON | I_PERSON | E_PERSON | E_PERSON |
| 前 | O | O | O | PERSON_O |
| 往 | O | O | O | O_LOCATION |
| 上 | I_LOCATION | B_LOCATION | B_LOCATION | B_LOCATION |
| 海 | I_LOCATION | I_LOCATION | E_LOCATION | E_LOCATION |
| 。 | O | O | O | LOCATION_O |
如BMEWO标签,其中BME分别代表实体的首部、中部、尾部。W代表单独是一个实体,O代表非实体。
BIO标签体系,其中B表示实体的首部,I代表实体的内部(Inside),O代表非实体(Outside)
大部分情况下,标签体系越复杂准确度也越高,但相应的训练时间也会增加。因此需要根据实际情况选择合适的标签体系。
1.3 难点
汉语命名实体识别的难点主要在于:
- 汉语文本没有类似英文文本中空格之类的显示标示词的边界标示符,命名实体识别的第一步就是确定词的边界,即分词
- 汉语分词和命名实体识别互相影响
- 除了英语中定义的实体,外国人名译名和地名译名是存在于汉语中的两类特殊实体类型
- 现代汉语文本,尤其是网络汉语文本,常出现中英文交替使用,这时汉语命名实体识别的任务还包括识别其中的英文命名实体
- 随着时间的推移,出现大量未登录词
- 不同场景不同领域下差异较大,比如新闻领域训练处来的模型,应用到社交领域,效果会很差。
- 命名实体歧义严重,消歧困难,如下面句子
余则成潜伏在敌后VS余则成潜伏在线
我和你一起唱《我和你》吧
1.4 发展趋势及主要方法
NER一直是NLP领域中的研究热点,从早期基于词典和规则的方法,到传统机器学习的方法,到近年来基于深度学习的方法,NER研究进展的大概趋势大致如下图所示:

1)基于词典规则匹配的方法
多采用语言学专家手工构造规则模板 ,选用特征包括统计信息、标点符号、关键字、指示词和方向词、位置词、中心词等方法,以模式和字符串相匹配为主要手段,这类系统大多依赖于知识库和词典的建立 。
该方法是NER最早使用的方法,依赖于手工规则的系统,都使用命名实体库,而且对每一个规则都赋予权值 。当遇到规则冲突的时候,选择权值最高的规则来判别命名实体的类型。
一般而言,当提取的规则能比较精确的反映语言现象时,基于规则的方法性能要优于基于统计的方法。但是这些规则往往依赖于具体语言、领域和文本风格,编制过程耗时而且难以涵盖所有的语言现象,特别容易产生错误,系统可移植性不好,对于不同的系统需要语言学专家重新书写规则。
另一个缺点是代价太大,存在系统建设周期长、移植性差 而且需要建立不同领域知识库作为辅助以提高系统识别能力等问题。
2)基于特征的机器学习方式
在基于机器学习的方法中,NER被当作序列标注(sequence labeling)问题。利用大规模语料来学习出标注模型,从而对句子的各个位置进行标注。NER 任务中的常用模型包括生成式模型HMM(Hidden Markov Models)、判别式模型CRF ,并且依赖于专家知识(Task-specific knowledge)和人工提取特征(Hand-crafted features)。
条件随机场(ConditionalRandom Field,CRF)是NER目前的主流模型。它的目标函数不仅考虑输入的状态特征函数,而且还包含了标签转移特征函数。在训练时可以使用SGD学习模型参数。在已知模型时,给输入序列求预测输出序列即求使目标函数最大化的最优序列,是一个动态规划问题,可以使用 Viterbi(维特比) 算法解码来得到最优标签序列。CRF的优点在于其为一个位置进行标注的过程中可以利用丰富的内部及上下文特征信息。
3)基于深度学习的方法
随着深度学习的兴起,RNN,LSTM, BiLSTM等模型已经被证明在NLP任务上有着良好的表现。相比传统模型,RNN能够考虑长远的上下文信息,并且能够解决CRF特征选择的问题。可将主要的精力花在网络设计和参数调优上,但RNN一般需要较大的训练数据,在小规模数据集上,CRF表现较好 。
以RNN为例,这类方法对于序列标注任务(如CWS, POS, NER)的处理方式是类似的:
- 将
token从离散one-hot表示映射到低维空间中称为稠密的embedding, - 随后将句子的embedding序列输入到
RNN中,用神经网络自动提取特征 Softmax来预测每个token的标签
这种方法使得模型的训练称为一个端到端的整体过程,而非传统的pipiline,不依赖特征工程,是一种数据集驱动的方法。但网络变种多、对参数设置依赖大,模型的可解释性差。此外,这种方法的一个缺点是对每个token打标签的过程中是独立的分类,不能直接利用上下文已经预测的标签,进而导致预测出的标签序列可能是非法的。
进一步,LSTM,BiLSTM开始应用在NER任务上,LongShort Term Memory网络一般叫做LSTM,是RNN的一种特殊类型,可以学习长距离依赖信息。在学术界,目前比较流行的做法是将BILSTM和CRF进行结合,借鉴两个模型各自的优点,来达到更好的效果。
2、主要方法
2.1 CRF
CRF,英文全称为conditional random field, 中文名为条件随机场,是给定一组输入随机变量条件下另一组输出随机变量的条件概率分布模型,其特点是假设输出随机变量构成马尔可夫(Markov)随机场。
较为简单的条件随机场是定义在线性链上的条件随机场,称为线性链条件随机场 (linear chain conditional random field)。 线性链条件随机场可以用于序列标注等问题,而本文需要解决的命名实体识别(NER)任务正好可通过序列标注方法解决。这时,在条件概率模型P(Y|X)中,Y是输出变量,表示标记序列(或状态序列),X是输入变量,表示需要标注的观测序列。

判别模型 vs 生成模型
- 判别模型 :由数据直接学习决策函数 Y=f(X) 或者条件概率分布 P(Y|X),作为预测值。例如 k近邻,感知级,决策树,支持向量机等。
- 生成模型 :先由数据学习联合概率密度分布 P(X,Y),然后求出条件概率分布 P(Y|X),作为预测值。例如朴素贝叶斯,隐马尔科夫模型等。
CRF++是著名的条件随机场的开源工具,也是目前综合性能最佳的CRF工具,采用C++语言编写而成。其最重要的功能我认为是采用了特征模板。这样就可以自动生成一系列的特征函数,而不用我们自己生成特征函数,我们要做的就是寻找特征,比如词性等。关于CRF++的特性,可以参考网址:CRF++。
具体使用可参考使用CRF++实现命名实体识别(NER)
2.2 BiLSTM+CRF
应用于NER中的biLSTM-CRF模型主要由Embedding层(主要有词向量,字向量以及一些额外特征),双向LSTM层,以及最后的CRF层构成。实验结果表明BiLSTM-CRF已经达到或者超过了基于丰富特征的CRF模型 ,成为目前基于深度学习的NER方法中的最主流模型。在特征方面,该模型继承了深度学习方法的优势,无需特征工程,使用词向量以及字符向量就可以达到很好的效果,如果有高质量的词典特征,能够进一步获得提高。
可以总结为“三板斧”:单词的字符集表示、(双向)LSTM编码和CRF解码。

