seq搜索引擎优化至少包括那几步?(应用query分析的几种方法和方法的区别?)
优采云 发布时间: 2022-04-20 09:42seq搜索引擎优化至少包括那几步?(应用query分析的几种方法和方法的区别?)
一、背景
地图App的功能可以简单概括为定位、搜索、导航三个部分,解决了去哪里、去哪里、怎么去的问题。在高德地图的搜索场景中,输入为地理相关的搜索查询、用户位置、App表面等信息,输出为用户想要的POI。如何更准确地找到用户想要的兴趣点并提高满意度是评估搜索结果的最关键指标。
一个搜索引擎通常可以分为三个部分:查询分析、召回和排序。查询分析主要是尝试理解查询表达式的含义,为召回和排序提供指导。
地图搜索的查询分析不仅包括通用搜索下的分词、成分分析、同义词、纠错等通用NLP技术,还包括城市分析、wherewhat分析、路径规划分析。
一些常见地图场景中的查询意图表达如下:
查询分析是搜索引擎中的策略密集型场景,通常在 NLP 领域应用各种技术。地图场景中的查询分析只需要处理地理相关的文本,多样性不如网页搜索,看起来更简单。但是,地理文本通常比较短,大多数用户的需求只是少量的结果,对准确性的要求非常高。如何在地图场景下进行文本分析,提高搜索结果的质量,充满挑战。
二、整体技术框架
搜索架构
与一般的检索架构类似,地图的检索架构包括三个主要部分:查询分析、召回和排序。先验地,用户的输入信息可以理解为各种意图的表达,同时发出请求,试图获取检索结果。后验,当得到每个意图的检索结果时,综合判断,选出效果最好的。
查询分析过程
具体的意图理解可以分为基础查询分析和应用查询分析两部分。基础查询分析主要使用一些通用的NLP技术来理解查询,包括分析、成分分析、遗漏、同义词、纠错等。查询分析的应用主要针对地图场景中的具体问题,包括分析用户的目标城市,是否表达where+what,是否表达从A到B的路径规划需求等
整体技术演进
文本处理领域的整体技术演进经历了一个以规则为基础、逐步引入机器学习、全面应用机器学习的过程。由于搜索模块是高并发在线服务,因此引入深度模型的条件相对苛刻。但随着性能问题的逐步解决,我们逐渐从各个子方向引入深度学习技术,开展新一轮的效果。推广。
NLP技术近年来取得了快速发展。诸如bert、XLNet等模型相继霸榜。我们逐步统一每个查询分析子任务,使用统一的向量表示来表达用户需求,同时执行 seq2seq。在进一步提升多任务学习效果的基础上,还能保证系统不会过于臃肿。
本文介绍了高德地图搜索地理文本处理这几年相关技术的演进。我们将选取一些要点,分两部分介绍。最后一部分主要介绍了搜索引擎中一些常见的查询分析技术,包括纠错、改写和遗漏。下一部分重点介绍地图场景中独有的查询分析技术,包括城市分析、wherewhat分析、路径规划等。
三、通用查询分析技术演进
3.1 更正
在搜索引擎中,用户输入的搜索词(查询)经常拼写错误。如果直接检索错误的查询,将无法得到用户想要的结果。因此,无论是通用搜索引擎还是垂直搜索引擎,都会对用户的查询进行修正,最大概率获得用户想要搜索的查询。
在目前的地图搜索中,大约有6%-10%的用户请求会出现输入错误,因此查询纠错是地图搜索中非常重要的一个模块,可以大大提升用户的搜索体验。
在搜索引擎中,低频和中长尾问题往往难以解决,也是纠错模块面临的主要问题。另外,地图搜索和一般搜索有明显的区别。地图搜索查询更加结构化,查询中的片段往往收录一定的位置信息。如何利用好查询中的结构化信息,更好地识别用户意图,是地图纠错的独特挑战。
(1)拼音相同或相似,例如:盘桥物流园-盘桥物流园
(2)字体类似,例如:河北茂里-河北昌黎
(3)多个字符或缺少字符,例如:泉州周定界-泉州定界
原纠错模块包括多种召回方法,如:
拼音纠错:主要解决短查询的拼音纠错问题。拼音完全一样或模糊的声音被用作纠错候选。
拼写纠错:又称形近字纠错。通过遍历和替换 shape 和 near 词,使用查询热度过滤,添加候选词。
组合纠错:通过翻译模型进行纠错和替换,资源主要是通过查询对齐挖掘出来的各种替换资源。
组合纠错翻译模型计算公式:
其中 p(f) 是语言模型,p(f|e) 是替换模型。
问题1:召回方法有缺陷。目前查询纠错模块主要的召回策略包括拼音召回、字形召回和替换资源召回。对于低频情况,求解能力有限。
问题2:排序方式不合理。纠错按照召回方式分成几个独立的模块,分别完成相应的召回和排序,不合理。
改造一:基于空间关系的实体纠错
原来的纠错主要是基于用户会话挖掘段来替换资源,所以解决低频问题的能力有限。但长尾问题往往集中在低频,所以低频问题是当前的痛点。
地图搜索与一般搜索引擎的一个很大区别是地图搜索查询更加结构化,例如北京市朝阳区芙蓉街10号首凯广场。我们可以对查询(即地图中的成分分析的工作)进行结构分割,以获得这样一个带有类别的结构化描述。北京【市】朝阳区【区县】芙蓉街【路】10号【门地址后缀】首开广场【一般实体】。
同时我们拥有权威地理知识数据,利用权威地理实体数据库构建前缀树+后缀树索引库,提取疑似纠错部分在索引库中进行拉链召回,并使用实体数据库的逻辑隶属关系,过滤纠错结果。实践表明,该方法对低频分区或实体错误有明显效果。
基于部首的字形相似度计算
在上面提到的排序策略中,字形的编辑距离作为排序的一个重要特征。这里我们开发了一种基于根的字形相似度计算策略,对于编辑距离的计算更加精细和准确。汉字信息包括汉字的根分词表和汉字的笔划数。
将一个汉字拆分成多个部首,找出两个汉字的共同部首,根据共同部首的笔画数计算相连字的相似度。
型号选择
对于这个排序问题,这里我们参考业界的做法,使用pair-wise-based gbrank进行模型训练。
示例构造
通过在线输出结合人工审核构建样本。
特征构建
(1) 语义特征。如统计语言模型。
(2)热门功能。pv、点击等
(3)基本特征。编辑距离、分词和作文特征、累积分布特征等。
这样解决了纠错模块的两个痛点,一是地图场景中的大部分低频纠错问题。二是重构模块流程,将召回与排序解耦,充分发挥各个召回环节的作用。召回方法更新后,只需要重新训练排序模型,使模块更加合理,为后续的深度模型升级打下基础。良好的基础。后来在这个框架下,我们通过深度模型对seq2seq进行纠错和召回,取得了进一步的收益。
3.2 重写
作为查询转换方式的纠错召回策略有很多局限性。对于一些非典型的查询转换表达式,策略上存在差距。例如query=永城市新农村合作办,目标POI为永城市新农村合作服务大厅。用户的低频查询往往得不到很好的搜索效果,但其实用户描述的语义与主poi的高频查询类似。
这里我们提出了查询重写的思路,可以将低频查询重写为语义相近的高频查询,更好地满足用户需求的表达。
这是一个从头开始的实现。用户表达的查询多种多样,显然用规则来表达是取之不尽的。直观的想法是通过向量进行召回,但是向量召回的方式很可能过于笼统,不适合地图场景的检索。这些都是在实践过程中需要考虑的问题。
程序
整个方案包括三个阶段:召回、排序和过滤。
我们研究了几种句子向量表示的方法,选择了SIF(Smooth Inverse Frequency),算法简单,效果和性能可与CNN和RNN媲美。向量召回可以使用开源的Faiss向量搜索引擎,这里我们使用性能更好的阿里内部的向量搜索引擎。
原创查询和高频查询候选集,计算语义相似度,选取语义相似度的TOPK,人工标注训练样本。
特征构建
1.基本文字特征
2.编辑距离
3.组合功能
型号选择
使用 xgboost 进行分数回归
过滤阶段
通过向量召回对查询的过度泛化非常严重。为了能够在地图场景中应用它,添加了对齐模型。使用了两种统计对齐模型,giza 和 fastalign。实验表明两者的效果差不多,但是fastalign在性能上比giza好,所以选择了fastalign。
召回结果通过对齐概率和未对齐概率进一步过滤,得到精度相对较高的结果。
查询重写填补了原查询分析模块中一些低频表达式无法满足的空白。与同义词或纠错的显式查询变换表达不同,句子的向量表示是相似查询的隐式表达。相应的优势。
向量表示和召回也是逐步应用深度学习模型的尝试。同义词、重写和纠错是地图中查询转换的三种主要方式。过去,他们在地图模块中相对分散,各司其职,会有重叠的部分。在后续的迭代升级中,我们引入了统一的查询转换模型进行转换。在取得收益的同时,我们也摆脱了过去很多规则和模型耦合带来的历史包袱。
3.省略2个
在地图搜索场景中,有很多查询收录无效词。如果您尝试调用所有查询,则可能无法调用有效结果。例如,厦门市搜索“仙侯brt站湖里区仙侯高科技园区新捷创运营中心11楼1101室”。这需要检索意图。在没有明显转义的情况下,核心词用于召回目标poi候选集,可以在搜索结果无果或召回率较差时补充召回。
在省略判断的过程中存在先验和后验平衡问题。省略意图是先验判断,但预期结果是能够有效召回POI,这与POI召回领域的状态密切相关。如何在策略设计的过程中保持先验的一致性,同时在后验POI中获得较好的结果,是省略模块的难点。
原来的elision模块主要是基于规则的,而规则依赖的主要特征是上游组件分析特征。由于基于规则的拟合,模型效果的优化空间很大。此外,由于对成分分析的依赖性强,模型的鲁棒性较差。
技术改造
省略模块的改造主要完成了规则到crf模型的升级,同时也离线应用深度学习模型辅助生成样本。
识别查询的哪些部分是核心,哪些部分可以省略是一个序列标注问题。在浅层模型的选择上,很明显我们使用的是crf模型。
特征构建
术语特征。使用加权特征、词性、先验字典特征等。
成分特征。仍在使用组件分析中的功能。
统计特征。统计段的左右边界熵、城市分布熵等,通过binning离散化。
示例构造
在项目的第一阶段,我们采用在线策略粗打和外包精打的方法,构建了10000级样本进行crf模型训练。
但是,省略查询的多样性非常高,使用10000个级别的样本是不够的。在在线模型不能快速应用深度模型的情况下,我们使用boostraping方法来利用深度模型的泛化能力。线下搭建 大量样本。
使用这种方法,样本可以很容易地从几万扩大到几百万,我们仍然使用crf模型进行训练和在线应用。
在省略模块的过程中,我们完成了从规则到机器学习的升级,并引入了组件以外的特性来提高模型的鲁棒性。同时,利用离线深度学习进行样本构建的循环,提高了样本的多样性,使模型更接近crf的天花板。
在深度模型的后续建模中,我们逐渐摆脱了对成分分析特征的依赖,直接将query建模到hit poi core,构建了大量样本,取得了进一步的收益。