命名实体识别(NamedEntityRecognition,简称NER),又称作“专名识别”,是指识别文本中具有特定意义的实体,主要包括人名、地名、机构名、专有名词等。NER是信息提取、问答系统、句法分析、机器翻译、面向SemanticWeb的元数据标注等应用领域的重要基础工具,在自然语言处理技术走向实用化的过程中占有重要的地位。在美团搜索场景下,NER是深度查询理解(DeepQueryUnderstanding,简称DQU)的底层基础信号,主要应用于搜索召回、用户意图识别、实体链接等环节,NER信号的质量,直接影响到用户的搜索体验。
有别于其他应用场景,美团搜索的NER任务具有以下特点:
针对O2O领域NER任务的特点,我们整体的技术选型是“实体词典匹配+模型预测”的框架,如图下2所示。实体词典匹配和模型预测两者解决的问题各有侧重,在当前阶段缺一不可。下面通过对三个问题的解答来说明我们为什么这么选。
为什么需要实体词典匹配?
答:主要有以下四个原因:
一是搜索中用户查询的头部流量通常较短、表达形式简单,且集中在商户、品类、地址等三类实体搜索,实体词典匹配虽简单但处理这类查询准确率也可达到90%以上。
有了实体词典匹配为什么还要模型预测?
答:有以下两方面的原因:
一是随着搜索体量的不断增大,中长尾搜索流量表述复杂,越来越多OOV(OutOfVocabulary)问题开始出现,实体词典已经无法满足日益多样化的用户需求,模型预测具备泛化能力,可作为词典匹配的有效补充。
二是实体词典匹配无法解决歧义问题,比如“黄鹤楼美食”,“黄鹤楼”在实体词典中同时是武汉的景点、北京的商家、香烟产品,词典匹配不具备消歧能力,这三种类型都会输出,而模型预测则可结合上下文,不会输出“黄鹤楼”是香烟产品。
实体词典匹配、模型预测两路结果是怎么合并输出的?
答:目前我们采用训练好的CRF权重网络作为打分器,来对实体词典匹配、模型预测两路输出的NER路径进行打分。在词典匹配无结果或是其路径打分值明显低于模型预测时,采用模型识别的结果,其他情况仍然采用词典匹配结果。
在介绍完我们的技术选型后,接下来会展开介绍下我们在实体词典匹配、模型在线预测等两方面的工作,希望能为大家在O2ONER领域的探索提供一些帮助。
美团具有丰富多样的结构化数据,通过对领域内结构化数据的加工处理可以获得高精度的初始实体库。例如:从商户基础信息中,可以获取商户名、类目、地址、售卖商品或服务等类型实体。从猫眼文娱数据中,可以获取电影、电视剧、艺人等类型实体。然而,用户搜索的实体名往往夹杂很多非标准化表达,与业务定义的标准实体名之间存在差异,如何从非标准表达中挖掘领域实体变得尤为重要。
现有的新词挖掘技术主要分为无监督学习、有监督学习和远程监督学习。无监督学习通过频繁序列产生候选集,并通过计算紧密度和自由度指标进行筛选,这种方法虽然可以产生充分的候选集合,但仅通过特征阈值过滤无法有效地平衡精确率与召回率,现实应用中通常挑选较高的阈值保证精度而牺牲召回。先进的新词挖掘算法大多为有监督学习,这类算法通常涉及复杂的语法分析模型或深度网络模型,且依赖领域专家设计繁多规则或大量的人工标记数据。远程监督学习通过开源知识库生成少量的标记数据,虽然一定程度上缓解了人力标注成本高的问题。然而小样本量的标记数据仅能学习简单的统计模型,无法训练具有高泛化能力的复杂模型。
Step1:候选序列挖掘。频繁连续出现的词序列,是潜在新型词汇的有效候选,我们采用频繁序列产生充足候选集合。
Step2:基于远程监督的大规模有标记语料生成。频繁序列随着给定语料的变化而改变,因此人工标记成本极高。我们利用领域已有累积的实体词典作为远程监督词库,将Step1中候选序列与实体词典的交集作为训练正例样本。同时,通过对候选序列分析发现,在上百万的频繁Ngram中仅约10%左右的候选是真正的高质新型词汇。因此,对于负例样本,采用负采样方式生产训练负例集[1]。针对海量UGC语料,我们设计并定义了四个维度的统计特征来衡量候选短语可用性:
在经过小样本标记数据构建和多维度统计特征提取后,训练二元分类器来计算候选短语预估质量。由于训练数据负例样本采用了负采样的方式,这部分数据中混合了少量高质量的短语,为了减少负例噪声对短语预估质量分的影响,可以通过集成多个弱分类器的方式减少误差。对候选序列集合进行模型预测后,将得分超过一定阈值的集合作为正例池,较低分数的集合作为负例池。
Step3:基于深度语义网络的短语质量评估。在有大量标记数据的情况下,深度网络模型可以自动有效地学习语料特征,并产出具有泛化能力的高效模型。BERT通过海量自然语言文本和深度模型学习文本语义表征,并经过简单微调在多个自然语言理解任务上刷新了记录,因此我们基于BERT训练短语质量打分器。为了更好地提升训练数据的质量,我们利用搜索日志数据对Step2中生成的大规模正负例池数据进行远程指导,将有大量搜索记录的词条作为有意义的关键词。我们将正例池与搜索日志重合的部分作为模型正样本,而将负例池减去搜索日志集合的部分作为模型负样本,进而提升训练数据的可靠性和多样性。此外,我们采用Bootstrapping方式,在初次得到短语质量分后,重新根据已有短语质量分以及远程语料搜索日志更新训练样本,迭代训练提升短语质量打分器效果,有效减少了伪正例和伪负例。
在UGC语料中抽取出大量新词或短语后,参考AutoNER[2]对新挖掘词语进行类型预测,从而扩充离线的实体库。
原始的在线NER词典匹配方法直接针对Query做双向最大匹配,从而获得成分识别候选集合,再基于词频(这里指实体搜索量)筛选输出最终结果。这种策略比较简陋,对词库准确度和覆盖度要求极高,所以存在以下几个问题:
为了解决以上问题,在进行实体字典匹配前引入了CRF分词模型,针对垂直领域美团搜索制定分词准则,人工标注训练语料并训练CRF分词模型。同时,针对模型分词错误问题,设计两阶段修复方式:
将BERT应用于实体识别线上预测时面临一个挑战,即预测速度慢。我们从模型蒸馏、预测加速两个方面进行了探索,分阶段上线了BERT蒸馏模型、BERT+Softmax、BERT+CRF模型。
4.1.1模型蒸馏
我们尝试了对BERT模型进行剪裁和蒸馏两种方式,结果证明,剪裁对于NER这种复杂NLP任务精度损失严重,而模型蒸馏是可行的。模型蒸馏是用简单模型来逼近复杂模型的输出,目的是降低预测所需的计算量,同时保证预测效果。Hinton在2015年的论文中阐述了核心思想[6],复杂模型一般称作TeacherModel,蒸馏后的简单模型一般称作StudentModel。Hinton的蒸馏方法使用伪标注数据的概率分布来训练StudentModel,而没有使用伪标注数据的标签来训练。作者的观点是概率分布相比标签能够提供更多信息以及更强约束,能够更好地保证StudentModel与TeacherModel的预测效果达到一致。在2018年NeurIPS的Workshop上,[7]提出一种新的网络结构BlendCNN来逼近GPT的预测效果,本质上也是模型蒸馏。BlendCNN预测速度相对原始GPT提升了300倍,另外在特定任务上,预测准确率还略有提升。关于模型蒸馏,基本可以得到以下结论:
我们使用IDCNN-CRF来近似BERT实体识别模型,IDCNN(IteratedDilatedCNN)是一种多层CNN网络,其中低层卷积使用普通卷积操作,通过滑动窗口圈定的位置进行加权求和得到卷积结果,此时滑动窗口圈定的各个位置的距离间隔等于1。高层卷积使用膨胀卷积(AtrousConvolution)操作,滑动窗口圈定的各个位置的距离间隔等于d(d>1)。通过在高层使用膨胀卷积可以减少卷积计算量,同时在序列依赖计算上也不会有损失。在文本挖掘中,IDCNN常用于对LSTM进行替换。实验结果表明,相较于原始BERT模型,在没有明显精度损失的前提下,蒸馏模型的在线预测速度有数十倍的提升。
4.1.2预测加速
BERT中大量小算子以及Attention计算量的问题,使得其在实际线上应用时,预测时长较高。我们主要使用以下三种方法加速模型预测,同时对于搜索日志中的高频Query,我们将预测结果以词典方式上传到缓存,进一步减少模型在线预测的QPS压力。下面介绍下模型预测加速的三种方法:
算子融合:通过降低KernelLaunch次数和提高小算子访存效率来减少BERT中小算子的耗时开销。我们这里调研了FasterTransformer的实现。平均时延上,有1.4x~2x左右加速比;TP999上,有2.1x~3x左右的加速比。该方法适合标准的BERT模型。开源版本的FasterTransformer工程质量较低,易用性和稳定性上存在较多问题,无法直接应用,我们基于NV开源的FasterTransformer进行了二次开发,主要在稳定性和易用性进行了改进:
Batching:Batching的原理主要是将多次请求合并到一个Batch进行推理,降低KernelLaunch次数、充分利用多个GPUSM,从而提高整体吞吐。在max_batch_size设置为4的情况下,原生BERT模型,可以在将平均Latency控制在6ms以内,最高吞吐可达1300QPS。该方法十分适合美团搜索场景下的BERT模型优化,原因是搜索有明显的高低峰期,可提升高峰期模型的吞吐量。
混合精度:混合精度指的是FP32和FP16混合的方式,使用混合精度可以加速BERT训练和预测过程并且减少显存开销,同时兼顾FP32的稳定性和FP16的速度。在模型计算过程中使用FP16加速计算过程,模型训练过程中权重会存储成FP32格式,参数更新时采用FP32类型。利用FP32Master-weights在FP32数据类型下进行参数更新,可有效避免溢出。混合精度在基本不影响效果的基础上,模型训练和预测速度都有一定的提升。
4.2.1融合搜索日志特征的Lattice-LSTM
在O2O垂直搜索领域,大量的实体由商家自定义(如商家名、团单名等),实体信息隐藏在供给POI的属性中,单使用传统的语义方式识别效果差。Lattice-LSTM[10]针对中文实体识别,通过增加词向量的输入,丰富语义信息。我们借鉴这个思路,结合搜索用户行为,挖掘Query中潜在短语,这些短语蕴含了POI属性信息,然后将这些隐藏的信息嵌入到模型中,在一定程度上解决领域新词发现问题。与原始Lattice-LSTM方法对比,识别准确率千分位提升5个点。
1)短语挖掘及特征计算
该过程主要包括两步:匹配位置计算、短语生成,下面详细展开介绍。
Step1:匹配位置计算。对搜索日志进行处理,重点计算查询与文档字段的详细匹配情况以及计算文档权重(比如点击率)。如图9所示,用户输入查询是“手工编织”,对于文档d1(搜索中就是POI),“手工”出现在字段“团单”,“编织”出现在字段“地址”。对于文档2,“手工编织”同时出现在“商家名”和“团单”。匹配开始位置、匹配结束位置分别对应有匹配的查询子串的开始位置以及结束位置。
2)模型结构
模型结构如图11所示,蓝色部分表示一层标准的LSTM网络(可以单独训练,也可以与其他模型组合),输入为字向量,橙色部分表示当前查询中所有词向量,红色部分表示当前查询中的通过Step1计算得到的所有短语向量。对于LSTM的隐状态输入,主要由两个层面的特征组成:当前文本语义特征,包括当前字向量输入和前一时刻字向量隐层输出;潜在的实体知识特征,包括当前字的短语特征和词特征。下面介绍当前时刻潜在知识特征的计算以及特征组合的方法:(下列公式中,σ表示sigmoid函数,⊙表示矩阵乘法)
4.2.2融合实体词典的两阶段NER
我们考虑将领域词典知识融合到模型中,提出了两阶段的NER识别方法。该方法是将NER任务拆分成实体边界识别和实体标签识别两个子任务。相较于传统的端到端的NER方法,这种方法的优势是实体切分可以跨领域复用。另外,在实体标签识别阶段可以充分使用已积累的实体数据和实体链接等技术提高标签识别准确率,缺点是会存在错误传播的问题。
在第一阶段,让BERT模型专注于实体边界的确定,而第二阶段将实体词典带来的信息增益融入到实体分类模型中。第二阶段的实体分类可以单独对每个实体进行预测,但这种做法会丢失实体上下文信息,我们的处理方法是:将实体词典用作训练数据训练一个IDCNN分类模型,该模型对第一阶段输出的切分结果进行编码,并将编码信息加入到第二阶段的标签识别模型中,联合上下文词汇完成解码。基于Benchmark标注数据进行评估,该模型相比于BERT-NER在Query粒度的准确率上获得了1%的提升。这里我们使用IDCNN主要是考虑到模型性能问题,大家可视使用场景替换成BERT或其他分类模型。
针对标注数据难获取问题,我们提出了一种弱监督方案,该方案包含两个流程,分别是弱监督标注数据生成、模型训练。下面详细描述下这两个流程。
Step1:弱监督标注样本生成
1)初版模型:利用已标注的小批量数据集训练实体识别模型,这里使用的是最新的BERT模型,得到初版模型ModelA。
2)词典数据预测:实体识别模块目前沉淀下百万量级的高质量实体数据作为词典,数据格式为实体文本、实体类型、属性信息。用上一步得到的ModelA预测改词典数据输出实体识别结果。
Step2:弱监督模型训练
弱监督模型训练方法包括两种:一是将生成的弱监督样本和标注样本进行混合不区分重新进行模型训练;二是在标注样本训练生成的ModelA基础上,用弱监督样本进行Fine-tuning训练。这两种方式我们都进行了尝试。从实验结果来看,Fine-tuning效果更好。
本文介绍了O2O搜索场景下NER任务的特点及技术选型,详述了在实体词典匹配和模型构建方面的探索与实践。
[1]AutomatedPhraseMiningfromMassiveTextCorpora.2018.
[2]LearningNamedEntityTaggerusingDomain-SpecificDictionary.2018.
[3]BidirectionalEncoderRepresentationsfromTransformers.2018
[6]Hintonetal.DistillingtheKnowledgeinaNeuralNetwork.2015.
[7]YewKenChiaetal.TransformertoCNN:Label-scarcedistillationforefficienttextclassification.2018.
[8]K-BERT:EnablingLanguageRepresentationwithKnowledgeGraph.2019.
[9]EnhancedLanguageRepresentationwithInformativeEntities.2019.
[10]ChineseNERUsingLatticeLSTM.2018.
丽红,星池,燕华,马璐,廖群,志安,刘亮,李超,张弓,云森,永超等,均来自美团搜索与NLP部。
美团搜索部,长期招聘搜索、推荐、NLP算法工程师,坐标北京。欢迎感兴趣的同学发送简历至:tech@meituan.com(邮件标题注明:搜索与NLP部)