共计 20782 个字符,预计需要花费 52 分钟才能阅读完成。
查问改写是对用户 Query 拓展改写词,用更好的表述,帮用户召回更多合乎需要的后果。查问改写对于文本布尔检索系统是十分重要的扩召回伎俩,通过优化该算法模块可能间接且显著地晋升搜寻体验。本文次要讲述在美团的搜寻场景下查问改写我的项目的迭代方向和实现思路,心愿能对从事搜寻、广告、举荐中召回相干工作的同学有所启发或者帮忙。
1. 引言
在搜寻场景中,因为用户搜索词 Query 和检索文本 Document 之间存在大量表述不一的状况,在文本检索框架下,此类文本不匹配导致的漏召回问题重大影响着用户的体验。对这类问题业界个别有两种计划:用户端拓展用户的查问词——即查问改写,或 Document 端拓展文档关键词——即 Document 标签。本文次要介绍前一种解决漏召回的计划:查问改写(Query Rewriting,或称为查问扩大 Query Expansion)。查问改写的利用形式是对原始 Query 拓展出与用户需要关联度高的改写词,多个改写词与用户搜索词一起做检索,从而用更好的表述,帮用户搜到更多合乎需要的商户、商品和服务。
在美团搜寻的技术架构下,查问改写管制召回语法中的文本,命名实体辨认(Named Entity Recognition,简称 NER)[1]管制召回语法中的检索域,用意辨认管制召回的相关性以及各业务的分流和产品状态,这是最为外围的三个查问了解信号。查问改写策略在美团搜寻的全副流量上失效,除扩大用户搜索词外,在整个美团搜寻技术架构中作为根底语义了解信号,从索引扩大、排序特色、前端高亮等多方面影响着用户体验。对搜寻召回后果中的无后果率、召回后果数以及搜寻点击率等指标,也有着间接且显著的影响。
本文会介绍美团搜寻场景下查问改写这一工作上的迭代教训,内容次要分为三个局部。第一局部会对查问改写工作在美团搜寻场景下的挑战进行简略的介绍;第二局部会介绍查问改写工作上整体技术栈建设的实践经验第三局部是总结与瞻望。目前,业界在文本召回策略方面公开的分享较少,心愿本文能对从事搜寻、广告、举荐中召回相干工作的同学有所启发或者帮忙。
2. 背景与挑战
2.1 美团搜寻场景下查问改写信号的应用形式
在美团的搜寻场景下,查问改写次要用于解决以下四类语义鸿沟导致的漏召回问题:
- 语义拓展:次要是同义词、下位词以及常见的大小写数字和繁简转化等,例如“理发”、“剪发”、“造型”、“发艺”、“美发”、“剪头”等等。
- 用户表白和商家表白上的 Gap:非语言上的同义。如用户表述口语化“学吉他”,商户形容书面化“吉他培训”;用户输出不齐全匹配商户名:“希尔顿大酒店”(商家更常见的形容为“希尔顿酒店”)。
- 场景拓展:例如“摘草莓”在美团的搜寻场景下,用户基于对平台的认知对应需要是“草莓园”。
- 其余漏召回问题:局部的多字少字、纠错等问题,如“屋宇扫”对应“家政保洁”的需要;实践上查问改写能够通过减少改写词解决所有漏召回问题,诸如“冬日四件套”包含“冰糖葫芦、烤地瓜、炒栗子、热奶茶”这类有时效性的网红概念,也能够通过改写进行解决。
2.2 美团搜寻场景下查问改写信号的难点和挑战
搜寻是在用户搜索词以及供应两方面束缚下尽可能进步用户触达效率以及商业化指标,而美团的搜寻场景减少了“地区”第三个束缚。具体的行业对比方下图所示:
通过比照行业内搜寻场景能够发现,美团的搜寻场景下用户需要和服务商家大多是面向本地,而生存服务畛域业务十分细碎,绝对用户对生存服务某个畛域的需要而言,本地化供应绝对较少。
与此同时,美团搜寻还聚合了多种履约模式的后果,搜寻后果中会有团购、外卖、买菜、优选等业务的天然后果聚块,以及在本地相干业务均无后果时的举荐后果聚块。在无限的曝光地位下,每个天然后果聚块的不相干的后果会挤占其余聚块的收益,因而不能依赖排序解决相关性问题。这就要求美团搜寻场景的查问改写在多个业务场景下要强相干且高效率,算法层面须要解决笼罩问题、准确率问题以及多业务问题。以该要求为出发点,在具体算法迭代时查问改写还面临以下两方面挑战:
① 对用户的查问面临着简单的需要场景
- 语言歧义状况多:短 Query 减少了歧义的可能性,例如在美团场景下“剪个头发”是一个商户名,不能改写为“理发”;雷同 Query 在不同城市含意不同,如“工大”在不同城市指代的学校不同。
- 认知关联性:用户的搜寻人造有对美团平台“找店”的认知,须要相似“配眼镜”等同于“眼睛店”的场景关联常识。
- 场景多:随业务的倒退,主观需要增多,查问改写承接的场景越来越多、越来越精密,目前,曾经接入餐饮、到综、酒店游览、外卖、商品、广告等多个业务场景。
② 对平台的供应须要兼顾供应建设特点和倒退阶段
- 美团商户大部分不会做关键词 SEO(Search Engine Optimization):文本不匹配导致的漏召回问题更为严重,对改写的需要很大。
- 商户的外露模式导致实在交互用意不明确:大部分商户同时提供多种菜品、商品、团单服务,例如,一个音乐培训机构往往提供多种乐器的培训课程。
- 与业务特点和倒退阶段强关联:美团是一个聚合生存服务方方面面的平台,并且各业务对改写的需要不同,对于一些重交易的业务来说弱相干的改写能够承受,而对一些重体验的业务来说,对改写的要求更严格,须要肯定的区分度。
3. 技术选型
下图 4 总结了目前查问改写迭代的技术框架以及对应解决的问题。咱们在各个子外围模块如离线候选开掘算法摸索、语义关系判断模型、向量化召回、在线生成改写词有较为深刻的摸索。除信号自身迭代,在信号的应用上也通过改写分级信号退出排序、召回相关性等做联动获得了不错的线上收益。
上面,咱们将从离线到在线全面的介绍查问改写工作下的各模块技术的迭代。
3.1 原始语料开掘
高质量的数据能够显著改善头部流量的改写成果,并且决定了后续模型性能的天花板。在候选集生成方面,基于搜寻日志的开掘、基于翻译思维、基于图计算、基于 Embedding 都是工业界和学术界罕用的办法;在候选集过滤判断方面则有句间关系分类、Embedding 类似度计算等办法。咱们联合美团搜寻场景总结了各个办法的优缺点,并在每个开掘算法组件都联合了用户行为和语义两方面信息,下文将对离线语料开掘做具体介绍。
3.1.1 搜寻日志开掘候选语料
搜寻日志开掘是工业界罕用的同义词获取伎俩,开掘的次要方向有:
- 用户搜寻后点击独特商户: 利用两个点击雷同 Document 的 Query 构建相干关系。这种相干关系能够开掘到大量词对,但这种简略的假如毛病也很显著,点击共现的 Query 可能有不同水平的漂移。在美团场景下提供综合服务的店铺很多,会有两种类型团单大量呈现在雷同商户下的状况,开掘到“拔牙”→“补牙”这种有语义漂移噪声的可能性更大。此外,这个办法依赖现有搜寻的成果,无奈开掘到无后果 Query 的改写词。
- 从搜寻 Session 中开掘: Session 是指用户在一段时间内“关上 App→多个页面的浏览,多个性能的点击、领取等行为→来到 App”的一次交互过程。该办法是利用用户在整次 App 拜访过程中间断输出的 Query 来构建相干关系。Session 开掘依赖搜寻后果水平低,因而泛化能力更强。但相应的毛病是,Session 工夫切割不好确定,并且序列中每个搜索词之间的关联形式比拟荫蔽,甚至可能没有相干关系。须要联合业务特点设计时长、引入点击(例如一次 Session 在有点击前的搜索词都无点击,可能是有具体需要未被满足)等条件做开掘。
- 词对齐: 词对齐借鉴了翻译的思维,具体方法是将 Query 召回的商户题目去除了商户名局部后残余的局部做为平行语料,设计一些对齐策略如字对齐(蕴含雷同的字)、拼音对齐(雷同拼音)、构造对齐(分词后词地位雷同)。该办法的毛病是强依赖于现有搜寻的成果。
- 商户 / 商品内 SEO: 商品场景下,局部商家上架时会做 SEO,如:“加长 狗狗牵引绳 狗绳 狗项圈 遛狗泰迪金毛宠物大型中型小型犬 狗链子”。这一类开掘起源的毛病是有比拟大的噪声,并且乐音关联性较大比拟难分辨(存在上下位类型、同位词类型、舞弊等乐音类型)。
以上简略办法均能够开掘到大量相干词对,但基于的假如和设计的规定都很简略,优缺点都非常明显。上面介绍几种优化的开掘办法。
3.1.2 基于图办法开掘
图办法如经典的协同过滤以及 Graph Embedding 等,在举荐场景中通过利用用户和 Document 的关系构建图构造来举荐更类似的 Document。在搜寻场景下用户的搜寻 Query 以及平台的 Document 通过点击、下单等形式同样也能够建模成图构造。在美团搜寻的应用场景下,咱们对构图形式做了如下两个改良:① Query 和 Document 之间的边权重应用 Query 点击 Document 的点击次数和点击率进行 Wilson 平滑的后果,而不只是 Query 点击 Document 的次数,从而进步相关性;② 在二部图中,将用户在 Session 中自行改写的 Query 也视为 Document 节点,与点击的 Document 题目一起进行构图,从而进步开掘的数据量。
咱们晚期用 SimRank++ 算法 [2] 验证了构图形式两个优化点的可行性,SimRank++ 算法是一种同构信息网络中的类似度量算法,它的思维是:如果两个用户类似,则与这两个用户相关联的物品也相似;如果两个物品相似,则与这两个物品相关联的用户也相似。该算法的长处是能够应用 Spark 进行大规模全局优化,并且边权重能够依据须要调整。优化构图后人工评测 SimRank++ 优化前后查问改写数据量晋升了约 30%,同时准确率从 72% 晋升到 83%。
后续,咱们用雷同的思路尝试了其余图神经网络模型(GNN)。DeepWalk[3]在结构 Sentence 上下文采纳随机游走的办法。随机游走个别是将 Query 之间的关系建设成图,通过从一个点随机游走,建设起多条门路,每条门路上的 Query 组成一个句子,再应用上下文相干原理训练 Query 的 Embedding。随机游走的长处就是关系具备传递性,和 Query 共现不同,能够将间接关系的 Query 建立联系。大量的数据通过游走可能产生够多的训练数据。例如在 Session1 中用户先搜寻 Query1 后改为 Query2 再查问,在 Session2 中用户先搜寻 Query2 后改为 Query3 再查问,共现的办法无奈间接建设 Query1 和 Query3 的关联关系,而随机游走可能很好地解决。在改写词开掘工作中,基于图的办法相较于间接从搜寻日志开掘词对的办法,开掘的效率和准确率均有所晋升。
3.1.3 基于语义向量开掘
在 word2vec[4]后,Embedding 的思维迅速从 NLP 畛域扩散到简直所有机器学习的畛域,号称“万物皆可 Embedding”,只有是一个序列问题均能够从上下文的角度示意其中的节点。此外,Embedding 在数据稠密性示意上的劣势也有利于后续深度学习的摸索。将 Query Embedding 到低维语义空间,通过计算 Embedding 间的类似度查找相干词,在开掘类似词的工作中是常见且易于实际的开掘办法。除了简略的在用户评论等语料上训练大规模词向量外(即图 7a),在实践中还尝试了以下两种构建上下文的办法:
- 通过 Query 召回商户构建 Doc2Vec[5]:通过 Query 召回或点击的商户作为上下文训练 Embedding 表征 Query(即图 7b)。因为美团场景下同一商户提供的服务、商品繁多,该办法在没有思考 Query 自身类目用意的状况下,噪声比拟大。
- 通过用户 Session 构建改写序列[6]:通过一个 Session 序列作为上下文训练 Embedding 表征 Query(即图 7c)。该办法的长处是无效的利用了用户自行换词的限度条件,开掘覆盖率和准确率都绝对更高。
设计不同的上下文构造失去 Embedding 后,为了进一步提高准确率后续的根本的步骤是:① 训练语料通过分词后,利用 fastText 训练 Query 的词向量,fastText 训练时思考了字级别的 Ngram 特色,能够将未登录 Query 的字、词 Embedding 进行简略求和或求均匀,解决 OOV(Out-Of-Vocabulary)的问题;② 在指标词表中,用词向量示意该词;③ 利用 LSH,查找向量 cosine 类似度高于肯定阈值候选词,或应用 DSSM 双塔模型[7],通过有监督训练进步精度;④ XGBoost 联合特色工程进一步过滤。
BERT[8]自提出以来粗浅扭转了自然语言解决畛域的钻研利用生态,咱们尝试了一些应用 BERT Embedding 的办法,其中比拟无效的是通过 Fine-Tuning 的 Sentence-BERT[9]或 SimCSE[10]模型获取词向量。
BERT 计算语义类似度是通过句间关系上游工作实现的,办法是用特殊字符将两个句子连接成一个整体做分类,带来的问题是应用时须要两两组合造成大量冗余计算,因而不适宜做语义类似度搜寻或无监督聚类工作。Sentence-BERT 借鉴了孪生网络模型的框架,将不同的句子输出到两个参数共享的 BERT 模型中,获取到每个句子的表征向量,该向量能够用于语义类似度计算,也能够用于无监督的聚类工作。
咱们实际的办法根本与 Sentence-BERT 思维大致相同,应用下图中左图的办法结构有监督的改写对训练数据,用右图的办法在不同用意类型的历史搜寻 Query 进行向量计算。
相比于后面的办法,双塔构造 BERT 的办法捕获语义的能力更强,并且有监督训练的形式联合一些模型构造上的调整,可能缩小各类漂移重大的 Case。此外 Sentence-BERT 不依赖统计特色和平行语料,在任何业务上均能够比拟不便的迁徙和 Fine-Tuning,对一些冷启动的业务场景十分敌对。在此基础上利用 Faiss[11]向量检索办法构建离线检索流程,可能反对在亿级别候选池中高效检索,通过该办法构建的改写候选能达到千万甚至亿级别数据量,且实测准确率较高。近几年的比照学习等办法在文本示意畛域一直刷新榜单,从向量构建和向量交互方式等方面均可做继续的摸索。
3.2 语义判断模型
3.2.1 BERT 语义判断模型
从以上多个路径的开掘办法中能够失去千万级别的类似词对,但依然有大量语义漂移的 Case,其中近义词漂移问题最为重大。起因是 Embedding 基于雷同上下文的假如太强,而近义词的上下文很类似,包含在商户和商户类目标上下文(一个商家通常会提供多种服务)以及用户 Session 换词的上下文类似(用户在某一类用意下屡次浏览用意下的概念),因而很容易挖掘出“大提琴”→“小提琴”这种同位词 Case,并且加大了从用户点击行为或用意分类等其余维度过滤顽劣 Case 的难度。
而图办法因为侧重于关联性而疏忽了语义漂移问题,在一些搜寻量小的 Query 节点上边关系较少,导致比拟如“电动车上牌”→“电动车专卖”等 Case,并且类似度分数没有相对意义。为了从语义维度过滤相似的疑难 Case,咱们通过引入 BERT 的语义信息来解决这类问题。BERT 应用预训练 + 微调的思路来解决自然语言解决问题,模型特点除网络更深外,双向语言模型的设计思路能够更好的利用上下文信息防止同位词漂移问题。上面介绍查问改写工作中对 BERT 句间关系工作做的一些摸索。
在 BERT 提出之初,咱们用开掘数据和大量人工标注数据在美团场景语料预训练的 MT-BERT[12]做句间关系工作的两阶段 Tuning。而在实践中发现在现有开掘数据上训练失去的模型在某些 Case 区分度不高,如咱们之前提到的“大提琴”→“小提琴”以及“葡萄酒”→“葡萄”这类字面编辑间隔不大的 Case。因而如何构建高质量的正负例数据是迫近 BERT 在查问改写工作性能下限的要害。
咱们首先尝试的是一种协同训练的办法,协同训练是一种半监督的办法,它关注的问题是如何在有标记数据较少时利用大量的未标记数据来改善模型性能。思考到离线开掘数据乐音较大,咱们摸索了 NMT(Nature Machine Translation)和 MT-BERT 协同训练的办法,达到同时进步数据品质和模型品质的成果,整体零碎的框架图如下:
整个协同训练的流程是:
- Step1 BERT 判断模型产出 NMT 训练数据: 将通过离线开掘平行语料 Fine-Tuning 后的 MT-BERT 模型在全量待预测数据上预测,设置肯定阈值后返回高质量正例交给 NMT。
- Step2 NMT Fine-Tuning: 在 BERT 返回的高质量正例中退出局部人工标注数据,作为 NMT 模型训练数据进行训练,取得 NMT 模型和指标。
- Step3 NMT 产出判断模型训练数据: 随机抽选肯定数量的 Query 用 NMT 模型生成 TopN 个改写词对,产出下一阶段 BERT 判断模型 Fine-Tuning 数据。
- Step4 BERT 判断模型 Fine-Tuning: 用 Step3 生成的数据取头部 K 个词对作为正例,尾部 X 个词做负例,对 BERT 判断模型做 Fine-Tuning。
- 循环以上步骤直至收敛:循环迭代上述步骤,直到单方模型在评测集上收敛。
在理论试验中,协同训练在迭代 3 轮后收敛,在人工构建的 Benchmark 汇合上前两轮 BERT 和 NMT 成果晋升显著,最终的成果显著好于间接应用训练样本 + 人工标注数据 Tuning。
协同训练能够无效解决“葡萄酒”→“葡萄”等字面文本类似度较高的 Case,但噪声数据频率较高的“马琴”→“二胡”这类字面匹配不显著,上下文比拟类似的同位词 Case 依然存在。这里应用了关系抽取的办法针对性的开掘了这类疑难 Case。例如针对同位词负例的开掘应用了一些 Pattern 的办法,开掘 UGC 中提到“如 A、B、C 等”相似的句式,通过过滤后结构高质量的同位词负例数据。通过负例数据的优化,模型准确率失去进一步晋升。
最终,BERT 语义判断模型的训练过程分为四个阶段:① 无监督:应用美团场景的语料在 BERT 模型根底上进行 Continue Train;② 半监督:应用算法开掘的数据进行 Co-training Tuning;③ 样本加强监督:应用人工开掘的高质量负例 Tuning;④ 应用人工标注的数据做最终的 Tuning。最终模型的准确率达到了 94% 以上,解决了大量语义漂移 Case。
3.2.2 针对商品的 BERT 语义判断模型
随着美团业务场景的丰盛,电商类型的搜寻和供应流量占比开始变高,商品畛域的误改写问题开始增多。通过剖析用户 Query 和改写的 Case 发现上述模型不能很好的迁徙到商品畛域中,次要的起因除了训练数据的笼罩外,商品搜寻场景下用户搜寻商品对应改写的要求是同一事物,对改写的准确率要求更高,而是商户场景用户表白的是需要,对应改写的要求是表述需要雷同即可。此外从 Document 角度看,商品召回字段较繁多,不存在商户搜寻时一个商户对应多种服务的问题,场景简化后算法空间是比拟大的。因而独自对商品畛域的改写判断模型做了优化:
- 训练数据构建:商品改写模型首先要解决的是没有训练样本的问题。应用 SPU 共现、向量召回等规定办法,继续跟进质检标注数据等人工办法,通过类目组合、点击、UGC 构建艰难负例等开掘办法,最终构建了数百万高质量训练数据。
- 数据加强:在模型训练的采样过程中应用 Random Negatives、Batch Negatives、Hard Sample Negatives 等办法,加强模型对误改写的辨认能力和鲁棒性。
- 模型构造优化 :对 Baseline 的句间关系 BERT 做了模型构造上的摸索,尝试了 R -Drop[13] 和 Child-tuning[14]晋升模型表达能力。总体 F1 晋升了 2.5PP。
- 图向量交融 :尝试基于搜寻后果结构图模型的办法,联合线上理论搜寻后果加强判断能力。通过对线上召回商品题目做实体辨认,并将各个实体作为节点与 Query 一起构图,以预测 Query 到召回实体的边类型为指标,应用 GCN[15] 和 GAT[16]办法产出的 Graph Embedding 通过向量 Pooling 的办法融入 BERT 句间关系判断模型中,最终 F1 晋升 1.6PP,解决了“宝宝”改写为“娃娃”误召回“玩具娃娃”这类歧义性问题。
3.3 在线服务
通过以上几种开掘伎俩,联合判断模型进一步提高准确率后可能失去数据量约千万级别的高质量改写对。但线上词典的利用形式泛化效率低下,下文会论述如何通过线上模型进一步提高查问改写的整体成果。
美团查问改写线上有以下几种计划:(1)高精度的词典改写;(2)较高精度的模型改写(统计翻译模型 +XGBoost 排序模型);(3)笼罩长尾 Query 的语义 NMT(神经网络翻译模型)端到端生成改写;(4)笼罩商户名搜寻流量的在线向量化检索。
词典改写是业界通用的办法,须要留神的是同义词替换须要联合上下文信息,比方“百姓”和“平民”独自看是能够同义的,但在“百姓大药房”和“平民大药房”中则是一个重大漂移的改写,在对词典改写类型分类后联合实体辨认信息设计策略能够解决大部分此类问题。上面的篇幅将对美团搜寻查问改写的后三种在线模块别离做介绍。
3.3.1 SMT(统计翻译模型)
通过离线开掘改写 Query 的形式存在的问题是笼罩有余,然而一个 Query 里蕴含的短 Term 能够进行改写,例如生存服务畛域常见的例子:“XX 坏了”=“培修 XX”。从这个角度思考能够将查问改写工作形象为一个典型的机器翻译工作。可设定 $f$ 为用户搜索词,$e$ 为指标改写词,SMT 整体能够形象为一个噪声信道模型,依据贝叶斯公式求解 SMT 公式推导:
$$ \tilde{e} = arg \underset{e \in e^*}{\,max\,}p(e|f) = arg \underset{e \in e^*}{\,max\,}p(e|f) \frac{p(f|e)p(e)}{p(f)} = arg \underset{e \in e^*}{\,max\,}p(f|e)p(e)$$
其中失去的两个概率 $p(f∣e)$ 即为概率转移模型,$p(e)$ 为语言模型。由此将改写模型拆分为两局部,联合已有的千万级别平行语料失去词对齐候选,别离训练 Decode 模型(概率转移模型)和语言模型。在理论的构建过程中针对遇到的 Case,对模型的细节做了一些定制优化:
- 对齐字典过滤: 因为平行语料的乐音,以及对齐产生的谬误数据,咱们应用离线训练的 BERT 语义判断模型联合规定(例如两个 Term 散布的类目穿插熵,是否相互蕴含等维度的特色)对生成后的对齐词表做了过滤优化。
- 结构化 Decode 模型: SMT 的 Decode 采纳的是 BeamSearch 算法,BeamSearch 的参数次要分为两局部:(1)映射概率的参数,在对齐词表的 score 根底上独自增加了一些掂量两个 Term 之间的类似度特色;(2)转移概率的参数,在语言模型根底上增加了 Term 联合度的信息。
- 排序模型: 改写的最终目标是召回更多相干且优质的商户、商品和服务,因而在失去大量的 SMT 生成的改写后果后,依然要思考两方面的问题,一方面是语义相关性,另一方面是有效性。解决的计划是引入 XGBoost 排序模型,应用的特色同时思考语义相关性和改写词召回后果维度的业务统计成果。在语义相关性方面应用的特色包含原词改写词各自的点击特色、文本特色;候选对的文本编辑间隔、文本语义类似度分数、Session 转移次数以及工夫距离等。在有效性方面引入了地区和流行性两方面信息,包含在 Document 和 Document 类目两个维度的曝光、点击、下单等共现特色。排序模型取 Top3 的优质改写,缩小了搜寻检索索引压力的同时能无效保障改写词召回当地优质相干后果。
最终,线上的整体框架相似业界经典的的 Learning to Rewriting 框架[17-18],模型上线后对线上的有改写流量笼罩占比有近 12% 的晋升,在 QV_CTR 等指标上取得了十分可观的收益。
3.3.2 NMT(神经网络翻译模型)
在线上引入同义词替换、SMT 统计翻译改写后,线上有改写的流量覆盖率靠近 70%。但在中长尾 Query 中依然有笼罩有余的状况,次要由以下两类问题导致:
- 分词粒度引入的开掘效率问题:无论是同义词替换或是基于更短 Term 的 SMT 翻译改写,都对分词后果和候选有肯定依赖。而中文同义的粒度往往只是某一个字的变换,例如“学 XX”→“培训 XX”,且在单字维度的改写容易造成 Case,同时不可能将所有的“学 XX”开掘进去达到晋升笼罩的目标。
- 语义相近不能对齐的简单 Query 改写问题:用户在输出一些自然语言的 Query 时,如:“哪里有便宜的手机卖”在商家侧则是“手机优惠”,基于词片段候选的办法泛化能力较弱,不能解决相似的问题。
从以上问题登程,须要一个不依赖候选的生成式改写模型,咱们思考应用深度语义翻译模型 NMT 来解决这类问题。
2016 年年底 Google 颁布的神经网络机器翻译(GNMT)[19]宣告了神经网络机器翻译性能超过 1989 年的 IBM 机器翻译模型(SMT,基于短语的机器翻译模型)。推动这一微小倒退就是引入 Attention 机制 [20] 的 Sequence to Sequence(Seq2Seq)的端到端模型。但在理论的应用中发现,NMT 生成的改写词存在不合乎语义(生僻或不通顺)以及改写有语义漂移两个问题,导致在线上新增改写的无效比例低,甚至会导致重大的漂移 Case。因而要引入 NMT 做改写必须联合搜寻的应用场景对以上两个问题做优化,指标是生成无用意漂移、可能产生理论召回影响的改写词。基于以上问题剖析和思考,通过引入环境因素疏导 NMT 生成更高质量的改写是大方向指标,从这个角度登程咱们调研了强化学习的办法。
强化学习的过程是一个智能体(Agent)采取行动(Action)从而扭转本人的状态(State)取得处分(Reward)与环境(Environment)产生交互的循环过程。咱们心愿借助强化学习的思维,将预训练的 NMT 改写模型作为 Agent,在强化学习迭代的过程中其生成的改写(Action)通过搜寻零碎(Environment)产生最终的曝光和点击(Reward)来领导 NMT 优化模型参数(State)。
通过进一步调研,咱们参考了 Google QA 零碎 [21] 以及知乎的工作[22],即通过强化学习的办法,把搜寻零碎当做一个 Environment,改写模型当做 Agent,从而将大搜的后果品质思考进来。但因为美团场景下的排序与地位、用户等排序因素强相干,将整个大搜作为 Environment 将改写词召回向前排序的反馈机制不可借鉴,并且申请在线排序会导致训练速度慢等一系列工程问题。联合 NMT 理论的体现,思考优先保障生成改写的语义类似度,应用大搜召回日志联合 BERT 语义判断模型做 Environment,指标为原词改写词在搜寻零碎交互中的商户汇合的穿插度和天然语义类似度。最终整体的框架图如下所示:
上面具体介绍算法模块设计和流程:
Step 0 预训练 NMT 生成器
- 模型:生成器应用预训练的 NMT,模型构造是经典 Seq2Seq 模型。思考到理论搜寻场景下用户搜索词较短,应用了基于字切分的初始化 Embedding,并且在 Encoder-Decoder 之间引入 Attention,Attention 机制能够很好地代替在 SMT 外面的对齐机制,十分合乎查问改写的工作背景。此外,咱们还应用了通过美团语料 Fine-Tuning 的 BERT 初始化 Encoder,这样做的益处是引入更多的语义信息且模型收敛较快。
- 预训练数据:预训练在整个零碎中是十分重要的,因为应用离线历史日志模仿搜寻零碎,在强化学习过程中若生成器产生的改写词都十分生僻会导致 Reward 稠密,最终零碎不能收敛或成果没有优化。因而,咱们在数据方面做了以下优化,思考到 NMT 做改写的劣势是语义泛化,咱们从上述离线开掘失去的数据去除了商户名地址等专有名词别名;在整体的训练中强化学习会对改写词和原词一样的后果做“惩办”,带来的结果是局部专有名词如一些固定叫法的商品名等改写为有漂移的其余商品,因而在训练数据中退出了大量商品名的原词改写对,限度模型在这一类 Query 的泛化能力。
- 模型优化:查问改写中的短 Query 翻译在实践中发现容易呈现过翻(一直反复翻译某一些词语)和漏翻(翻译过程中会漏掉一些词语)问题。过翻的起因有两种,一是因为训练语料乐音或训练不充沛,二是翻译过程中呈现 OOV 的状况下,因为 NMT 是序列问题,前面的翻译过程会损失信息,从而导致过翻。解决过翻问题的办法除了丰盛和优化训练数据外,还引入了 Coverage(覆盖率)机制。即为每个源端词保护一个 Coverage Vector 来示意这个词语被翻译的水平,在解码过程中该覆盖率信息会传入 Attention Model,从而使它可能更加关注未被翻译的源端词。漏翻的问题则是因为训练语料中有大量一对多的改写对,导致 NMT 无奈学习到精确的对齐信息,通过在强化学习中引入编辑间隔来解决这类问题。
Step 1 原词改写词输出环境计算反馈
从用户角度登程,好的改写词应该是语义雷同、改写词新增召回的商户与原词召回商户很类似,并且用户在点击的商户散布上应该是比拟统一的。此外,从改写的有效性登程,改写词须要是通顺的、有较丰盛召回后果的热门搜索词。从下面的剖析中得出,满足类似度高的改写应返回正反馈,不类似、不通顺改写词应返回负反馈。因为将环境分为两个局部,离线搜寻日志模仿搜寻零碎以及 BERT 语义判断零碎,别离从搜寻零碎和用户的交互以及语义判断两个角度对产生的 Action 做出反馈。
- 离线搜寻日志模仿搜寻零碎:离线搜寻日志中蕴含一次搜寻中,搜寻零碎最终曝光的商户列表以及用户在列表上的点击行为,通过收集较长一段时间的搜寻日志,咱们假如历史 Query 足够丰盛,贮存历史 Query 的召回商户 ID 列表和用户点击商户 ID 列表两张宽表,在强化学习过程中通过在这两个宽表上检索出原词和 NMT 生成改写词的历史召回商户 ID 列表和历史点击商户 ID 列表,能够将这个过程比作检索召回和点击两个维度的 One-Hot 向量表征检索词,通过计算这两个向量的重合度失去召回类似度和用户动向类似度的数学表征。通过这种办法咱们看似失去一个较正当的环境输入,但仍存在几个问题,一是原词不在历史 Query 中的特色缺失状况,咱们对 NMT 改写到原词设计了较小的固定正反馈解决该问题;二是改写词不在历史 Query 中的状况,咱们认为改写词不同于原词不应该是生僻的,因而对查找不到改写词的状况给与了一个固定的负反馈。此外还对类似度的计算做了 Sigmod 平滑,捕获更大的变动梯度。
- BERT 模仿语义判断零碎:有了模仿搜寻零碎为什么还须要语义判断?起因是用户在商户列表页的点击不肯定齐全代表其用意。一方面是后面提到的,一个商户可能具备多个语义并列的服务。如大部分口腔医院都提供“拔牙”和“补牙”的服务,在这两个搜索词的商户召回和点击穿插是很大的;另一方面在现有的搜寻零碎中可能存在谬误的改写,尤其是改写词是热门搜索词或原词的子串时,用户的点击可能因为图片或商户比拟热门产生点击,这样的点击并不代表用户的原始用意。因而在强化学习零碎引入语义判断的信息,从而防止这类搜寻零碎和用户行为脱漏的问题,并且也能够在肯定水平上解决 Reward 稠密问题。
Step 2 打分器对环境产生的反馈做权重加和。
依据环境给的反馈分数基于权重叠加后生成归一化的 Reward,这里依据业务场景和理论问题做了多轮迭代,设计了加权的反馈打分器,别离给搜寻、用户行为、语义判断、字面匹配度几个方面不同的权重,最终归一化到 0 - 1 之间作为最终的反馈。
Step 3 迭代打分器后果到生成器持续训练的 loss 中。
依据打分器的分数将 Reward 叠加在 NMT Fine-Tuning 的模型 Loss 中,这里比照了几种办法,其中 Google 用 Batch 的均匀句子长度对加和均匀的 Loss 做归一化叠加形式成果最好。
- 在强化学习的 Query 语料上反复 1~3 步骤,直到模型收敛。
通过上线后的成果剖析,引入强化学习的 NMT 能够解决语义类型改写(挑筋→拨筋,劳动争议→劳动纠纷,柴火烧→柴火灶),生僻的简写(法甜店→法式甜点,足指→足部指甲),输出谬误导致的简写(瑜教练→瑜伽教练,桑洗浴→桑拿洗浴),自然语言类型 Query 去词(染发剂哪里买→染发剂,祛斑哪家医院好→祛斑医院)。
总体来说,强化学习可能在生成改写词的品质上有肯定的晋升,尤其在相关性方面引入了搜寻零碎和用户的反馈后改写的精度和效率有较大晋升,离线评估准确率由 69% 晋升至 87%,在线上进步简单长尾 Query 改写笼罩的同时不会引入影响用户体验的顽劣 BadCase,在整体美团搜寻长尾 Query 的 QV_CTR 等指标上获得了较好的收益。
3.3.3 在线向量化召回
向量化召回随着 Sentence-BERT,SimCSE 等向量示意办法近期在学术界的刷榜,逐步有越来越多的公司开始尝试大规模利用起来,如 Facebook[23]、淘宝搜寻 [24]、京东[25] 等。得益于预训练模型表达能力强等特点,比照传统的 DSSM 等办法有更好的泛化能力和准确度。
在改写场景应用向量召回还有两个长处:一方面 Query 和改写词较短且长度相近,并且语义和类型较统一,参数统一的双塔即可保障肯定的准确率;另一方面改写词从候选池中检索进去而不是生成,能够管制改写词的有效性以及限度语义类型。通过剖析美团搜寻的漏召回问题发现商户名精搜漏召回问题较大,此外思考到美团场景下,商户提供的服务丰盛、Document 端文本较长用意较扩散的问题,咱们先在商户用意下文本不匹配导致的少无后果问题中尝试了向量化召回(下文称为“含糊改写”)并获得了十分好的成果,上面将进行具体介绍。
首先对这类 Case 做演绎总结,认为含糊改写要解决的问题是:用户有明确商户用意时,因文本不匹配,或 NER 切分谬误导致无后果、漏召回问题,这类 Case 用户用意明确但 Query 表述含糊。例如:搜寻“九匠和牛烧肉”未召回 POI“九匠精酿烤肉”、搜寻“宁波莱斯小火车”未召回 POI“宁波火车来斯主题公园”。这类问题混合了多种文本变体,难以在现有结构化召回框架内解决。确定问题的边界后,总结这类 Case 有以下特点:(1)Query 是多变的,但商户名召回池是无限且确定的;(2)Query 和商户名文本长度较短,非常适合向量化召回算法;(3)能够解脱现有布尔检索召回框架的限度,防止简略文本匹配导致漏召回。因而咱们制订了以向量召回为根底的含糊改写流程:
上面会着重介绍含糊改写的外围模型以及线上服务解决流程两局部。
模型构造: 模型构造采纳双塔 Query Tower $Q$ 和 POI Tower $P$,对于给定的 Query 和 POI,公式中应用 $q$ 示意输出 Query 文本,$p$ 示意输出 POI 题目文本,模型计算过程为:
$$f(q,p)=G(Q(q),P(p))$$
其中 $Q(q)$ 示意产出 Query Embedding 的 BERT 塔,$P(p)$ 示意产出 POI 题目文本 Embedding 的 BERT 塔,$G$ 示意打分计算函数,比方 Inner Product、L2 distance 等。
向量 Pooling: 依据 BERT 模型各层越远离上游工作泛化能力越强的个性,通过屡次试验验证应用倒数第二层向量做 Avg Pooling 后输入的后果有更高的准确率和召回率。
Negative Sampling: Facebook 在论文《Embedding-based Retrieval in Facebook Search》[23]中强调了负样本分布的问题。咱们在负采样上有三局部:Random Negatives、Batch Negatives、Hard Sample Negatives,并减少了一组超参来调整三者的比例。Random Negatives 越多,召回商户品质较高但相关性会有所降落;Batch Negatives 参考了 SimCSE 的做法,减少后相关性有所晋升;Hard Sample Negatives 是通过规定筛选了一批商户名文本上很类似的不同商户,以及退出谬误的改写、纠错对,以较低的比例退出每一轮的训练中,进一步晋升相关性表白。
Loss 函数: Loss 选用了 Binary Cross-Entropy 的 Pointwise Loss 函数,起因是对于有规范商户名 Label 的状况下,模型预测改写商户名“相对正确”的性能好于 Pairwise 预测“绝对正确”的改写商户名。在理论的比照试验后果中也体现了这一点。
线上服务搭建: 如图 12 所示,线上分为前置流量划分模块、Query 端的在线文本向量化、ANN 向量检索以及后置规定四局部。
- 前置流量划分模块:前置流量划分模块管制含糊改写服务调用逻辑,仅在商户名搜寻用意下传统文本召回无后果时调用。一方面保障成果,另一方面缩小对上游 TFServing 向量预测服务和向量检索服务的流量压力。
- Query 端的在线文本向量化:预训练模型的线上性能始终是困扰大型 NLP 模型在搜寻零碎落地的艰难之一。模型上尝试了 Faster-Transformer,并将模型转为 FP16 精度进行减速。工程上除整体服务的缓存外,思考到 Query 向量与城市无关,在这一模块也设计了一层缓存,进一步缩小实时调用。
- ANN 检索:向量检索应用了美团搜寻团队自研的 Antler 向量检索引擎,该服务基于 Faiss 库封装,实现了 IVFFlat、HNSW 等向量检索算法,并反对分布式向量检索、实时索引、多字段分片、向量子空间、标量过滤等检索能力,对含糊改写在不同城市检索不同的 POI 库提供了高性能的多字段检索反对。ANN 的参数调整同样对整体成果有高低 2PP 的影响。
- 后置规定:通过设计编辑间隔等简略文本过滤规定和简略的词权重策略,优先保障商户名的外围局部的相关度,进一步提高含糊改写的成果。
含糊改写我的项目上线后,对“九匠和牛烧肉”未召回 POI“九匠精酿烤肉”这类指标 Case 解决很好,在用户搜寻商户名时呈现换字、多字、少字的状况泛化能力很强,并且训练数据中退出同义词替换后也解决局部同义字、同义词替换的漏召回问题。从线上成果看,QV_CTR、无后果率以及长尾 BadCase 等指标上均有较大收益,无效改善了这部分流量的用户搜寻体验。
除积攒了向量检索的算法工程教训外,咱们总结这个我的项目的胜利之处在于通过一系列问题发现和问题分类的伎俩界定了清晰的问题边界,并做了适合的技术选型,应用用意信号限度利用范畴对向量召回取长补短,最终收益超出预期。向量检索近几年在业界各大公司均有尝试,咱们认为在非商户名搜寻流量以及商品搜寻流量上还有微小的开掘空间,联合美团场景中商户多字段、多服务、多业务的难点,模型的变体有十分多可尝试的点,咱们会在后续的文章介绍在线向量化检索方向的摸索,敬请期待。
3.4 查问改写服务能力平台化
查问改写我的项目通过上述介绍的迭代,在美团搜寻不同倒退期间均奉献了不错的业务收益。并且随着技术影响力的扩充,逐渐与公众点评 App 搜寻、外卖 App 搜寻、搜寻广告等业务方建设了单干,在美团搜寻的商品、外卖、酒店游览等业务积淀了相应的数据和技术能力。与此同时,各业务也依据本身的倒退阶段和业务特点对查问改写提出了一些独有的需要,对此咱们把查问改写的外围性能做了形象,整个技术框架的倒退方向为:
- 数据精细化:数据层面辨别几个外围业务,提供的词关系包含同义、上下位、同位、不相干等语义维度,搜寻召回应用同义词下位词,举荐广告等还能够思考应用同位词,不相干词则提供给相关性或排序模型做训练负例。在继续的开掘过程中通过模型和人工校验分出不同精度的数据,用于排序特色也取得了超出预期的收益。
- 算法工具化:在数据量覆盖率方面提供全面的算法开掘工具,在语义判断方面一直迭代模型精度,并联合利用场景解决短文本的歧义性问题,跟踪和摸索业界前沿办法。
- 在线服务可运维:在线服务方面反对疾速的业务接入、在线 AB 试验和干涉等。
4. 总结与瞻望
本文介绍了美团场景下查问改写工作上的摸索和实践经验,在垂直畛域搜寻召回这一课题上结合实际业务场景和用户需要摸索了语义判断模型、语义检索模型、图模型等前沿算法技术,积攒了生存服务畛域短语关联认知数据。其中在离线数据局部介绍了策略、统计翻译、图办法和 Embedding 等多种技术角度的开掘办法,并对总结了各个办法在实际过程中的出发点、成果和优缺点。在线模型方面联合垂直畛域搜寻的结构化检索特点,设计了高精度的词典改写、较高精度的模型改写(基于 SMT 统计翻译模型和 XGBoost 排序模型)、笼罩长尾 Query 的基于强化学习办法优化的 NMT 模型、针对商户搜寻的向量化召回四种线上计划。
目前,在美团 App 搜寻中有改写流量占比约 73%,在公众点评 App 搜寻有改写流量占比约 67%。构建的查问改写能力和服务平台反对各个业务频道内搜寻以及搜寻广告平台等,并获得了不错的收益。当初查问改写服务高峰期集群 QPS(Query Per Second)曾经达到了 6 万次 / 秒,咱们会进一步投入研发,晋升公司内乃至业界内的技术影响力。
如何更好地连贯用户战争台上的服务、商家、商品是一个须要长期和多方面投入解决的问题。咱们将来可能会进行以下几个方向的迭代:
- 进一步摸索向量检索:在生存服务的场景下,用户的需要战争台上提供的服务都是宏大的,且会越来越粗疏和多样。而近几年的比照学习等办法在文本示意畛域一直刷新榜单,业界也曾经在摸索和布局在线向量召回。咱们认为这方面的成长空间微小,会继续投入。
- 语义判断模型摸索:语义了解离不开上下文,对于搜寻来说用户的短文本搜索词的了解更是如此。相似前文介绍在 Graph Embedding 做的尝试,后续能够思考多模态等办法,更好的解决搜寻上下文下的语义判断问题。
- 生成式改写摸索 :强化学习还能够向 SeqGAN[26] 等方向尝试,以及用更好的生成器来解决长尾搜索词改写问题。
- 进一步细化词关系能力建设:在与各个业务单干的过程中发现各类的词关系均有用处,能够依据相关性的强弱作用于召回、相关性、排序等其余各模块。这方面目前定义比拟齐备的是阿里巴巴在商品畛域构建的 AliCoCo[27]。在生存服务畛域词关系是更为丰盛的,咱们心愿能建设起生存服务畛域最大、最精密、最丰盛的词关系结构化数据,更好的服务于应用方。
5. 作者简介
杨俭、宗宇、谢睿、武威,均来自美团平台 / 搜寻与 NLP 部 NLP 部。
6. 参考文献
- [1] 温丽红、罗星驰等. 美团搜寻中 NER 技术的摸索与实际.
- [2] Antonellis, Ioannis, Hector Garcia-Molina, and Chi-Chao Chang. “Simrank++ query rewriting through link analysis of the clickgraph (poster).” Proceedings of the 17th international conference on World Wide Web. 2008.
- [3] Perozzi, Bryan, Rami Al-Rfou, and Steven Skiena. “Deepwalk: Online learning of social representations.” Proceedings of the 20th ACM SIGKDD international conference on Knowledge discovery and data mining. 2014.
- [4] Mikolov, Tomas, et al. “Efficient estimation of word representations in vector space.” arXiv preprint arXiv:1301.3781 (2013).
- [5] Grbovic, Mihajlo, et al. “Context-and content-aware embeddings for query rewriting in sponsored search.” Proceedings of the 38th international ACM SIGIR conference on research and development in information retrieval. 2015.
- [6] Djuric, Nemanja, et al. “Hierarchical neural language models for joint representation of streaming documents and their content.” Proceedings of the 24th international conference on world wide web. 2015.
- [7] Shen, Yelong, et al. “Learning semantic representations using convolutional neural networks for web search.” Proceedings of the 23rd international conference on world wide web. 2014.
- [8] Devlin, Jacob, et al. “Bert: Pre-training of deep bidirectional transformers for language understanding.” arXiv preprint arXiv:1810.04805 (2018).
- [9] Reimers, Nils, and Iryna Gurevych. “Sentence-bert: Sentence embeddings using siamese bert-networks.” arXiv preprint arXiv:1908.10084 (2019).
- [10] Gao, Tianyu, Xingcheng Yao, and Danqi Chen. “SimCSE: Simple Contrastive Learning of Sentence Embeddings.” arXiv preprint arXiv:2104.08821 (2021).
- [11] Johnson, Jeff, Matthijs Douze, and Hervé Jégou. “Billion-scale similarity search with gpus.” IEEE Transactions on Big Data (2019).
- [12] 杨扬、佳昊等. 美团 BERT 的摸索和实际.
- [13] Liang X, Wu L, Li J, et al. R-Drop: Regularized Dropout for Neural Networks[J]. arXiv preprint arXiv:2106.14448, 2021.
- [14] Xu, Runxin, et al. “Raise a Child in Large Language Model: Towards Effective and Generalizable Fine-tuning.” arXiv preprint arXiv:2109.05687 (2021).
- [15] Kipf, Thomas N., and Max Welling. “Semi-supervised classification with graph convolutional networks.” arXiv preprint arXiv:1609.02907 (2016).
- [16] Veličković, Petar, et al. “Graph attention networks.” arXiv preprint arXiv:1710.10903 (2017).
- [17] Yin, Dawei, et al. “Ranking relevance in yahoo search.” Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. 2016.
- [18] He, Yunlong, et al. “Learning to rewrite queries.” Proceedings of the 25th ACM International on Conference on Information and Knowledge Ma.
- [19] Wu, Yonghui, et al. “Google’s neural machine translation system: Bridging the gap between human and machine translation.” arXiv preprint arXiv:1609.08144 (2016).
- [20] Vaswani, Ashish, et al. “Attention is all you need.” Advances in neural information processing systems 30 (2017): 5998-6008.
- [21] Buck, Christian, et al. “Ask the right questions: Active question reformulation with reinforcement learning.” arXiv preprint arXiv:1705.07830 (2017).
- [22] 方宽. Query 了解和语义召回在知乎搜寻中的利用.
- [23] Huang, Jui-Ting, et al. “Embedding-based retrieval in facebook search.” Proceedings of the 26th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. 2020.
- [24] Li, Sen, et al. “Embedding-based Product Retrieval in Taobao Search.” arXiv preprint arXiv:2106.09297 (2021).
- [25] Zhang, Han, et al. “Towards personalized and semantic retrieval: An end-to-end solution for e-commerce search via embedding learning.” Proceedings of the 43rd International ACM SIGIR Conference on Research and Development in Information Retrieval. 2020.
- [26] Yu, Lantao, et al. “Seqgan: Sequence generative adversarial nets with policy gradient.” Proceedings of the AAAI conference on artificial intelligence. Vol. 31. No. 1. 2017.
- [27] Luo, Xusheng, et al. “AliCoCo: Alibaba e-commerce cognitive concept net.” Proceedings of the 2020 ACM SIGMOD International Conference on Management of Data. 2020.
浏览美团技术团队更多技术文章合集
前端 | 算法 | 后端 | 数据 | 平安 | 运维 | iOS | Android | 测试
| 在公众号菜单栏对话框回复【2020 年货】、【2019 年货】、【2018 年货】、【2017 年货】等关键词,可查看美团技术团队历年技术文章合集。
| 本文系美团技术团队出品,著作权归属美团。欢送出于分享和交换等非商业目标转载或应用本文内容,敬请注明“内容转载自美团技术团队”。本文未经许可,不得进行商业性转载或者应用。任何商用行为,请发送邮件至 tech@meituan.com 申请受权。