输入“/”快速插入内容

Query 理解与处理

电商搜索全链路系列文章们躺在我的草稿箱里已经N久了,上一篇整理还是在上次,错过的小伙伴点击传送门电商搜索系统Overview
这一篇来聊聊搜索系统第一步Query理解与处理。一般而言用户输入的Query属于超短文本(淘宝query切词后平均长度不足3个),容易存在拼写错误、歧义、表达不准确等问题,因此对Query理解的越精准,搜索服务的效果也就越好。
通常搜索系统中的QP(Query Processor)模块负责这部分的工作,Query理解的整体pipeline大致如下:
可以看到,QP主要包括query预处理、分词、纠错、改写、类目预测、实体识别、Term重要性分析等模块,需要注意下,各个业务会根据自身特点对上述各个模块的顺序进行调整或增减,但一些关键模块是相通的。
接下来看看,当你在搜索引擎中输入一个Query敲下回车后,发生了什么?
1.
Query预处理
预处理这一步相对简单,大多是一些规则搞定的事,方便后续模块的进一步分析和处理。主要会包括以下步骤:
运营审核 & 干预:搜索中的case可以说是无处不在,即使如百度、淘宝般成熟的系统,依然每天会有各种badcase,这就需要提前进行审核、干预、替换等人工操作;
归一化:包括大小写转换、繁简体转换、全半角转换、符号表情移除等等;
长度截断:对于超长的query进行截断处理;
其他:例如一些case驱动的策略
2.
Query分词
Query分词就是将Query切分成多个term,如:“手机淘宝”切分成“手机 淘宝”两个term。分词可以说很简单也可以说很复杂,譬如对于英文搜索,分词只需要按空格切分即可,但是对于中文,就可有的玩了。
文本分词作为NLP的一个超基础任务,具体细节这里不会再啰嗦。对于想要深入了解的同学,推荐一些综述资料
目前业界中大部分搜索系统中的分词模块都会有专门的基础中台部门来迭代优化,亦或直接使用开源的分词工具(譬如JieBa、HanLP、PyLTP、LAC等等),直接调用即可。
3.
Query改写
在搜索引擎中,query改写是很重要的一环。由于自然语言中有很多近义词或者同义词,用户可以有多种方式表达自己的搜索意图;同时,难免存在用户由于先验知识掌握不够或输入过程引入噪音导致输入query存在一定错误。
因此query改写是对原始query的有效补充,将改写query和原始query一起参与搜索可以改善搜索结果。
按照具体功能的不同,大致可以分为三个子模块:
Query纠错
Query归一
Query扩展
3.1
Query纠错
纠错模块源于输入query拼写错误,一般是由于用户认知或输入习惯等原因导致。错误拼写影响整个搜索流程,包括召回相关性、排序合理性等,最终影响用户搜索体验。
query纠错的业务形态如下,以淘宝为例: