分享嘉宾:刘亮 美团 资深算法工程师

编辑整理:吴雪松

出品社区:DataFunTalk

导读在过去的20年中,搜索过程中处理查询的方式以及向用户显示结果的方式已完全改变。该过程已经从仅基于文本匹配的检索发展到现阶段——尝试基于对查询的真实语义理解以及上下文,位置,时间,用户的先前短期和长期浏览活动来获得搜索结果。本文主要介绍美团搜索场景下,查询理解系统的一些建设和相关的工作。主要围绕以下几点展开:

  • Query理解简介

  • 实体识别&实体链接

  • 查询改写

  • 意图识别

▌Query理解简介

1. 美团搜索

在介绍查询 ( Query ) 理解之前,我们先了解下美团搜索,左图是美团APP首页的截图,中间是美团承接的业务,可以看出美团的业务非常多,包括了像外卖、美食、酒店住宿等大家比较熟悉的业务,也有像婚纱摄影、机票预定等相对低频业务。顶部的搜索框,是美团搜索的主入口,美团的搜索就是通过这个搜索框来获取用户的查询Query,在理解查询Query后,对接到所服务的各种各样的业务品类,最后返回给用户想要的结果。

美团搜索是典型的O2O搜索,右图显示了对比传统的网页搜索以及电商搜索的一些差异。

首先是搜索目标,美团搜索的核心是提供服务,包括团单、套餐等本地生活服务。另外也会对一些信息和商品提供查询服务,像天气或者医美百科等;另外还有商品,相对于传统电商,美团主要是本地的一些商品,包括周边的便利店,周边的商场中的商超类的产品,以及周边能配送的商品的搜索。

另外一个重要的特点是基于位置的相关性比较高,因为O2O主要是基于本地生活的服务形态。供给约束方面,网页搜索基本不用考虑;电商搜索的供给是全国的商家,购买后全国配送;O2O场景下,从蜂窝到城市到全国这些维度都有涵盖,蜂窝是类似外卖这种业务,它的配送范围是很有限的,大概可能3~5公里的范围;像美食到餐团购类,是到店里消费,基本是一个城市维度的;另外像酒店旅游这种业务,它可能是全国性质的供给,所以说它涵盖的范围会比较广。

以上就是美团搜索的大概介绍。

2. QU

下面介绍下查询理解系统。QU ( Query Understanding ),主要利用基础NLP能力,对我们的用户输入的Query进行分析,产生一系列的基础信号,然后这些信号会应用到整个搜索链路的召回、排序等各个阶段。

举个例子来说的话,用户输入:杭州东附近的7天酒店,可以通过查询的变换,纠错和扩展,把杭州东扩展成杭州东站,扩大召回。

在往下是成分识别,这个后面也会重点介绍,包括了实体识别、实体链接,它可以把Query再进行一个成分粒度的识别,把杭州东识别成车站类的地理位置,7天识别成一个商家品牌,通过实体链接可以将杭州东对应的经纬度返回,7天链接到具体的品牌ID等。在最后是一些业务应用,包括查询意图的识别方面,我们还需要把它识别出它具体是本地意图,还是异地意图。

右图是我们目前线上应用的搜索结果,可以看到首先它识别出杭州东这个主点,并链接到了杭州东站这个实体。在意图方面,由于是在北京的搜索,但是我们需要找杭州东附近的酒店,所以会有异地的提示,最终的结果是在杭州东站坐标点一定距离半径内召回7天品牌酒店。

3. DQU

上图是查询理解DQU项目的架构。

公司有非常多的业务,很多业务也有自己的垂搜系统,在业务快速迭代的阶段是独立运行的,随着业务的不断发展,如何避免低水平重复建设,更好的积累技术、经验,平台就成了很有价值的工作。目前DQU的项目已经支持了公司内大部分的搜索场景,包括美团点评大搜,还有度假、住宿等业务频道内搜索。

整个框架分三个部分,最底层是基础信号层,主要是NLP相关基础信号模块,可以提供通用和业务个性化的信号输出。中间是业务逻辑层,适配不同的垂搜业务逻辑。最上层是适配层,对于不同的业务搜索可能有不同的接口,需要接口适配再返回最终结果。

接下来重点介绍下几个核心的查询理解模块。

▌实体识别&实体链接

1. 实体识别

① 简介

首先是实体识别,对比于通用网页搜索,电商和O2O搜索更多的是结构化的召回。举个例子,上图中间的“如家上地”,需要把它的商家和地址身份进行识别,然后对应到我们的Doc端,通过不同的字段进行召回。

因为在我们的场景下,Doc端的数据包含了很多结构化的字段,不同字段之间的语义差距会非常大,如果我们进行全字段检索,经常会出现一些语义漂移的问题。比如,搜“肯德基”,可能召回一个理发店,因为它的地址字段有“在肯德基对面”。所以我们需要结构化召回来保证更高的精度。其中NER是指导召回的关键信号。

② 整体架构

实体识别的整体框架,主要分两个部分:下面的离线端和上面的在线部分。

线上的识别来源主要分两部分,一部分是词典的实体匹配,一部分是模型预测,然后再往上是消歧策略,实体词典匹配,主要解决一些热门和词库里能够匹配的词,对一些长尾和泛化的词识别,还是依赖于模型。但是这两个部分中间的结果可能会有一些冲突,所以需要一个消歧策略,包括多粒度、多结果选择。我们主要通过一些模板规则,进行优先级的消歧,最终输出一个多路的结果,因为某些query会有粒度和类别的歧义。

离线部分主要是两个大的部分:一部分是实体挖掘,这个主要是为线上的实体匹配提供基础的实体库,模型方面主要是一些基础的模型训练、优化相关的工作。

③ 模型迭代

接下来讲一下NER模型迭代相关的一些工作。初期线上的模型主要是CRF,在19年引入了BERT模型。这里面主要是两个方面的改进,一方面是训练过程,引入了美团UGC的一些数据,用这些评论相关的数据进行预训练,补充O2O场景下的一些语义信息。再就是fine-tune阶段,我们除了人工标注语料的数据集,还有基于用户行为统计的半自动化生成的一些语料,来扩充训练数据。使模型训练效果,能够更好的拟合线上的应用。

④ 自动标注训练数据

这里简单介绍下,根据词典扩充训练数据的工作。

对于大规模的模型训练,语料是非常重要的一个部分,但是对于NLP任务,一般来说还是比较难以去自动化的获取这些训练语料,我们的一个核心思路是如何利用已有的标注数据、词典来指导内容半自动化的生成训练语料。首先用原始的人工标注语料,训练一个Model A,然后针对线上已有的实体库去预测打分,对打分有差异的部分,进行校正,然后把校正后的结果合并原始数据,再训练一个Model B,最终应用到线上。其中的核心就是校正的过程。

它的前提假设是,实体库和模型的质量,都是比较高的,但是其中模型预测和词典它中间还是有差异的部分,就是我们的模型预测相对于它可以提供更细的粒度。比如下面这个例子:“兄弟烧烤个性diy”,它其实是一个商家的名称,因为有比较全的美团商家库的信息,所以能够通过词典来挖掘出我们的商家信息。

但是模型预测的话,由于兄弟这个词,有影视类的电影,可能是电影名,模型也可能会识别错误,所以需要根据词典的信息进行修正。修正的方法是对模型预测的序列,进行轮巡替换,找出替换概率最高的一个,然后作为替换类型,最终生成一条校正后的训练数据,和原始数据进行联合训练。

⑤ 数据挖掘

另外一个部分就是离线词库的挖掘。

除了已有的商家库和一些结构化数据以外,线上的用户行为,也是非常重要的,怎么通过海量的用户行为数据,泛化我们的实体库,是我们的核心工作。这部分工作主要利用我们线上的用户点击日志,结合召回命中信息,来识别出Query的边界和类型,把用户Query中识别出的实体成分进行落库,同步到实体库中。

Query中的实体边界的切分,主要参考该Query召回的多个Doc结果的命中信息。由于我们是结构化召回,所以可能存在多个字段同时命中,通过统计所有Doc的命中分布情况,来考虑它的切分方式,最终转化成一个整数线性规划的问题,来寻求一个切分概率最大的方式,具体可以参考文章《美团搜索中NER技术的探索与实践》。有了这个切分边界后,再对它的每一个成分进行二分类模型识别,把识别概率比较高的目标成分,进行人工抽检,将符合要求的实体补充到实体库中。最终,通过这样的循环来扩充我们的实体库。

2. 实体链接

① 背景

下面再介绍一下实体链接的一些相关工作,美团搜索场景下的LBS属性,决定了很多用户都有地址类搜索的习惯,所以地址识别也是我们的一个重点。实体识别把地址成分识别出来之后,后面很重要的工作是把它的经纬度坐标找到,通过半径距离召回,满足用户搜索某个地址周边结果的诉求。这就需要实体链接把用户Query中的文本链接到具体的实体,并返回实体的属性。另外实体链接模块,本身还可以修正NER的结果。

② 整体框架

上图是实体链接的整体框架,它主要分为两个部分:

离线的部分,其核心是对所有物理实体mention的挖掘,其实就是实体的一个别名,用来扩大实体链接召回。

线上部分,首先通过别名进行实体召回,然后对召回的实体进行消歧排序。消歧主要结合Query文本序列的特征、基于地理位置的特征(比如城市和GeoHash),还有上下文的一些文本信息进行消歧排序,返回给用户最相关的Top实体。

③ 核心算法

核心算法如上图。离线部分,刚才也提到了主要是Mention的挖掘,目前基础数据,主要是商家库的数据、搜索日志、UGC评论、知识图谱等。Mention挖掘目前主要有三种方式:

  • 抽取式:对已有的核心实体库进行核心词的一个识别,然后再通过核心词的组合,来泛化出标准实体的一些别名

  • 挖掘式:主要是通过用户评论和搜索的点击session日志,通过用户行为挖掘用户对于实体的一些别名输入

  • 生成式:主要是通过Seq2Seq的一些模型,自动化的去生产一些泛化实体的别名

右下角是一些例子,比如说标准的别名,凯德茂望京,能够挖掘出它的一些相关的子成分(凯德mall)。

在线消歧部分,主要是一些相关性的计算和消歧排序,不再展开了。

▌查询改写

1. 背景

为什么需要查询改写?主要因为自然语言表达的多样性,首先是Query和Doc之间表达的差异,用户的Query会相对随意,而Doc端相对正规,商家和运营录入的商家介绍等相关字段,会标准化一些。另外一个问题就是一义多词,通常一个含义的表达会有非常多种输入的方式。

右图是线上真实的搜索日志,是“理发”相关的搜索词。可以看到有非常多的变换形式。还有一词多义的问题,比如:结婚照,它可能包含两类的含义,一类是要找婚纱照,另外还有可能是去拍结婚证需要的证件照,如果我们不进行Query查询的改写,直接通过原词文本匹配,很可能会漏召回。

2. 技术演进

查询改写这块,技术演进主要分4个阶段,最初是基于词典规则,它的优点是精度高,但是召回率非常低。后面加入了基于用户行为统计挖掘的相关扩召回的方式,但由于是基于整串的匹配,召回虽然有一定提升,还是没法满足线上用户很多长尾Query的搜索。

为了解决长尾问题,引入了基于翻译模型的统计翻译改写,主要是通过用户行为日志,训练翻译模型和语言模型,从子串片段级别来解决覆盖问题,极大的提升了改写的召回。但它的问题是会比较容易产生语义的漂移,因为它主要是基于文本对齐和文本替换的统计概率,并未考虑语义信息。所以我们又引入了基于Bert的语义规范化,进行过滤,很大程度的缓解了语义漂移的问题。

3. 为什么选择SMT

接下来重点介绍一下我们线上的翻译改写模型。

为什么要选择这样一个翻译模型呢?首先翻译所需的平行语料,在搜索场景下,比较容易通过搜索日志的Session来构造,甚至还可以用Query-Doc的点击数据来补充,通过这样的平行语料,就能够自动化的获取海量的标注数据,覆盖足够多的语言现象,解决表达多样的问题。

另外翻译模型很重要一个特点,是它能够支持子串级别的替换,并充分考虑上下文。所以说它能够很好的进行召回泛化。

4. SMT改写过程

这是SMT改写的一个大致的过程。它主要分为三个部分:

最上面是句对挖掘,通过海量的用户行为,包括Session、Query-Title、Query-Doc-Query数据,对这些数据进行特征抽取,然后再结合句对的判别模型,生成片段级别的对齐语料。

第二部分翻译模型训练,它的输入是上一步生成的对齐语料,然后生成N-gram的片段,再结合语义计算和统计规则,去生产翻译模型和语言模型。它主要是通过N-Gram这种方式进行子串级别的泛化。

第三部分是线上的解码和终判,主要考虑性能问题。因为线上替换时,子串候选解码如果不加限制,会产生组合爆炸的问题。所以结合了BeamSearch以及业务相关的过滤器,例如利用NER和实体链接的信息,对商家实体词限制改写,通过这样的一些业务特征来保证精度。通过路径裁减,返回概率最高的Top-K的结果,进行改写路径的生成。

▌意图识别

1. 背景

目前我们意图模块的核心是识别用户的业务需求,因为我们涵盖的业务品类非常多,不同的业务,展示模板和展示样式也都不同,比如酒店的查询,可能会有用户的入离时间展示模板。所以需要把不同的业务需求识别出来,进行多形态的召回。

上面是我们意图的划分,包括左边的业务意图,例如美食、酒店、旅游等等,会直接访问业务相关索引进行召回。中间是阿拉丁(开放平台),主要获取一些活动、第三方结果。最右边还会有一些基于知识内容的信息类召回,比如根据评论内容召回结果。最下面是对应的一些场景,比如时间、空间、人和事件的场景。

2. 整体框架

意图识别的整体框架,主要分为两个部分:

意图召回。这块是转换为了分类任务,只判断某个查询是否包含某种意图。线上采用词典匹配+规则+模型的方式进行识别,词典主要包含业务和领域相关数据,词典和Pattern规则,能比较好的解决热门识别,针对长尾部分,主要靠Bert模型来解决泛化识别问题。

意图分布。意图召回完了以后,我们还要知道当前搜索的各个意图的强弱,尤其是找到主意图,就是图上面部分的意图分布,我们将其转化成排序问题。由于线上展示的每条POI结果,后台都有明确的业务归属,所以我们就可以依据这个业务归属信息和用户点击行为,获得有标注的训练语料,来训练排序模型。模型特征主要分为两部分,一是统计类的特征,包括一些CTR、CVR及相关的用户行为的特征。二是Embedding类特征,来进行语义的表达。

▌总结和展望

最后总结下,本文主要介绍了美团查询理解系统中的主要模块,包括实体识别、查询改写、意图识别。查询理解是搜索引擎与NLP结合的产物,用来解决搜索相关的一些文本理解任务。除了文本本身,后续我们还会考虑引入更多包括时空、用户,场景的信息来做到更深入的理解搜索场景下的用户查询意图。

分享嘉宾:

刘亮,美团资深算法工程师。9年搜索和NLP相关工作经验,目前是美团搜索查询理解方向架构师。

Query理解在美团搜索中的应用相关推荐

  1. 美团搜索中NER技术的探索与实践

    1. 背景 命名实体识别(Named Entity Recognition,简称NER),又称作"专名识别",是指识别文本中具有特定意义的实体,主要包括人名.地名.机构名.专有名词 ...

  2. 美团搜索中查询改写技术的探索与实践

    猜你喜欢 0.[免费下载]2022年1月热门报告盘点1.腾讯QQ信息流推荐业务实践2.小红书推荐中台实践3.微信视频号的实时推荐技术架构分享4.预训练模型在华为信息流推荐系统中的探索和应用5.腾讯PC ...

  3. 【实践】多业务建模在美团搜索排序中的实践

    美团搜索排序是一个典型的多业务混合排序建模问题,这种多业务场景搜索存在很多挑战.本文聚焦到店商家多业务场景的多业务排序建模优化工作,希望能对从事相关工作的同学有帮助. 引言 排序流程简介 多业务建模实 ...

  4. 广告行业中那些趣事系列32:美团搜索NER技术实践学习笔记

    导读:本文是"数据拾光者"专栏的第三十二篇文章,这个系列将介绍在广告行业中自然语言处理和推荐系统实践.本篇主要是学习美团技术团队分享的<美团搜索中NER技术的探索与实践> ...

  5. 电商搜索全链路(PART II)Query理解

    作者 | kaiyuan 整理 | NewBeeNLP 大家好,我是kaiyuan.电商搜索全链路系列文章们躺在我的草稿箱里已经N久了,上一篇整理还是在上次,错过的小伙伴点击传送门:电商搜索全链路(P ...

  6. 知乎搜索框背后的Query理解和语义召回技术

    一只小狐狸带你解锁 炼丹术&NLP 秘籍 前言 随着用户规模和产品的发展, 知乎搜索面临着越来越大的 query 长尾化挑战,query 理解是提升搜索召回质量的关键.本次分享将介绍知乎搜索在 ...

  7. 蒙特卡洛树搜索_Query 理解和语义召回在知乎搜索中的应用

    分享嘉宾:方宽 知乎 算法工程师 文章整理:艺饭饭 内容来源:DataFunTalk 出品平台:DataFun 注:欢迎转载,转载请留言. 导读:随着用户规模和产品的发展, 知乎搜索面临着越来越大的 ...

  8. 常识性概念图谱建设以及在美团场景中的应用

    来源:美团技术团队本文约9600字,建议阅读15分钟 本文介绍了美团常识性概念图谱构建的Schema,图谱建设中遇到的挑战以及建设过程中的算法实践,最后介绍了一些目前常识性概念图谱在业务上的应用. 常 ...

  9. 领域应用 | 常识性概念图谱建设以及在美团场景中的应用

    转载公众号 | 美团技术团队 常识性概念图谱,是围绕常识性概念建立的实体以及实体之间的关系,同时侧重美团的场景构建的一类知识图谱.本文介绍了美团常识性概念图谱构建的Schema,图谱建设中遇到的挑战以 ...

最新文章

  1. 报名 | 《大数据科学与应用系列讲座》全新上线!
  2. 艾伟_转载:.NET内存管理、垃圾回收
  3. Android USB Host与HID通讯
  4. Async,Await和ConfigureAwait的关系
  5. LeetCode 95. 不同的二叉搜索树 II(递归)
  6. Makefile:Makefile中的调试打印方法
  7. 前端框架Vue(3)——vue-cli 目录结构
  8. 我只写注释 —— 让Ai写代码
  9. 【翻译】PSV初音Miku Project DIVA-f
  10. zktime 协议_zktime5.0考勤管理系统使用说明书(1.0版).pdf
  11. P1125 [NOIP2008 提高组] 笨小猴 java
  12. python 面试题 aac caa相似_Python 面试实训 100 题,哪道难住了你?| 文末附答案
  13. ecshop一键购物
  14. Spring Cloud Gateway 3.1.1基于redis实现动态路由和管理功能
  15. 图片分析——现代家居风水学[图文]居家必然之奇术
  16. gitbook看电子书
  17. 人工智能笔记之专业选修课4.1.5 - 博弈论 9.重复博弈,效用,随机博弈
  18. 自定义组合键进入u-boot
  19. 盛志凡:TVOS标准体系建设及产业化推进与广电终端智能化
  20. 服务端指南 数据存储篇 | MySQL(03) 如何设计索引

热门文章

  1. 如何在 bash 中使用键值字典
  2. 简单分析MySQL 一则慢日志监控误报问题
  3. 想从事单片机工作,C语言要达到什么水平?
  4. 如何系统地入门学习stm32?
  5. HDU2215(最小圆覆盖问题)
  6. C++中的大小转换函数和翻转函数
  7. 计算机专业面试国王的问题,阿卜杜拉国王科技大学电气与计算机科学面试经验汇总...
  8. 解题报告:【kuangbin带你飞】专题十一 网络流
  9. 【每日DP】day13、P3147 [USACO16OPEN]262144 (区间DP,2048游戏)难度⭐⭐⭐★
  10. php批量修改图片地址,织梦网站内容页图片绝对路径设置及批量替换方法