Press "Enter" to skip to content

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

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

 

作者 | kaiyuan

 

整理 | NewBeeNLP

 

 

 

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

 

 

这一篇来聊聊搜索系统第一步, Query理解与处理 。

 

一般而言用户输入的Query属于超短文本(淘宝query切词后平均长度不足3个),容易存在拼写错误、歧义、表达不准确等问题,因此对Query理解的越精准,搜索服务的效果也就越好。

 

通常在搜索系统中, QP(Query Processor)模块 负责这部分的工作。Query理解的整体pipeline大致如下:

 

Query理解pipeline

可以看到,主要包括query预处理、分词、纠错、改写、类目预测、实体识别、Term重要性分析等模块,需要注意下,各个业务会根据自身特点对上述各个模块的顺序进行调整或增减,但一些关键模块是相通的。

 

接下来看看,当你在搜索引擎中输入一个Query敲下回车后,发生了什幺?

 

一、Query预处理

 

预处理这一步相对简单,大多是一些规则和人工搞定的事,方便后续模块的进一步分析和处理。主要会包括以下步骤:

 

运营审核 & 干预:搜索中的case可以说是无处不在,即使如百度、淘宝般成熟的系统,依然每天会有各种badcase,这就需要提前进行审核、干预、替换等人工操作;

 

归一化:包括大小写转换、繁简体转换、全半角转换、符号表情移除等等;

 

长度截断:对于超长的query进行截断处理;

 

其他:例如一些case驱动的策略

 

二、Query分词

 

Query分词就是将Query切分成多个term,如:“手机淘宝”切分成“手机 淘宝”两个term。分词可以说很简单也可以说很复杂,譬如对于英文搜索,分词可以只按空格切分即可,但是对于中文,就可有的玩了。

 

文本分词作为NLP的一个超基础任务,具体细节这里不会再啰嗦。对于想要深入了解的同学,推荐一些综述资料,也可以找NewBeeNLP往期推文

 

Review of Chinese Word Segmentation Studies [1]

 

NLP分词算法深度综述 [2]

 

目前业界中大部分搜索系统中的分词模块都会有专门的基础中台部门来迭代优化,亦或直接使用开源的分词工具(譬如JieBa、HanLP、PyLTP、LAC等等),直接调用即可。

 

三、Query改写

 

在搜索引擎中,query改写是很重要的一环。由于自然语言中有很多近义词或者同义词,用户可以有多种方式表达自己的搜索意图;同时,难免存在用户由于先验知识掌握不够或输入过程引入噪音导致输入query存在一定错误。

 

因此query改写是对原始query的有效补充,将改写query和原始query一起参与搜索可以改善搜索结果。

 

按照具体功能的不同,大致可以分为三个子模块:

 

Query纠错

 

Query归一

 

Query扩展

 

3.1 Query纠错

 

纠错源于输入query拼写错误,一般是由于用户认知或输入习惯等原因导致。错误拼写影响整个搜索流程,包括召回相关性、排序合理性等,最终影响用户搜索体验。

 

query纠错的业务形态如下,以淘宝为例:

 

3.1.1 常见错误

 

query错误的类型根据业务的不同有不同的划分,但大同小异。以腾讯搜索为例,他们根据 query中是否有不在词典中本身就有错误的词语 ,将query错误类型进行分类,如下所示。

 

3.1.2  技术方案

 

业界和学界的技术方案主要可以分为pipeline和end2end两种类型

 

3.1.2.1  Pipeline方法

 

pipeline的方式将大任务分为多个子模块执行,中文纠错任务通常包含错误检测和错误纠正两个子任务,

 

错误检测:识别输入句子中错误词的位置。主要方法有以下几种:

 

基于词典:对query切分后,检查各个词是否在维护的自定义词表或挖掘积累的常见纠错pair中;

 

基于语言模型:统计大规模语料的n-gram信息,频率小于一定阈值的即认为是错误词;

 

基于序列标注:通过模型(bi-LSTM-CRF、BERT-CRF等)来学习错误词的开始和结束位置,’0′ 表示无错误,’1′ 表示错误;

 

错误纠正:定位到错词后,进行错词的纠正。首先采用多种策略(编辑距离、HMM模型、训练深度模型挖掘等)进行纠错候选召回,然后对该候选集合进行排序得到最终的正确query。

 

3.1.2.2  End2End方法

 

End2End的方式联合优化纠错任务,如

 

字节AI Lab的Soft-Mask BERT:由错误检测网络(Bi-GRU)和基于BERT的错误纠正网络组成。检测网络预测每个位置的字符为错别字的概率,然后利用这个概率对该位置的字符嵌入进行soft masking(软掩码),每个位置的soft-masked embedding输入到纠错网络,纠错网络使用Bert进行拼写纠错。

 

蚂蚁金服SpellGCN:综合使用汉字的声音和视觉相似性,通过特殊的图卷积网络(graph convolutional network)来解决中文拼写纠错(Chinese Spelling Check, CSC)问题

 

腾讯 PLOME:字音和字形信息引入到bert的输入中,基于字的拼音序列利用GRU建模拼音表示,基于字的笔画序列利用GRU建模字形表示。模型输出该位置的字的概率,也要输出该位置的正确拼音概率,模型的损失为二者损失之和。预测阶段也是结合二者作为预测结果。

 

3.1.3  业界实现

 

然而在实际应用场景中,会存在很多论文未涉及的问题,分享一些业界的真实案例,供参考:

 

百度:中文纠错技术

 

哈工大讯飞文本纠错系统 [3]

 

平安寿险AI:文本纠错技术 [4]

 

阿里:语音对话中的纠错系统

 

小爱:基于BERT的ASR纠错

 

滴滴:语音交互自然语言理解探索与实践

 

流利说:自动语法纠错

 

3.2 Query归一

 

Query归一有时也称为同义近义替换,其目标是对长尾冷门的query/词语进行归一到热门标准query,改善召回结果。和上述query纠错的区别是,这里的query更多是正确的,只是在表述上不规范难以与索引匹配。

 

涉及的主要技术就是同义词挖掘及语义实体对齐。具体实现上有很多方式,譬如

 

从知识库或者结构化数据构造规则模板来挖掘;

 

利用丰富的行为数据,结合无监督词向量,来挖掘语义相似词;

 

通过深度匹配模型、文本生成模型seq2seq等先挖掘出语义表达相近的query-query、item-item或query-item短语对,然后再将语义相近的query/item短语对进行语义对齐;

 

3.3 Query扩展

 

在很多情况下,用户输入的query是模糊的,并不能准确表达其搜索需求,譬如用户想要购买健身博主刘畊宏的同款瑜伽垫,但是并不知道具体的品牌款式,转而使用模糊的”刘畊宏”作为query来搜索。

 

query扩展可以帮助用户挖掘潜在需求(有些类似搜索中的推荐,所以有时也可称为query推荐),同时也可以扩大搜索的召回。

 

Query扩展的业务形态如下。具体的实现方式可以根据粒度的不同分为Term粒度和Query粒度两种:前者往往将query中的部分term使用同义或相关的term进行扩展,更多的为语义上的扩展;后者直接扩展出一个完整的query,与原串同时进行检索。

 

可以看下 美团搜索query扩展 方面的技术大图。

 

 

首先离线通过用户搜索日志、翻译(词对齐等)、图方法(协同过滤、graph embedding等)、词向量Embedding等方法挖掘得到千万级别的候选语料;

 

但一般上述挖掘语料质量不够高,又设计了基于BERT的语义判别模型进一步提高改写pair对的准确率;

 

在线的目标是进一步提高改写的效果,设计了高精度的词典改写、较高精度的模型改写(基于SMT统计翻译模型和XGBoost排序模型)、覆盖长尾Query的基于强化学习方法优化的NMT模型、针对商户搜索的向量化召回四种线上方案。

 

 

更多的方案公开总结已有很多,可参考:

 

丁香园:搜索中的Query扩展技术 [5]

 

丁香园:搜索中的Query扩展技术(二) [6]

 

Query 理解和语义召回在知乎搜索中的应用

 

美团搜索中查询改写技术的探索与实践 [7]

 

 

考虑微信公众号读者阅读习惯,还有部分QP内容拆分到下一篇继续~ 下期再见!

一起交流

想和你一起学习进步!『 NewBeeNLP』 目前已经建立了多个不同方向交流群( 机器学习 / 深度学习 / 自然语言处理 / 搜索推荐 / 图网络 / 面试交流 /  等),名额有限,赶紧添加下方微信加入一起讨论交流吧!(注意一定o要 备注信息 才能通过)

 

 

 

本文参考资料

[1]

Review of Chinese Word Segmentation Studies: https://manu44.magtech.com.cn/Jwk_infotech_wk3/CN/Y2020/V4/I2/3/1

[2]

NLP分词算法深度综述: https://zhuanlan.zhihu.com/p/50444885

[3]

哈工大讯飞文本纠错系统: http://cogskl.iflytek.com/archives/1306

[4]

平安寿险AI:文本纠错技术: https://zhuanlan.zhihu.com/p/159101860

[5]

丁香园:搜索中的Query扩展技术: https://zhuanlan.zhihu.com/p/138551957

[6]

丁香园:搜索中的Query扩展技术(二): https://zhuanlan.zhihu.com/p/296504323

[7]

美团搜索中查询改写技术的探索与实践: https://tech.meituan.com/2022/02/17/exploration-and-practice-of-query-rewriting-in-meituan-search.htm

 

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。