seq搜索引擎优化至少包括那几步?(搜索query理解)
优采云 发布时间: 2022-03-01 13:23seq搜索引擎优化至少包括那几步?(搜索query理解)
内容
【简介】当你在搜索框中输入一小段文字时,搜索引擎会立即返回上千条结果。整个搜索过程看似简单,其实底层引擎有很多文章。每个简短的搜索词背后都隐藏着用户最真实的查询意图。搜索引擎需要使用多种不同的策略来挖掘用户背后的需求,这涉及到“搜索查询理解”。
我们之前讲过《初识Query理解》
当用户输入查询时:“Pignuo的生产地点”。在上述每个模块中是如何处理的?
01 文本预处理
案例转换:查询将转换为“品果产地”。
全半角转换:查询将转换为“pigguo的产地”
长度截断:一般设置为38
繁简转换等策略:查询将转换为“pigguo的产地”
02 查询分词
【基于字符匹配的分词算法】
在该方案中,首先需要构建一个分词词典,将一串文本的文本片段与构建的分词词典进行匹配。如果匹配,则将其视为分词结果。这种原创方案存在许多缺点,如无法处理歧义和泛化不足。当然,还有很多改进的方案,比如正向/反向/双向最大匹配算法。
【基于统计的分词算法】
基于大量的分词文本,利用统计概率知识,统计文本中相邻词之间的频率,计算词之间的连接概率,依靠机器学习模型学习文本分词的客观规律。它可以实现对未知文本的分割。
统计语言模型需要依赖大量的训练数据。随着互联网大数据时代的到来,也给统计语言模型带来了质的发展,这也使得统计语言模型逐渐成为主流的分词方法。我们最熟悉的是基于稀疏表示(Sparse Representation)的 N-Garm 语言模型,以及 Hidden Markov HMM 和 Conditional Random Field CRF 等模型。随着深度学习的兴起,以词嵌入为代表的语言模型也取得了较好的效果,给NLP分词算法领域带来了变革。
【基于理解的分词算法】
基于理解的分词算法的基本思想是在分词的同时进行句法和语义分析,利用句法和语义信息来处理歧义,即模拟人类对句子的理解来处理与文本中的各种歧义。随着NLP领域的不断突破,基于理解的分词算法也得到了快速发展。目前比较常用的语言技术平台有哈尔滨工业大学LTP、中科院计算所NLPIR、清华大学THULAC和Hanlp等,这些平台集成了基于分词算法理解效果很好。
每种分词算法都有自己的优缺点。在搜索引擎开发过程中,要根据不同的场景选择最合适的分词方式。
03 查询重写
查询重写的主要步骤是查询纠错、查询对齐和查询扩展。
【查询纠错】
查询纠错,为什么搜索引擎需要这一步?原因是在搜索的过程中,由于我们缺乏先验知识或者在使用输入法的时候打错了,如果我们不改正错误,最终的搜索列表就不会是用户想要的结果,从而导致搜索准确率下降,用户体验下降。比如在百度搜索“胡歌”:
因此,在做搜索引擎的过程中,查询纠错是比较重要的一步。当然,不同场景使用的纠错方法是不同的。常用的查询纠错方法有数字、拼音、漏词、重复词、谐音/形近词等。在我们的例子中是“鸽子产地”。将更正为“苹果的产地”,而“苹果”本身就是用户想要搜索的。
从技术上讲,查询纠错主要分为两个任务,一个是异常检测,一个是纠错。基本实现方法是基于文本相似度(比如“胡歌”和“胡歌”非常相似),基于文本编辑距离(设置阈值,比如“serach”和“search”之间的距离是1),基于拼音修正(“pingguo”修正为“apple”)等。当然还有一些更高级的解决方案,所谓更高级,实现起来难度更大,比如基于点击行为的queryN-docN协同过滤算法修正,可以从历史queryN-docN点击构建点击行为矩阵,并使用协同过滤计算query和queryN之间的相似度来纠正错误。会话嵌入挖掘更多查询序列以进行纠错。
【实体对齐】
实体对齐和查询纠错很容易混淆。实体对齐更多的是一种重写操作,在输入查询中没有错误,但在表达式中与搜索引擎索引的内容不匹配。比如“星夜生于哪一年”,通过实体对齐,可以改写为“仇星驰的出生时间”,对齐规则也是一个不断丰富和积累的过程。
在技术实现上,可以使用 word Embedding 方法来训练词之间的相似度,从而确定一组对齐规则。同时,也需要加入一些外部知识或者人工干预来提高相似度的准确性。文本生成模型 seq2seq 还可用于根据历史点击行为挖掘查询-查询语义相似的短语,以确定一组对齐规则。
【查询扩展】
查询扩展主要用于搜索引擎的相关搜索。就是显示与用户输入的查询类似的扩展查询,让用户可以有更多的选择来搜索想要的内容,帮助用户挖掘潜在需求,同时也扩大了搜索范围。流量和召回在技术实现上相对简单,可以使用查询纠错和实体对齐中的方法来实现,但也需要不断的迭代优化。以下是百度输入“胡歌”的结果
04 查询分析
查询分析中最重要的就是权重分析。常用的方法是tfidf算法,即“词频-反文本频”。如果某个词或词组在一篇文章文章中出现频繁(即TF高),而在其他文章中很少出现(即IDF高),则认为词或词组有很好的类别区分能力,此时权重会更高。
TF-IDF 通俗的理解是:TF 描述了词 t 对文档的重要性,IDF 描述了词 t 对整个文档集的重要性。
TF 表达式:对于 a 中的文档
里面的话
说,
词频可以表示为:
其中 ni,j 是单词
在文档中
中出现的次数,分母是文件中出现的次数
中所有单词出现的总和。
IDF 表达:IDF 是一个词的一般重要性的度量,即一个词对整个语料库的重要性的度量。特定单词的 IDF 可以通过将文档总数除以收录该单词的文档数来获得,然后取所得商的对数得到:
此外,权重分析也可以用分类或回归的思想来解决,通过训练svm、gbdt等传统机器学习模型进行预测。即可以使用历史点击数据。首先根据不同的查询点击相同的标题进行聚类,然后通过一系列的文本特征处理方法对多个查询的词项权重进行加权分析权重。
05 意图识别
在一般的搜索场景中,意图识别可以分为两个任务,意图分类+命名实体识别。分类模型可以基于传统的机器学习,如svm、朴素贝叶斯和决策树算法,也可以基于近年流行的bert等深度学习模型。命名实体识别任务可以使用Bert-BiLSTM-CRF和BERT-CRF等序列标注模型来识别物品实体,然后结合一些启发式策略和后验行为进行验证。
在这个模型中,当用户进入《和平精英手游》时,这就是准确的意图识别,整个处理链如下:
据统计,搜索符合2/8原则,80%的查询都是长尾词。很多情况下,用户的意图比较模糊,不确定是否有一些强烈的意图时,更适合给用户一些统计的、List类型的结果,比如用户搜索“2020趣三国志”策略游戏”,此时的意图比较模糊,搜索结果返回的一系列三国志策略游戏都是用户的真实意图。
当然在很多情况下,意图识别也会加入个性化的元素,所以我们文章的第一个案例“苹果产地”,特指最好的水果苹果的产地?还是苹果手机和电脑的代工?**这需要涉及个性化搜索。不仅如此,当查询词中存在一些高级关系时,即查询中的实体不是意图实体,需要添加推理来挖掘其真实实体。这时候需要添加一个知识图谱进行知识推理,结合语义搜索完成意图识别,如下图所示。:
现在,大家终于知道搜索引擎是如何理解你的输入查询的了。