对这几天看到的相关资料进行一个简单的记录。
命名实体识别任务旨在从自然语言文本中识别具有特定意义的实体,如人名、地名、组织名。在自然语言处理(Natural Language Processing,NLP
)中,命名实体识别通常是自然语言理解的第一步,它的结果被用于许多后续的NLP任务。如实体链接(Entity linking
)、关系抽取(Relation Extraction
)和句法分析(Syntactic parsing
)等。因此,命名实体识别任务的效果好坏就至关重要了。
命名实体识别(Named Entity Recognition, NER) 也称为实体识别、实体分块和实体提取,是信息提取的一个子任务,旨在将文本中的命名实体定位并分类为预先定义的类别,如人员、组织、位置、时间、数量、货币值、百分比等。
命名实体一般可认为是具有特定意义或指代性强的实体,通常包括人名、地名、组织结构名、日期时间、专有名词等。NER系统就是从非结构化的输入文本中抽取出上述实体,并且可以按照业务需求识别出更多类别的实体。因此只要是业务需求的特殊文本片段都可以称为实体。
学术上,所涉及的命名实体一般包括 3大类( 实体类、 时间类、 数字类),7小类命名实体(人名、地名、组织结构名、时间、日期、货币、百分比)。
NER是NLP中一项基础性关键任务,从自然语言处理的流程来看,NER可以看做词法分析中未登录词识别的一种,是未登录词中数量最多、识别难度最大、对分词效果影响最大问题。同时NER也是关系抽取、信息检索、知识图谱、机器翻译、问答系统等诸多NLP任务的基础。
信息检索:命名实体可以用来提高和改进检索系统的效果。
机器翻译:命名实体的翻译常会有一些特殊翻译规则,例如中国人民翻译成英文时要用拼音来表示,有名在前姓在后的规则。
问答系统:准确的识别出问题的各个组成部分特别重要,问题的相关领域,相关概念。
对于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)
大部分情况下,标签体系越复杂准确度也越高,但相应的训练时间也会增加。因此需要根据实际情况选择合适的标签体系。
汉语命名实体识别的难点主要在于:
NER一直是NLP领域中的研究热点,从早期基于词典和规则的方法,到传统机器学习的方法,到近年来基于深度学习的方法,NER研究进展的大概趋势大致如下图所示:
多采用语言学专家手工构造规则模板,选用特征包括统计信息、标点符号、关键字、指示词和方向词、位置词、中心词等方法,以模式和字符串相匹配为主要手段,这类系统大多依赖于知识库和词典的建立。
该方法是NER最早使用的方法,依赖于手工规则的系统,都使用命名实体库,而且对每一个规则都赋予权值。当遇到规则冲突的时候,选择权值最高的规则来判别命名实体的类型。
一般而言,当提取的规则能比较精确的反映语言现象时,基于规则的方法性能要优于基于统计的方法。但是这些规则往往依赖于具体语言、领域和文本风格,编制过程耗时而且难以涵盖所有的语言现象,特别容易产生错误,系统可移植性不好,对于不同的系统需要语言学专家重新书写规则。
另一个缺点是代价太大,存在系统建设周期长、移植性差而且需要建立不同领域知识库作为辅助以提高系统识别能力等问题。
在基于机器学习的方法中,NER被当作序列标注(sequence labeling
)问题。利用大规模语料来学习出标注模型,从而对句子的各个位置进行标注。NER 任务中的常用模型包括生成式模型HMM(Hidden Markov Models)、判别式模型CRF,并且依赖于专家知识(Task-specific knowledge
)和人工提取特征(Hand-crafted features
)。
条件随机场(ConditionalRandom Field,CRF)
是NER目前的主流模型。它的目标函数不仅考虑输入的状态特征函数,而且还包含了标签转移特征函数。在训练时可以使用SGD学习模型参数。在已知模型时,给输入序列求预测输出序列即求使目标函数最大化的最优序列,是一个动态规划问题,可以使用 Viterbi(维特比) 算法解码来得到最优标签序列。CRF的优点在于其为一个位置进行标注的过程中可以利用丰富的内部及上下文特征信息。
随着深度学习的兴起,RNN,LSTM, BiLSTM
等模型已经被证明在NLP任务上有着良好的表现。相比传统模型,RNN能够考虑长远的上下文信息,并且能够解决CRF特征选择的问题。可将主要的精力花在网络设计和参数调优上,但RNN一般需要较大的训练数据,在小规模数据集上,CRF表现较好。
以RNN
为例,这类方法对于序列标注任务(如CWS, POS, NER)的处理方式是类似的:
token
从离散one-hot
表示映射到低维空间中称为稠密的embedding
,RNN
中,用神经网络自动提取特征Softmax
来预测每个token
的标签这种方法使得模型的训练称为一个端到端的整体过程,而非传统的pipiline
,不依赖特征工程,是一种数据集驱动的方法。但网络变种多、对参数设置依赖大,模型的可解释性差。此外,这种方法的一个缺点是对每个token
打标签的过程中是独立的分类,不能直接利用上下文已经预测的标签,进而导致预测出的标签序列可能是非法的。
进一步,LSTM
,BiLSTM
开始应用在NER任务上,LongShort Term Memory
网络一般叫做LSTM
,是RNN的一种特殊类型,可以学习长距离依赖信息。在学术界,目前比较流行的做法是将BILSTM
和CRF
进行结合,借鉴两个模型各自的优点,来达到更好的效果。
CRF
,英文全称为conditional random field,
中文名为条件随机场,是给定一组输入随机变量条件下另一组输出随机变量的条件概率分布模型,其特点是假设输出随机变量构成马尔可夫(Markov)随机场。
较为简单的条件随机场是定义在线性链上的条件随机场,称为线性链条件随机场(linear chain conditional random field
)。 线性链条件随机场可以用于序列标注等问题,而本文需要解决的命名实体识别(NER)任务正好可通过序列标注方法解决。这时,在条件概率模型P(Y|X)中,Y是输出变量,表示标记序列(或状态序列),X是输入变量,表示需要标注的观测序列。
判别模型 vs 生成模型
CRF++是著名的条件随机场的开源工具,也是目前综合性能最佳的CRF工具,采用C++语言编写而成。其最重要的功能我认为是采用了特征模板。这样就可以自动生成一系列的特征函数,而不用我们自己生成特征函数,我们要做的就是寻找特征,比如词性等。关于CRF++的特性,可以参考网址:CRF++。
具体使用可参考使用CRF++实现命名实体识别(NER)
应用于NER中的biLSTM-CRF
模型主要由Embedding层
(主要有词向量,字向量以及一些额外特征),双向LSTM层
,以及最后的CRF层
构成。实验结果表明BiLSTM-CRF已经达到或者超过了基于丰富特征的CRF模型,成为目前基于深度学习的NER方法中的最主流模型。在特征方面,该模型继承了深度学习方法的优势,无需特征工程,使用词向量以及字符向量就可以达到很好的效果,如果有高质量的词典特征,能够进一步获得提高。
可以总结为“三板斧”:单词的字符集表示、(双向)LSTM编码和CRF解码。