导读:本文是“数据拾光者”专栏的第三十二篇文章,这个系列将介绍在广告行业中自然语言处理和推荐系统实践。本篇主要是学习美团技术团队分享的《美团搜索中NER技术的探索与实践》学习笔记,对于想了解美团搜索NER技术实践的小伙伴可能有所帮助。
摘要:本篇主要是学习美团技术团队分享的《美团搜索中NER技术的探索与实践》学习笔记。首先介绍了背景,包括NER任务定义、美团搜索场景下的NER以及美团搜索NER任务面临的挑战;然后重点介绍了美团基于实体词典匹配+模型在线预测框架。通过实体词典匹配可以解决头部搜索NER匹配问题,而长尾复杂的搜索则通过模型在线预测解决。对于想了解美团搜索NER技术实践的小伙伴可能有所帮助。
郑重声明,本篇主要是学习美团技术团队发表的文章《美团搜索中NER技术的探索与实践》。因为上一篇《广告行业中那些趣事系列31:关键词提取技术攻略以及BERT实践》介绍了关键词提取技术以及BERT实践,关键词提取属于一种NER任务。美团的技术沉淀在业界是很有名的,通过学习美团NER技术实践对于我们线上实际业务的开展非常有帮助。这篇文章总体看了不下五遍,属于精读的文章。小伙伴们可以直接去拜读原文,非常精彩。这里更多的是根据自己的思考和理解将原文整理成更容易理解的方式进行表达(至少对于我是更容易理解的方式),类似一种学习笔记的表现形式。很多小伙伴看到干货文章更多的是收藏+关注,然后就不了了之,成为“收藏党”。而我更推荐精读N遍,同时进行延伸查阅更多知识,最后以一种便于理解的方式整理出来,形成文章将知识固化。如果再能将固化的知识通过PPT等形式分享出来,那么理解的就更加深刻。
下面主要按照如下思维导图进行学习分享:

01
背景
1.1 NER任务定义
命名实体识别(Named Entity Recognition,简称NER)是指识别文本中具有特定意义的实体,主要包括人名、地名、机构名、专有名词等。作为NLP领域四大任务(分类、生成、序列标注和句子对标注)之一,应用场景非常广泛,需要重点研究。
1.2 美团搜索场景下的NER
在美团搜索场景下,NER主要应用于搜索召回、用户意图识别、实体链接等环节。本篇主要讲美团搜索召回任务中的NER技术实践。在O2O搜索中,对商家POI的描述主要包括商家名称、地址、品类等相关性较弱的文本域。如果实际搜索中通过全部文本域命中的方式进行召回,那么可能产生大量的错误召回。下面通过举例说明:如果用户搜索了“海底捞”,如果采用全部文本域命中的方式,也就是说只要商家名称、地址或者品类等包含“海底捞”那么就会被召回。我们希望召回品类为“海底捞”的商家,但是实际情况是有些商家可能本身和海底捞没啥关系,但是在“地址”文本域中标记为“海底捞附近多少米”,作用是将海底捞作为一个参照物帮助用户更好的定位商家地址。这种情况下召回的商家并不是用户想要的。
针对这个问题美团提出了一种“结构化召回”的策略,让特定的查询只在特定的文本域做倒排检索,通过这种方式提升召回商家的相关性。当用户搜索“海底捞”时会基于NER先识别为商家,然后在商家的文本域内进行检索,这样就会过滤掉地址中包含“海底捞”但是本身没啥关系的商家,从而提升召回率。下面是基于NER结构化召回示例图:

图1 基于NER结构化召回示例
1.3 美团搜索NER任务面临的挑战
实际业务场景中美团搜索NER任务会面临以下挑战:
总结下来就是美团搜索NER任务面临新增实体数量庞大并且增速快、用户搜索非标准化难以识别、领域相关性强以及性能要求高的挑战。下面会详细介绍美团搜索团队如何应对这些挑战。
02
技术选型:实体词典匹配+模型在线预测
针对美团搜索NER任务面临的挑战,美团主要构建了“实体词典匹配+模型预测”技术框架。(这个架构其实和我们搜索召回任务的行业词包+在线分类架构很相似,我们采用的是头部query构建行业词包,中长尾使用蒸馏模型构建线上分类)。至于为什么使用这种架构,下面通过三个问题进行详细说明:
2.1 为什么需要实体词典匹配
构建实体词典匹配主要有以下四个原因:
2.2 有了实体词典匹配为什么还要模型在线预测
在实体词典匹配的基础上还需要模型在线预测主要有以下两方面的原因:
2.3 实体词典匹配、模型预测两路结果是怎么合并输出的
美团搜索团队采用训练好的CRF权重网络作为打分器分别对实体词典匹配和模型预测两路输出的NER路径进行打分。合并输出的规则是无法匹配词典或词典匹配打分明显低于模型预测时,采用模型预测的结果,其他情况仍然采用词典匹配结果。相当于是词典匹配为主+模型预测为辅的套路。后面会重点介绍实体词典匹配和模型预测的细节。下图是美团搜索NER实体词典匹配和模型在线预测合并流程:

图2 实体词典匹配和模型在线预测合并流程
03
详解实体词典匹配
3.1 实体词典匹配现状
传统的NER技术仅能处理通用领域既定既有的实体,而无法应对垂直领域特有的实体类型。在美团搜索场景下,通过对商家POI结构化信息、商户评论数据、搜索日志等独有数据进行离线挖掘,可以很好地解决领域实体识别问题。经过离线实体库不断的丰富完善累积后,在线使用轻量级的词库匹配实体识别方式简单、高效、可控,可以很好地覆盖头部和腰部流量。目前,基于实体词典库的在线NER识别率可以达到92%。实体词典匹配主要分成离线挖掘和在线匹配两部分,下面会分别进行详细说明。
3.2 离线挖掘实体词典
美团具有丰富多样的结构化数据,通过对领域内结构化数据的加工处理可以获得高精度的初始实体库。例如:从商户基础信息中可以获取商户名、类目、地址、售卖商品或服务等类型实体;从猫X眼X文X娱数据中,可以获取电影、电视剧、艺人等类型实体。上述结构化数据比较容易处理,比较复杂的是非结构化数据挖掘领域实体。用户搜索的实体名往往夹杂很多非标准化表达,与业务定义的标准实体名之间存在差异,如何从非标准表达中挖掘领域实体变得尤为重要。
现有的新词挖掘技术主要分为无监督学习、有监督学习和远程监督学习。无监督学习将高频序列作为候选集,并通过计算紧密度和自由度指标进行筛选。这种方法虽然可以产生充分的候选集合,但是仅通过特征阈值过滤无法有效地平衡精确率与召回率,实际应用中通常挑选较高的阈值保证精度而牺牲召回;有监督学习通常涉及复杂的语法分析模型或深度网络模型,且依赖领域专家设计复杂规则或大量的人工标记数据;远程监督学习通过开源知识库生成少量的标记数据,可以一定程度上缓解人力标注成本高的问题。然而小样本量的标记数据仅能学习简单的统计模型,无法训练具有高泛化能力的复杂模型。
美团搜索的离线实体挖掘是多数据源多方法的。数据源主要包括结构化的商家信息库、百科词条,半结构化的搜索日志,以及非结构化的用户评论(UGC)等。使用的挖掘方法主要包括规则、传统机器学习模型、深度学习模型等。结构化数据以及半结构化数据的挖掘相对简单,比较复杂的是对非结构化的UGC数据进行挖掘。UGC作为一种非结构化文本,蕴含了大量非标准表达实体名。下图是针对UGC的垂直领域新词自动挖掘流程:

图3 UGC垂直领域新词自动挖掘流程
3.3 词典在线匹配
3.3.1初始词典在线匹配方案以及存在的问题
初始词典在线匹配方法直接针对Query做双向最大匹配获得成分识别候选集合,再基于实体搜索量PV筛选出最终结果。这种策略存在以下几个问题:
3.3.2 两阶段修复策略
为了解决上述问题,实体词典在线匹配前引入CRF分词模型,针对垂直领域美团搜索制定分词准则,人工标注语料并训练CRF分词模型。针对模型分词错误问题,设计两阶段修复策略:
下面举例说明,在百度搜索输入“富春江浙西”,然后返回的搜索结果会匹配到“富春江浙西桐庐餐厅”。下面是搜索示例:

图4 百度搜索NER示例
对应到美团搜索NER任务中,通过两阶段修复策略可以根据“富春江浙西”输出实体库匹配的成分识别结果“富春江浙西桐庐餐厅”。下面是词典在线匹配两阶段修复流程:

图5 词典在线匹配两阶段修复流程
04
详解模型在线预测
4.1 在线预测模型演进流程
前面也说了对于头部query来说主要使用实体词典匹配的方法就可以使在线NER识别率达到92%,对于那些长尾并且比较复杂的query主要使用模型在线预测。美团搜索NER在线预测模型演进流程如下图所示:

图6 在线预测模型演进流程
从上图可以看出,2018年以前主要使用传统序列标注模型CRF,2018年使用业界主流方式构建LSTM+CRF模型,这个在上一篇文章《广告行业中那些趣事系列31:关键词提取技术攻略以及BERT实践》也说过LSTM+CRF模型天然适配序列标注任务,自从2015年LSTM+CRF出世因为模型本身和任务匹配度非常高基本成为主流;2019年随着BERT大火主要将BERT进行蒸馏构建在线预测模型;2020年完成BERT上线,这块主要解决了BERT性能问题;目前正在探索的模型是BERT+LR,利用知识增强以及弱监督BERT-NER。
4.2 模型在线预测主要面临的问题
在实践探索中模型在线预测主要遇到以下三个问题:
针对性能要求高的问题,我们的线上模型在升级为BERT时进行了一系列的性能调优;针对NER领域相关问题,我们提出了融合搜索日志特征、实体词典信息的知识增强NER方法;针对训练数据难以获取的问题,我们提出一种弱监督的NER方法。下面我们详细介绍下这些技术点。
4.3 在线预测模型性能优化
BERT是典型的预训练+微调两阶段模型,因为效果好和应用范围广所以是目前NLP领域最火的模型之一。美团搜索在线预测模型也是基于BERT构建,但是BERT这类预训练模型本身非常大,所以在线推理耗时较长,很难在毫秒级响应。关于BERT的详细讲解请小伙伴们参考我之前写过的一篇文章《广告行业中那些趣事系列3:NLP中的巨星BERT》。
将BERT应用于在线预测主要面临预测速度慢的问题。针对这个问题主要从模型蒸馏、预测加速两个方面进行了探索,分阶段上线了BERT蒸馏模型、BERT+Softmax、BERT+CRF模型。
4.3.1 模型蒸馏
美团技术团队尝试了对BERT模型进行剪裁和蒸馏两种方式,实验结果证明剪裁对于NER这种复杂NLP任务精度损失严重,而模型蒸馏是可行的。模型蒸馏用简单的话来说就是用简单模型来学习复杂模型,使得这个简单模型的效果可以匹配复杂模型,并且模型上线时预测速度也很快。我们团队之前用模型蒸馏主要是让TextCNN去学习BERT模型做文本分类任务,取得了不错的线上效果。关于模型蒸馏的详细讲解小伙伴们可以参考我之前写过的一篇文章《广告行业中那些趣事系列21:从理论到实战BERT知识蒸馏》。
美团技术团队构建IDCNN-CRF作为简单模型去学习复杂模型BERT,在没有明显精度损失的前提下,蒸馏模型的在线预测速度有数十倍的提升。
4.3.2 预测加速
BERT在线预测速度比较慢还有个原因是存在大量小算子以及Attention计算量的问题。针对这个问题主要使用以下三种方法加速模型预测:
除了上述模型蒸馏和预测加速提升在线模型预测性能之外,对于搜索日志中pv较高的query可以将预测结果以词典方式上传到缓存,进一步减少模型在线预测的QPS压力。
4.4 基于知识增强NER解决领域相关问题
如何将特定领域的外部知识作为辅助信息嵌入到语言模型中,一直是近些年的研究热点。K-BERT、ERNIE等模型探索了知识图谱与BERT的结合方法,为我们提供了很好的借鉴。美团搜索中的NER是领域相关的,实体类型的判定与业务供给高度相关。因此,我们也探索了如何将供给POI信息、用户点击、领域实体词库等外部知识融入到NER模型中。
4.4.1 融合搜索日志特征的Lattice-LSTM
在O2O垂直搜索领域,大量的实体由商家自定义(如商家名、团单名等),实体信息隐藏在供给POI的属性中,单使用传统的语义方式识别效果差。Lattice-LSTM针对中文实体识别,通过增加词向量的输入,丰富语义信息。借鉴这个思路,结合搜索用户行为,挖掘Query 中潜在短语,这些短语蕴含了POI属性信息,然后将这些隐藏的信息嵌入到模型中,在一定程度上解决领域新词发现问题。与原始Lattice-LSTM方法对比,识别准确率千分位提升5个点。下面是融合搜索日志特征的模型训练和预测流程图:

图7 融合搜索日志特征的模型训练和预测流程
4.4.2 融合实体词典的两阶段NER
我们考虑将领域词典知识融合到模型中,提出了两阶段的NER识别方法。该方法是将NER任务拆分成实体边界识别和实体标签识别两个子任务。相较于传统的端到端的NER方法,这种方法的优势是实体切分可以跨领域复用。另外,在实体标签识别阶段可以充分使用已积累的实体数据和实体链接等技术提高标签识别准确率,缺点是会存在错误传播的问题。
在第一阶段,让BERT模型专注于实体边界的确定,而第二阶段将实体词典带来的信息增益融入到实体分类模型中。第二阶段的实体分类可以单独对每个实体进行预测,但这种做法会丢失实体上下文信息,我们的处理方法是:将实体词典用作训练数据训练一个IDCNN分类模型,该模型对第一阶段输出的切分结果进行编码,并将编码信息加入到第二阶段的标签识别模型中,联合上下文词汇完成解码。基于Benchmark标注数据进行评估,该模型相比于BERT-NER在Query粒度的准确率上获得了1%的提升。这里我们使用IDCNN主要是考虑到模型性能问题,大家可视使用场景替换成BERT或其他分类模型。

图8 融合实体词典的两阶段NER流程图
4.5 基于弱监督NER解决训练数据难获取问题
针对标注数据难获取问题,我们提出了一种弱监督方案,该方案包含两个流程,分别是弱监督标注数据生成、模型训练。下面详细描述下这两个流程。

图9 弱监督标注数据生成流程
举个例子来说明,“兄弟烧烤个性diy”词典中给出的实体类型为商家,模型预测结果为修饰词+菜品+品类,没有Term属于商家类型,模型预测结果和词典有差异,这时候我们需要对模型输出标签进行校正。校正候选就是三种,分别是“商家+菜品+品类”、“修饰词+商家+品类”、“修饰词+菜品+商家”。我们选择最接近于模型预测的一种,这样选择的理论意义在于模型已经收敛到预测分布最接近于真实分布,我们只需要在预测分布上进行微调,而不是大幅度改变这个分布。那从校正候选中如何选出最接近于模型预测的一种呢?我们使用的方法是计算校正候选在该模型下的概率得分,然后与模型当前预测结果(当前模型认为的最优结果)计算概率比,概率比计算公式如公式2所示,概率比最大的那个就是最终得到的校正候选,也就是最终得到的弱监督标注样本。在“兄弟烧烤个性diy”这个例子中,“商家+菜品+品类”这个校正候选与模型输出的“修饰词+菜品+品类”概率比最大,将得到“兄弟/商家 烧烤/菜品 个性diy/品类”标注数据。

图10 预测结果修正举例
弱监督模型训练方法包括两种:一是将生成的弱监督样本和标注样本进行混合不区分重新进行模型训练;二是在标注样本训练生成的ModelA基础上,用弱监督样本进行Fine-tuning训练。这两种方式我们都进行了尝试。从实验结果来看,Fine-tuning效果更好。
05
总结和思考
本篇主要是学习美团技术团队分享的《美团搜索中NER技术的探索与实践》学习笔记。首先介绍了背景,包括NER任务定义、美团搜索场景下的NER以及美团搜索NER任务面临的挑战;然后重点介绍了美团基于实体词典匹配+模型在线预测框架。通过实体词典匹配可以解决头部搜索NER匹配问题,而长尾复杂的搜索则通过模型在线预测解决。对于想了解美团搜索NER技术实践的小伙伴可能有所帮助。