深入理解搜索引擎——初识 query 理解
当你在搜索框输入一串简短的文本后,搜索引擎立马会返回成千上万条结果,整个搜索过程看似简单,其实底层引擎大有文章。每一个简短的搜索词背后都隐藏着用户最真实的查询意图,这就需要搜索引擎使用很多不同策略去挖掘用户背后的需求,这就涉及到“搜索 query 理解”。
从上一篇文章《深入理解搜索引擎——开篇》有讲到过,整个搜索引擎的过程是从用户输入、query 理解、检索召回到最后的精排序。每一个过程都会影响最终的搜索准确度以及用户体验,所以在搜索引擎中任何环节都需要精细的打磨,不同场景的搜索引擎,由于用户需求以及数据的不同,在搜索引擎的各个环节需要采取不同的策略来优化搜索,方能使得效果达到最大化。
那么我们今天就从通用的角度来总结一下搜索第一个模块,query 理解应该如何做?
下图是我总结的 query 理解的流程图,我们从用户的角度来描述一下这个 query 理解的过程如何进行?
用户输入 query:“P i g n g u o 的生產地。”
搜索引擎首先会进行简单的预处理,比如大小写转换、长度截断,随后会进入到分词阶段,包括中文分词、领域分词、停用词过滤等。分好词后会进行改写纠错,然后进行 Term 分析词的重要性以及用户的精准意图识别。当然最后可能还会介入失效分析及人工干预以适配每个场景的需求。
【文本预处理】
文本预处理只是针对文本做简单的处理,包含大小写转换、长度截断、繁简体转化等策略,此步骤部分策略不仅在 query 理解的时候要进行,在创建索引的时候也需要此步骤,因为 query 和索引在一定策略上需要保持一致,不然会影响召回。
【Query 分词】
好的分词能决定搜索引擎的效果上限,主要有基于字符匹配的分词算法、基于统计的分词算法、基于语义理解的分词算法。
【Query 改写】
Query 改写,顾名思义是将用户输入的 query 改写为搜索引擎更能识别的另一个 query 的过程,这里需要保证改写的准确性,不然会适得其反。query 改写大致有以下几个步骤,query 纠错、query 对齐、query 扩展。
【Term 分析】
为什么要需要做 Term 分析,原因很简单,“苹果的生产地”,在前面步骤中按照细粒度智能分词可能会分为“苹果”、“生产”、“产地”,那么这三个词之间是否具有一样的权重?答案是否定,因为我们的核心词是“苹果”,而其他两词是其属性词。而 query 分析正是基于此,对用户搜索 query 分词后的结果进行权重分析。
【意图识别】
在 NLP 领域也是一个挑战性的项目,尤其是在搜索领域,当用户输入 query 比较短,而且输入的 query 很强的前后顺序的时候,更是一个挑战。意图识别主要分为精准意图识别和模糊意图识别。最暴力的一些方法词表穷举法和规则解析法,但这些方法泛化性都比较低,规则制定的过程需要大量的人工干预,所以基于机器学习和深度学习的意图识别近些年也得到爆发式的崛起。
搜索引擎中,query 理解是其门户,本文也只是对 query 理解中涉及到的步骤做了简单的观点描述,本文旨在抛砖引玉,希望更多对搜索引擎有兴趣的人能够对搜索的 query 理解部分有一个大致的了解。本文暂未做实际的技术深入分析,在下一篇文章会针对具体的模块具体分析。
最后欢迎关注同名微信公众号:药老算法(yaolaosuanfa),带你领略搜索、推荐等数据挖掘算法魅力。
版权声明: 本文为 InfoQ 作者【药老算法】的原创文章。
原文链接:【http://xie.infoq.cn/article/7b6297c55ac6e7fccecc4cb33】。文章转载请联系作者。
评论