最近刚刚做了一个相关任务的学习、比较、调研及代码实践,特此分享。
本篇文章主要包括以下几个部分:任务目标、国内外相关工作、核心思想和算法描述、实验结果及分析、总结等。
1 任务目标
命名实体识别(Named Entities Recognition, NER)是自然语言处理(Natural Language Processing, NLP)的一个基础任务,其目的是识别语料中人名、地名、组织机构名、专有名词等命名实体,在所有涉及NLP的人工智能研究——信息抽取、信息检索、机器翻译、问答系统等多种自然语言处理技术中——都是一个必须首先攻克的任务。由于这些命名实体数量不断增加,通常不可能在词典中穷尽列出,且其构成方法具有各自的一些规律性,因而,通常把对这些词的识别从词汇形态处理(如汉语切分)任务中独立处理,称为命名实体识别。
命名实体识别的研究主体一般包括3大类(实体类、时间类和数字类)和7小类(人名、地名、机构名、时间、日期、货币和百分比)命名实体。实际研究中,命名实体的确切含义需要根据具体应用来确定,比如,可能需要把产品名称、旅游景点名称等作为命名实体。在面向生物命名实体信息提取时,还包括蛋白质、基因、核糖核酸、脱氧核糖核酸、细胞等特殊生物实体。NER系统就是从非结构化的输入文本中抽取出上述实体,并且可以按照业务需求识别出跟多类别的实体,比如产品名称、型号、价格等等。因此实体这个概念可以很广,只要是业务需求的特殊文本片段都可以称为实体。
由于数量、时间、日期、货币等实体识别通常可以采用模式匹配的方式获得较好的识别效果,相比之下人名、地名、机构名较复杂,因此近年来的研究主要以这几种实体为主。同时生物领域的实体识别也比较活跃。这些实体中以机构名和生物实体识别难度最大,普遍存在嵌套和缩写的识别问题。从研究的发展趋势上看,由原来的单独针对人名、地名等进行识别发展到开始采用统一的方法同时进行各类中文命名实体的识别,而且识别效果也得到了提高。
本项目将通过pytorch作为主要工具实现解决中文命名实体识别问题的不同模型(包括HMM,CRF,Bi-LSTM,Bi-LSTM+CRF),学习对比经典模型的思想和方法,并对其结果性能进行比较分析。
2 国内外相关工作
目前命名实体识别的主要方法可以归纳为3类: 基于规则的方法、基于统计的方法和基于深度学习的方法。基于规则和字典的方法存在人力成本高、移植性差等缺点。因此,人们开始研究统计机器学习处理NER问题。在机器学习命名实体识别中,NER被看成是一个序列标注问题。
在统计机器学习中,常常采用HMM和CRF等模型处理NER标注问题。随着深度学习的引入,当前主流的深度学习解决方案中倾向于embedding层+bilstm层,直接让机器学习到特征,然后将学习到的特征直接输入CRF,这就避免了人工制定特征函数的繁琐。
基于规则的方法已经积累了大量的研究成果。例如,周昆[1-2]等构建了命名实体识别的规则库,采用规则匹配的方法来识别命名实体。此类方法中规则编写需要领域专家来参与,这样对语言知识的要求很高,可移植性不好。
基于统计的方法主要使用统计学的方法来完成命名实体识别任务[3-5]。在近几年的研究中,通常将命名实体识别任务当作一个序列标注任务[6]来处理。适用于做序列标注任务的主要算法有: 隐马尔可夫模型( hidden markov models,HMM) 、最大熵马尔科夫模型( maximum entropy markov models,MEMM) 、条件随机场模型( conditional random field,CRF) 等。
基于深度学习的方法,由于不需要人为设定特征,能够从原始数据中自主的学习,因此可以减少人为对数据的干扰,找到更深层次和更加抽象的特征,近年来成为研究热点。文献[7]利用神经网络模型在大量没有标记的数据集上学习文本的内部表示,不需要人为的设定特征。文献[8]采用了长短时记忆( long short-term memory,LSTM) [9]神经网络模型,很好地提高了分词的性能,但是该方法无法获取句子后面的语义信息。文献[10]提出在双向LSTM 的基础上,同时使用CRF 来作为输出处