基于深度学习的中文命名实体识别最新研究进展综述
2022-08-02张汝佳
张汝佳,代 璐,王 邦,郭 鹏
(华中科技大学 电子信息与通信学院,湖北 武汉 430074)
0 引言
命名实体识别(Named Entity Recognition, NER)是自然语言处理(Nature Language Processing, NLP)的一项基础任务,也是构建知识图谱[1]的重要组成部分。NER任务在信息检索[2-3]、智能问答[4]、机器翻译[5]等领域中发挥着巨大作用,例如,在贝壳找房(1)https://wh.ke.com/的智能搜索应用中,用户的搜索词包含大量与地址相关的字段,命名实体识别系统可以识别出地址实体,从而帮助智能客服准确定位,迅速做出回应。
中文命名实体识别(Chinese Named Entity Recognition,CNER)任务的主要目的在于确定中文文本中命名实体的边界,并将命名实体分类到预先定义的类别中。如图1所示,CNER系统应识别出 “李小峰”和“华中科技大学”两个实体,并分别分类到人名(Person,PER)和地名(Location,LOC)中。在学术研究中,命名实体一般分为3大类(实体类、时间类、数字类)和7小类(人名、地名、组织机构名、时间、日期、货币、百分比);在实际应用中,NER模型通常只需要识别出人名、地名、组织机构名、时间等,对于货币、百分比等实体可以使用正则匹配方法得到;在很多特定领域中,NER任务往往要求识别领域专有实体,如医药名[6-7]、农作物名等。
图1 中文命名实体识别示例
最近几年深度学习已被广泛应用于包括命名实体识别在内的大量自然语言处理任务(Natural Language Processing, NLP),并取得了大幅性能提升。其中一些深度学习模型在英文命名实体识别任务上也取得了较好的性能提升,但将这些模型直接应用到中文命名实体识别任务上并不能得到很好的实验性能,这主要是由于中文文本具有一些独特的语言特点。相比于英文文本,中文文本没有空格作为显式边界标识符,难以确定分词边界;而且现代汉语文本中常出现中英文交替使用的情况,命名实体识别任务不仅需要识别出中文实体,还需要识别出中英文混合实体并分类;加之中文实体本身存在有歧义、构词灵活等问题,加大了实体识别的难度。如图2中文本“王刚刚刚离开”存在歧义,既可以理解为“王刚刚/刚离开”,也可以理解为“王刚/刚刚离开”,此时难以准确判定人名实体边界。不仅如此,随着网络汉语文本日新月异,中文命名实体识别任务还面临着识别未登录词的问题,例如,网红的谐音外号、游戏的虚拟人物名称等。
图2 中文命名实体边界难以判定示例
此外,在中文文本或英文文本中,都存在命名实体类别模糊的问题。例如,在判定地名和机构名时容易发生混淆,在图1的示例中,如果文本“李小峰离开了华中科技大学”表达的意思是学生放假离校,那么CNER模型应将实体“华中科技大学”分类为地名(LOC);如果这句话是指老师辞职离校,那么实体“华中科技大学”应被标记为机构名(Organization,ORG)。可见,命名实体识别任务的准确率与语言特点、特征提取能力息息相关。
按照任务分类,中文命名实体识别任务可以分为扁平命名实体识别(Flat Named Entity Recognition)和嵌套命名实体识别(Nested Named Entity Recognition)两类。本文重点阐述深度学习在中文扁平命名实体识别任务(Chinese Flat Named Entity Recognition,CFNER)上的研究现状,介绍CNER任务的性能评估指标和常见的数据集,然后对中文嵌套命名实体识别任务(Chinese Nested Named Entity Recognition,CNNER)的研究现状进行归纳梳理,并讨论中文命名实体识别现在面临的挑战及其未来的发展方向。
1 数据集、训练资源和评估指标
1.1 数据集和训练资源
数据集在模型性能评估环节中处于不可或缺的地位,其数据质量和注释质量对于评判模型性能起着非常重要的作用。接下来先介绍中文命名实体识别任务中常用的数据集和评估指标。
表1列举了10个常见的中文命名实体识别数据集,并对其来源、实体类型数量等特点进行了对比。这些数据集来源广泛,有用于比赛的数据,例如,PKU语料、Bakeoff-3中文语料和Bakeoff-4中文语料分别来源于SIGHAN(2)http://sighan.cs.uchicago.edu/举办的第二届、第三届和第四届国际中文处理竞赛;也有公司提供的数据,例如Boson中文语料。此外,还有为特殊领域创建的数据集,例如用于电子商务领域的E-commerce-NER中文数据集、用于临床医学领域的CCKS-2017(3)CCKS-2017: China Conference on Knowledge Graph and Semantic Computing, 2017Task 2 benchmark中文数据集等。
表1 常见中文命名实体识别数据集列表
OntoNotes数据集[8]版权属于LDC(4)https://www.ldc.upenn.edu/(Linguistic Data Consortium),是大型的手工注释语料库,包含各种类型文本(新闻、博客、杂志、电话语音等),具有结构信息和浅层语义。虽然数据集中标注了18种实体类型,但在实际CNER任务中常用Person、Location、Organization和Geo-political四种实体类型。Bakeoff中文数据集是由SIGHAN(Special Interest Group for Chinese Language Processing of the Association for Computational Linguistics)举办的国际中文处理竞赛(The Third International Chinese Language Processing Bakeoff)开源的数据集。其中,Bakeoff-4中文数据集是由第四届国际中文处理竞赛开源的MSRA(Microsoft Research Asia)数据集,目前未开源。PKU、Bakeoff-3[9]、Bakeoff-4[10]三个数据集都标注了3种实体类型: Person、Location和Organization。
Resume中文数据集在2018年由Zhang和Yang[11]构建,包含了1 027条高管简历,标注了8种实体类型,分别是Country、Educational Institution、Person、Location、Organization、Profession、Ethnicity/Background和Job Title。作为同属社交媒体领域的数据集,Weibo中文数据集[12-13]不仅标注了4种实体: Person、Location、Organization和Geo-political,同时还标注了Named Entity和Nominal Mention。Boson中文数据集则包含了6种实体类型: Person_name、Time、Location、Org_name、Company_name、Product_name。
在特定领域中,E-commerce-NER中文数据集[14]是从电子商务领域收集的数据集,主要标注了两种类型实体: PROD(“products”)和BRAN(“brands”)。CCKS-2017 Task 2 benchmark中文数据集属于临床医学领域,与电子病历测评相关,包含5种临床命名实体: diseases、symptoms、exams、treatments、body parts。
不难看出,在通用领域中,实体标签往往包含人名、地名、机构名三种基础类型,而在专有领域中,实体类型通常具有很强的专业性。
除了数据资源外,一个性能良好的中文命名实体识别模型在训练过程中还离不开优化器的配合,由于模型本身存在非线性、高维度、多参数等特点,如何在参数空间中快速寻找到局部最优点就显得至关重要。当前主要通过梯度下降的方式去优化模型参数,中文命名实体识别任务中常见的的优化器(Optimizer)有: 随机梯度下降法(SGD)、Adam算法等。
1.2 评估指标
中文命名实体识别任务的评估方法遵循精确匹配模式[15-16](Exact-match Evaluation),即实体的预测边界和预测类型与人工标注的结果完全相同时,才能判定该实体被正确识别。评估过程中用到了True Positives(TP)、False Positives(FP)及False Negatives(FN)这三个参数来计算CNER任务的三个重要指标Precision、Recall和F1-score。这些指标的含义分别是: Precision,精确率,表示模型识别的实体中被正确识别的实体的百分比;Recall,召回率,表示所有标注实体中被模型正确识别的实体的概率;F1-score值,精确率和召回率的调和平均值。计算如式(1)~式(3)所示。
其中,TP参数表示模型正确识别的实体,FP参数表示被模型识别出来但是识别错误的实体,FN参数表示未被模型识别出来但是真实存在的实体。F1-score值是个综合性的指标,用于评估任务优劣,只有在精确率和召回率两个值都很高的情况下,F1-score值才会很高。
2 基于传统机器学习的扁平中文命名实体识别
命名实体识别任务从20世纪末开始发展至今,已有二十余年的研究历史,其研究方法也由早期依赖特征工程和领域知识[17-18]转移到传统机器学习上。基于规则的方法[19-22]是CNER系统早期广泛使用的方法之一,这类方法通常需要手工构建规则。虽然这些规则可以灵活地定义与扩展,但对领域知识的依赖性很强,创建和修改过程往往花费领域专家大量时间,加之命名实体类型多种多样、不断更新,难以构建一套统一的规则,所以在机器学习方法兴起之后,基于规则的方法一般被整合到基于机器学习的CNER模型的后期处理中[23-24]。
传统的基于机器学习的方法主要包括: 隐马尔可夫模型[25](Hidden Markov Model, HMM)、最大熵[26](Maximum Entropy, ME)模型、决策树[27](Decision Tree)模型、支持向量机[28](Support Vector Machine, SVM)模型、条件随机场[29](Conditional Random Fields, CRF)模型等。Fu等人在2005年[30]利用分词器和Lexicalized HMM模型探索丰富的上下文语境信息和实体构成模式,进而识别中文文本中不同类型的命名实体。Chen等人在2006年[31]同时利用CRF和ME两个条件概率模型识别中文文本中的人名、地名和机构名,Yu等人则在2008年[32]先利用基础模型CRFs对数据进行分割标记,再利用领域知识和MLNs(Markov Logic Networks)对实体信息进行验证和错误纠正,改进了中文命名实体识别任务。Zhang等人在2008年[33]利用CRF结合多种特征信息来提升CNER系统的鲁棒性和准确率。我们注意到,基于CRF的NER模型广泛应用于多种领域,例如,生物医学领域[34-35]、商务领域[36]、旅游领域[37]等。
3 基于深度学习的扁平中文命名实体识别
近年来,深度学习在各领域上的成功应用引起了巨大的关注。得益于深度学习本身端到端的特性,无需复杂的特征工程,深度学习的网络框架通用性好,精确度高,在神经网络拓扑结构和训练范式方面效果显著,目前深度学习网络已成为解决命名实体识别任务的最主要模型。
当前解决CNER任务的思路分为序列标注(token-based)和基于分类(span-based)两类。其中,序列标注方法最为常见。
3.1 序列标注(token-based)的方案
如图3所示,基于深度学习的中文命名实体识别任务的流程主要分为三部分: 输入的分布式表示层、文本编码层和标签序列解码层。其中第一层以字符信息为主,可附加偏旁部首特征、字形特征、词典信息等;文本编码层常用RNN、CNN、Transformer Encoder等网络获取上下文依赖关系,提取关键特征信息;标签序列解码层预测标签序列并进行标注,其中CRF最为常见,也有BiGRU+CRF、Softmax等。
图3 基于深度学习的中文命名实体识别任务流程图
根据主要网络架构进行分类,可将token-based的中文命名实体识别任务的模型分为4大类: 基于RNN的模型、基于CNN的模型,基于图结构的模型、基于Transformer的模型等。
3.1.1 基于RNN的模型
基于RNN的模型擅长捕获序列信息,适用的任务场景广泛。例如,在文本生成中,对一个文本序列,预测下一个词的概率需要基于前面出现过的单词,然后根据输出概率分布进行采样,用于生成文本。但是RNN模型只拥有短暂的记忆能力,对长期依赖关系并不敏感,同时存在梯度爆炸和梯度消失的问题。为了解决上述问题,有学者引入门控机制和细胞状态,提出了LSTM网络[38]及其变种网络GRU[39]。目前,BiLSTM+CRF已成为基于深度学习的命名实体识别方法中的主流模型,其基本结构如图4所示。
图4 字符级BiLSTM+CRF的主要网络结构
3.1.1.1 基于LSTM的方法
Dong等在2016年[40]首次将字符级BiLSTM+CRF网络结构应用在中文命名实体识别任务上,并率先引入偏旁部首特征。通过拆解中文字符并对字符进行编码的方式增强字符本身的特征,然后利用BiLSTM+CRF模型完成序列标注任务。同样是在Embedding层挖掘中文字符信息,Jia和Ma在2019年[41]将每个中文字符都视为图像,利用CNN提取字符图像的字形特征,并利用attention机制将其与字符嵌入进行动态合并,输入到LSTM模型中进行特征提取,提升了中文命名实体识别任务的性能。
基于字符的中文命名实体识别模型虽然取得了较好性能,但是没有利用相邻字符之间的语义联系,忽略了显性的词边界信息和词序信息。例如,“键盘鼠标”和“仓鼠”中都有字符“鼠”,但其携带的语义信息完全不一样,无法直接利用相同的字符嵌入表示。由于中文没有像英文那样以空格作为明显的分词边界,所以没有完全基于词的中文命名实体识别模型,一般会通过引入外部资源加入词边界信息,将其作为辅助提升模型性能的工具之一。
一种常见的解决思路是联合中文命名实体任务与中文分词任务(Chinese Word Segmentation,CWS),进行多任务联合学习,利用CWS任务向CNER任务提供词边界信息,此时,这两个任务都可转化为字符级序列标注问题,CNER任务可拆解为提取实体和实体分类两个子任务,并在第一个子任务上与CWS任务产生交集。Cao等在2018年[42]提出对抗迁移学习框架,巧妙结合了三个LSTM结构,分别用于CNER任务私有空间、CWS任务私有空间以及用于寻找两个任务交集的共享空间,通过对抗学习的方式,在CNER过程中融入分词信息,在分词过程中融合NER,同时排除了噪声的干扰,提升了模型性能。Wu等在2019年[43]提出CNN-LSTM-CRF架构,并利用统一框架联合训练CNER与CWS模型,通过共享字符嵌入与CNN网络结构,巧妙引入分词信息,提升了CNER任务预测实体边界的能力。但是这种方法并没有考虑到分词结果的粒度与CNER提取的实体粒度不一致,会导致噪音的引入。
另一种常见的思路是将中文词典信息引入基于字符的序列标注模型中,通过不断优化词典信息的融合方式,提升模型的性能、效率,同时不断完善词典内容,提升模型的稳健性。Zhang和Yang在2018年[11]首次引入词典信息处理中文命名实体识别任务,并设计出了Lattice LSTM结构,通过使用格子结构将潜在的单词信息整合到基于字符的LSTM+CRF中。这样做可以避免分词错误带来的干扰,但同时也存在着一些问题: ①每个字符对应的格子数量不一致,导致模型训练时无法batch并行化,即batch size只能取1,这大大增加了计算时间,降低了计算效率; ②每个字符只能叠加以其为结尾的单词信息,减少了可用的词典信息,造成信息损失; ③可迁移性不好,Lattice LSTM结构只适用于LSTM模型,不具备迁移到其他模型(例如CNN,Transformer等)上的特性; ④识别新词的效果差,这是依赖词典信息的模型的“通病”,因为词典内容并不能做到实时更新。为了解决上述这些问题,同时保持Lattice LSTM本身的优势,近两年不断有学者提出改进方案。Ding等在2019年[14]利用多维图融合Gazetteer信息,与字符特征结合并通过LSTM+CRF进行序列标注。Liu等在2019年[44]提出WC-LSTM模型,通过给每个字符添加有且仅有一个远程词信息,解决了Lattice LSTM模型训练时无法batch并行化的问题,大大提升了计算效率,同时该模型还可适用于各种应用场景。
在医学领域中,中文命名实体识别也是一个非常重要的课题。Wang等在2019年[45]首次将词典信息引入医学中文命名实体识别任务,在以BiLSTM+CRF为主要网络结构的基础上,探索了n-gram、PIET和PDET三种不同的利用词典信息的模式对任务性能的影响,同时对比了两种结合词典特征与字符特征的方法的优缺点。
3.1.1.2 基于GRU的方法
Xu等在2019年[46]提出综合利用偏旁部首特征、字符特征、词特征的方法,将不同粒度的语义信息有机结合,然后利用BiGRU+CRF模型实现序列标注。偏旁部首作为中文字符的重要组成部分,携带着字符本身的语义信息,例如,带有“钅”“木”“氵”“火”等偏旁的字符往往会出现在人名中,而含有“疒”“尸”等偏旁的字符则不会出现,这一类现象在某种程度上可以辅助CNER任务识别人名。Zhu等在2019年[47]提出了CAN网络,首次将CNN与attention机制结合起来捕获局部相邻字符的语义信息,同时将GRU与global attention组合,提取全局语义信息,这种让网络自行探索字词特征的网络结构,摆脱了对外部词典、词嵌入的依赖,对于日常生活中构建命名实体识别系统非常有实用性。
3.1.2 基于CNN的模型
CNN的卷积本质上是利用一个共享参数的过滤器,通过计算加权和来实现特征提取,起初在图像领域取得了巨大成功。Collobert和Weston在2008年[48]将CNN引入到句子建模中,为NLP任务定义了一个统一的体系 结构, 可在有限的先验知识下学习到与当前任务相关的特征。2011年,Collobert等[49]扩展了之前的工作,提出了基于CNN的通用框架,适用于多种NLP任务。随后,Kalchbrenner[50]、Kim[51]等学者陆续推进了CNN在NLP领域的普及。
在文本领域中,CNN网络一般使用一维卷积核捕获局部特征,并自动对这些特征进行组合、筛选,将信息量丰富的潜在语义特征用于下游任务,但也存在着对长序列输入提取特征能力弱的问题。Strubell等在2017年[52]提出了ID-CNN网络模型,利用空洞卷积,以损失少部分信息为代价的方式扩大卷积核的感受野,同时保留了CNN并行运算的优点,相比于LSTM结构的序列预测方式更为高效迅速。ID-CNN网络结构虽然对CNER任务有效,但是无法融合词典信息,Gui等在2019年[53]提出的LR-CNN模型,如图5所示,利用动态CNN结构解决了这一问题,同时模型中的Rethinking机制可以将高层语义信息反馈到底层,更新潜在词的权重分配比,这种“让模型重新思考”的方式可以防止信息单向流通,有效解决了Lattice LSTM模型无法有效处理词汇信息冲突的问题。
图5 LR-CNN模型图片引自文献[53]
3.1.3 基于图结构的模型
近年来,基于图结构神经网络的研究越来越多,人们逐渐发现基于RNN的模型由于链式结构难以长期保持整体语义信息,导致对单词理解出现歧义,进而影响序列标注性能,而图神经网络可以忽略节点的输入顺序。同时,在计算过程中不会因受邻居节点的影响而改变图本身的连接方式。常见的图神经网络有图卷积网络[54](Graph Convolution Networks,GCN)、 图注意力网络[55](Graph Attention Networks,GAT)以及门控图神经网络[56](Gated Graph Neural Networks,GGNN)等。
Sui等在2019年[57]提出CGN(Collaborative Graph Network)网络结构,率先将GAT网络和自动构建语义图引入CNER任务,通过三种构图方式获取多角度全方位词语信息,并在融合层进行合并,该网络结构不仅提升了CNER任务的准确率,而且大大降低了时间成本。Gui等在2019年[58]提出基于词典的LGN(Lexicon-based Graph Neural Network)网络结构,将CNER任务转化为图节点分类问题,利用词典知识丰富局部语义信息,并添加全局中继节点捕获全局语义信息和长距离依赖,通过不断地递归聚合实现节点与连接边的信息更新,实现了对模型性能的提升。
3.1.4 基于Transformer的模型
自2017年谷歌提出了Transformer模型[59],便有很多学者不断对Transformer进行拆分或改造,以提升在各种任务上的性能。Transformer是一个Seq2Seq模型,由一个Encoder和一个Decoder组成,相比于RNN和CNN模型,Transformer不仅具有高度并行化的模型结构,可以解决RNN并行计算能力弱的问题,而且其内部注意力结构能够解决CNN无法捕获长距离依赖的问题,但是在面对过长的输入文本时,Transformer模型的计算复杂度大大增加,速度严重下降,计算效率低下。
Li等在2020年[60]提出的FLAT(Flat-Lattice Transformer)网络模型,将Lattice结构从一个有向无环图展平为Flat-Lattice Transformer结构,并对Transformer模型中的传统位置编码方式进行改进,有效保留了位置信息,同时Transformer模型中的attention机制不仅可以建模远程依赖关系,而且允许每个字符与其自匹配词语进行交互,解决了Lattice LSTM模型无法充分捕获中文文本语义信息和不能并行利用GPU资源的问题。Mengge等在2019年[61]提出了PLTE(Porous Lattice-based Transformer Encoder)网络结构,捕获字符与对应匹配词之间的依赖性,并利用多孔机制提升了局部建模的能力,提高了CNER任务的性能,如图6所示。值得一提的是,这篇论文在解码层利用了BiGRU+CRF的网络结构,主要是因为GRU网络可以加强序列信息的建模,弥补了编码层不能很好地捕捉序列信息的不足。
3.1.5 其他模型
传统提升CNER模型性能的思路除了对主要网络结构的改进外,还有对信息表示层的改进,显然后一个思路可以有效避免引入复杂的序列建模体系结构。如图7所示, Peng等在2019年[62]对字符表示层进行改进,为每个字符保留所有匹配词并对其权重进行平滑处理,巧妙地结合了词典信息,并验证了此改进在不同序列标注模型结构上的可迁移性。相比之下,Zhu等在2019年[47]提出的CAN网络虽然本质上也是增强字符表示,但不具备良好的可迁移性和适应性。
图7 改进信息表示层图片引自文献[62]
3.2 基于分类(span-based)的方案
目前解决CNER任务的思路大都是将其视为序列标注任务,但是这类模型往往存在着耗费时间、实体边界预测不准确等缺点,于是有学者提出利用span-based的方案[63-65]来提升NER系统性能,如图8所示。该方案[66-67]的主要思想是通过始末位置概率分布图将潜在实体的所有可能区域或范围枚举出来,然后用深度神经网络对其进行分类。此方法虽然提升了实体边界预测的准确性,但由于缺少文本序列信息,容易导致后续对实体分类的准确率降低。
图8 利用span-based方案提取候选实体图片引自文献[63]
Mao等人在2020年[68]结合自学习提出了一套动态的基于分类的方法,用于远程监督学习CNER任务。此外,也可以通过指针网络(Pointer Network)对实体边界进行预测。指针网络最早应用于MRC任务中[69],该任务通常先根据问题从文本中抽取一个答案片段,然后利用两个n元Softmax分类预测头指针和尾指针。Li等在2019年[70]利用机器阅读理解(Machine Reading Comprehension,MRC)算法加单层指针网络的方法,将序列标注数据转化为三元组(问题,答案,文本)形式,其中答案和文本可直接获取,问题需要自行设计,例如需要识别文本“袁隆平被誉为世界杂交水稻之父”中的人名时,构造的对应三元组为(问题: “文中提到了哪些人名?”,答案: “袁隆平”,文本: “袁隆平被誉为世界杂交水稻之父”)。值得一提的是,该论文不仅利用指针网络预测实体开始位置、结束位置,还基于始末位置对构成的所有候选实体span预测实体概率。
3.3 模型总结
总的来说,基于传统机器学习的方法解决问题的思路是从一些观测(训练)样本出发,尝试发现不能通过原理分析获得的规律,实现对未来数据行为或趋势的准确预测(5)http://www.cesi.cn/images/editor/20180124/20180124135528742.pdf。深度学习方法解决问题的思路是建立深层结构模型,将特征表示和学习合二为一。虽然近年来传统机器学习算法已不如早期那么火热,但这并不代表其弱于深度学习算法,只是各有优缺点以及适用的领域不同。例如,深度学习是数据驱动的,在小数据集上,深度学习很容易过拟合,而SVM模型只需要很少的数据就可以取得不错的分类结果;在特征提取上,深度学习算法本质上可视为一个特征学习器,其对于高级、复杂特征的提取能力比传统机器学习算法强,但即便是大数据,在无须另构特征的任务上传统机器学习算法已足够应付;在解决问题时,传统机器学习通常会将问题分解为多个子任务并逐个解决,而深度学习模型是以端到端的方式解决问题。所以在学术研究和日常生活场景中,我们应根据具体任务选择适合的算法模型,而不是一概而论。
表2对近年来中文命名实体识别任务上基于深度学习的模型进行了对比,概述了主要网络结构,并直观地列出了模型是否搭配中文分词任务进行多任务学习或者引入词典信息,最后一列展示了各个模型在4个最常见中文数据集上的F1-score。不难发现,若在任务中引入分词任务,虽然能达到不错的实验效果,但会由于分词工具不精确、引入噪声等问题造成任务性能难有大的提升;若直接引入词典信息,虽然效果提升大,但其对于工业界NER系统十分不友好,因为构建词典的过程耗时耗力,而且往往伴随着体积大、有错误数据等缺点。此外还可以看出,BiLSTM+CRF是当前CNER任务中最常用的深度学习网络结构,而Transformer Encoder的性能往往在伴随预训练模型的情况下可与BiLSTM+CRF相媲美,甚至超过其最佳性能。
表2 在4个最常见中文数据集上,基于深度学习的CNER模型的结果对比
在现有诸多中文命名实体识别模型中,文献[62]巧妙融合词典信息,对比发现搭配BiLSTM+CRF网络时可在Resume中文数据集上达到95.74%的最佳性能, 搭配BERT时提升了0.37%;文献[60]利用词典“YJ”[11]和相对位置信息,搭配Transformer Encoder+CRF网络结构,在OntoNotes 4.0的中文数据集上达到76.45%的最佳性能,如果搭配BERT预训练,性能还可提升5.37%;文献[14]利用GGNN+BiLSTM+CRF模型在Bakeoff-4中文数据集上实现了94.40%的SOTA结果;文献[46]利用Conv-GRU+BiGRU+CRF网络结构结合不同粒度语义信息,在更新后的Weibo中文数据集上性能最好,达到了68.93%。
另外值得关注的是,利用MRC框架解决中文命名实体识别的方法[70]在常见中文数据集上实现了很好的性能。该方法另辟蹊径,没有按照以往序列标注任务的模型思路来解决问题,而是将阅读理解问题的解决办法应用到中文命名实体识别任务上,思路新颖独特;此外,该方法不仅在中文命名实体识别任务上达到了有竞争力的实验性能,而且在英文嵌套命名实体识别任务上达到了SOTA结果,解决了嵌套命名实体识别任务和扁平命名实体识别任务在传统模型上无法一起训练的问题。
总的来说,引入外部词典信息、优化引入外部知识的方式、人工定义规则等都可以快速有效提升CNER任务的性能,但其伴随的缺点问题也不容忽视,例如,耗时耗力、更新慢、领域迁移性差;而在模型层面,捕获更丰富的语义信息、加入多种类的底层特征、引入预训练好的语言模型、结合多个深度学习网络并取长补短等方法同样可以有效改进CNER任务。以上两种方式逐渐成为改进中文命名实体识别任务模型的主要思路。
4 中文嵌套命名实体识别任务
相对于传统的扁平命名实体识别(Flat Named Entity Recognition)任务,实际场景中还会出现有重叠结构的实体。目前大多数命名实体识别模型往往会忽略对嵌套命名实体(Nested Named Entity)的识别,无法在深层次文本理解中有效捕获更细粒度的语义信息。如图9所示,在文本“昨日中国外交部严厉声明”中,由于一般模型的序列标注特性和单标签分类特性,往往只能识别一个大实体“中国外交部”或者两个小实体“中国”“外交部”,难以将这三个实体同时全部识别出来。
图9 中文嵌套命名实体识别示例
英文嵌套命名实体识别(English Nested Named Entity Recognition,ENNER)任务的文本特征比中文更容易提取,所以近年来很多学者对该任务进行了研究,研究方法也由原先的传统方法逐渐向深度学习方法转变。针对一般命名实体识别模型存在的单标签序列标注问题,目前基于深度学习的ENNER模型主要有以下几种改进思路: 修改标注规则的序列标注、层叠序列标注和非序列标注。在保留序列标注思路的基础上修改标注规则时,一般会在进行分类时将单分类变成多分类,例如输出满足指定阈值的所有标签[72]、将所有可能出现的标签两两组合[73]等;利用层叠序列标注思路时,会对多个扁平命名实体识别模型进行堆叠[74-75],每层分别用于识别不同粒度大小的实体;当利用非序列标注思路识别嵌套命名实体时,可以通过寻找锚点判定其对应类别及所在实体[76]、将NNER任务转化为阅读理解任务[70]、构建多层指针网络预测实体边界等方式来解决,这类思路相对巧妙,跳出了原有的思考方式,摆脱了传统序列标注任务可能存在的错误积累、效果不突出等问题,对任务性能显著提升。值得一提的是,Li等在2019年[70]提出的基于机器阅读理解的方法不仅在中文扁平命名实体文本上取得了不错的效果,还在英文嵌套命名实体文本上达到了SOTA,可见该模型兼容性很好,同时适用于扁平实体和嵌套实体的识别任务。
由于中文的复杂性,现有的中文嵌套命名实体识别(Chinese Nested Named Entity Recognition,CNNER)模型大部分是基于规则和传统机器学习的。通过构建规则解决CNNER任务的做法存在耗时耗力、灵活性差等问题,例如,Zhou等人在2004年[77]提出的方案和Zhou在2006年[78]提出的方案都是先识别扁平命名实体,再通过基于规则的方法获取嵌套命名实体。刘非凡等人在2007年[79]将多层嵌套边界检测问题转化为传统序列标注问题,利用CRF和SVM融合上下文语义特征,搭配新提出的层次结构信息编码方法,提升了模型的准确率。Fu等人则在2011年[80]通过抽取中文语素特征,辅助提升了基于CRF框架的CNNER模型性能。随后Fu等人又在2012年[81]提出了一种混合标注规则,搭配双层CRF模型识别中文嵌套命名实体,取得了不错的实验结果。目前常见的中文嵌套命名实体语料有: 《人民日报》语料库[82]、ACE 2005中文语料库[83-84]、IEER-99新闻语料[85]、MET2测试语料[86]等,但由于这些语料库存在嵌套实体少、标注信息不完整等问题,于是李雁群等人在2017年[87]用半自动化方法在最常见的《人民日报》和ACE 2005中文语料上构建了完善的嵌套命名实体识别语料库。此外,李雁群等人还在2017年[88]针对中文维基百科自动构建了一个高质量的中文嵌套命名实体语料库,极大地推动了CNNER任务的发展。
5 中文命名实体识别的未来发展
5.1 速度更快、更节约资源
目前广受欢迎的LSTM结构是时间序列模型,无法进行并行优化,时间开销和内存开销随着句子长度的增加和模型层数的增加会变得很大。此外,现有的预训练模型如BERT,需要消耗大量的RAM和计算资源,如果pipeline中的下游任务没有分配足够多的计算资源,就无法进行微调。未来可以考虑对实验模型进行优化改进,平衡模型的复杂度和简化程度。
5.2 中文嵌套命名实体识别
现有的中文命名实体识别方法能够较好地识别出结构相对简单的扁平命名实体,但是对于结构复杂的嵌套命名实体却很难完整、准确地识别出来。中文的复杂性导致文本内往往存在较多的嵌套命名实体,尤其近年来随着语言文化的不断交融与更新,现代汉语文本逐渐趋于中英文交替使用,尤其是专业领域中的参考资料、 技术文档等逐渐趋于语言多样化,更加大了中文嵌套命名实体识别的难度。
不仅如此,现阶段缺乏大型标准统一的中文嵌套命名实体语料库, 导致CNNER任务难有进展。我们期待未来可以充分利用基于迁移学习、对抗学习、 远监督学习等方法解决资源匮乏的嵌套中文命名实体识别难题,降低人工标注工作量。
5.3 多任务联合学习
命名实体识别任务往往与其他任务结合进行多任务联合学习。如在NLP领域中,可以将中文命名实体识别任务的结果输入到命名实体链接(Named Entity Linking)任务中,将文本中提到的实体与知识库中的实体链接起来,消除实体间存在的歧义问题。中文命名实体识别任务还可与关系抽取(Relation Extraction)任务联合学习,在识别文本中关键实体的同时,抽取实体间的语义关系。如图10所示,将非结构化的文本数据进行结构化,极大地促进了知识图谱的构建。许浩亮等人在2018年[89]构建了一个中文嵌套实体关系语料库,并采用半自动方式标注了嵌套命名实体和嵌套实体关系。值得关注的是,复杂场景下的中文嵌套实体关系抽取任务也将是一个重要研究方向。
图10 中文命名实体识别与关系抽取联合学习示例
联合模型的提出,可以将两个甚至多个子模型统一建模,有效利用任务之间的潜在信息和依赖关系,有效缓解传统流水线方法(Pipeline)存在的误差积累、交互缺失等问题,使每个子任务从联合学习中获益。CNER也可以与CV方向结合,解决新场景下的问题,比如在利用文本生成图像的场景中,先利用CNER任务提取重要的实体,根据实体检索对应的图像,紧接着合成图片获得所需的目标图像。未来还可以进一步探究CNER任务与更多任务的搭配使用。
6 结语
深度学习目前已成为中文命名实体识别任务的主流方法,受到学者的广泛关注。本文先对CNER任务的定义、难点及应用做了简要介绍,然后介绍了常见的中文命名实体识别数据集和评估标准,接着对近年来深度学习在CNER任务上的应用进行梳理和分类。我们的调研表明,深度学习方法中的BiLSTM+CRF网络结构是目前CNER任务中的主流模型结构,因其善于利用上下文信息的特点,性能突出。此外,当前中文命名实体识别模型的改进方向主要是获取更丰富的语义信息和引入外部知识,虽然词典的引入确实可以快速大幅提升模型性能,但受限于其获取难、体积大、更新难等缺点,后期可以考虑通过优化词汇信息引入方式、丰富任务模型底层特征等操作,来构建一个更加健壮的CNER系统。此外,本文也对中文嵌套命名实体识别任务的研究现状和常见语料库进行概述。最后,本文对CNER任务的未来发展进行展望。