Press "Enter" to skip to content

京东到家搜索Query理解体系实践

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

目录

 

1. 前言

 

2. 整体架构

 

3. Query理解核心算法

 

3.1 分词

 

3.2 term权重

 

3.3 改写

 

3.4 意图

 

4. 总结与展望

 

5. reference

 

1. 前言

 

搜索是京东到家App上主要的流量分发入口,搜索场景覆盖了首页搜索、店内搜索、首页各个频道球搜索以及小程序搜索等各种服务入口,随着用户量快速增长,越来越多的用户在不同场景下使用搜索快速获取自己想要的商品。正确理解用户Query,将用户最想要的结果排在靠前的位置,是搜索引擎最核心的两大步骤,对搜索体验的好坏至关重要。搜索引擎已经从单纯的文本匹配的检索发展到现阶段——基于对查询Query的真实语义理解以及用户在站内的个性化行为来获得搜索结果。

 

Query理解(Query Understanding)在电商搜索中是比较重要的一环,简单来说就是从词法、句法、语义三个层面对 Query 进行结构化解析。本文主要介绍在电商O2O搜索场景中的Query理解体系,包括从京东到家搜索目前的Query理解技术方案和落地应用结合目前业界的一些实现方案,来帮助大家相对全面来了解Query理解体系,同时会相对系统性地介绍Query理解中各个重要模块在京东到家的技术实现方案以及它们之间如何串联起来共同为搜索召回及排序模块服务,进而提升搜索的满意度,让用户更快更准从海量商品中找到想要的商品。

 

2. 整体架构

 

搜索三大模块的大致调用顺序是从Query理解到检索召回再到排序,作为搜索系统的第一道环节,Query理解的结果除了可以用于召回也可以给排序模块提供必要的基础特征,因此Query理解的效果很大程度影响召回和排序的质量,对Query是进行简单字面上的理解还是可以理解其潜在的真实需求很大程度决定着一个搜索系统的智能程度。

 

通用的搜索Query理解包含的模块主要有:Query预处理、Query纠错、Query扩展、Query归一、联想词、Query分词、意图识别、term重要性分析、敏感Query识别等;京东到家属于O2O即时零售场景,Query理解整体流程需要结合具体的业务场景进行迭代,例如在Query理解侧还需要对Query的品类倾向,门店需求进行识别等;京东到家搜索Query理解体系具体的流程详见下图:

以用户搜索”康师傅红烧方便面*”为例:

 

分词:先对整个Query进行切词,切分为”康师傅”、”红烧”、”方便面”、”*”。

 

预处理:将”*”等没有任何意义的停用词去除掉;

 

term赋权:将分词器切分出的词进行权重打分,来衡量不同term重要程度,用于后续相关性的计算,例如”康师傅:0.78″、”红烧:0.36″、”方便面:0.80″。

 

Query改写:用户的Query在很多时间同商品标题对比是存在较大gap的,所以Query改写也是Query理解中必不可少的一部分,同时在电商领域,同一商品在不同地域的叫法也区别很大,所以召回时我们也需要将同义词作为召回条件。例如”康师傅红烧方便面”也能改写为”康师傅泡面”,”康师傅牛肉面”等,来更好的连接用户和商品。

 

实体识别:最后对剩下的”康师傅”、”红烧”、”方便面”进行实体成分的识别,我们不仅需要把的词汇切分出来,我们还需要知道这些词代表的实际含义,最终得到【Brand:康师傅;Attr:红烧; Entity:方便面】。很多词汇并不是只有一个实体,比如这里的”方便面”,它既是一个实体又是一个品类。

 

意图识别:这里指狭义上的意图识别,在电商领域,品类的概念尤为重要,正确的识别出用户品类需求,同时给用户展示对应品类的商品对用户的搜索体验影响较大,对用户Query的品类预测,来指导召回和排序进行品类相关性的计算,

 

例如”蒙牛”的品类倾向为 “纯牛奶”: 0.912, “加味奶”: 0.322, “常温酸奶”: 0.303, “酸奶(加味)”: 0.233, “酸奶(原味)”: 0.193, “低温原味牛奶”: 0.163, 等。

 

3. Query理解核心算法

 

3.1 分词

 

3.1.1 分词技术

 

Query分词就是将Query切分成多个term,如:”康师傅红烧方便面”切分成”康师傅|红烧|方便面”三个term。

 

分词作为最基础的词法分析组件,其准确性很大程度影响Query后面的各个组件处理,如分词及对应词性信息可以用于后续的term重要性分析和意图识别等多个模块。

 

同时,Query的分词及其粒度需要与item侧索引构建的分词粒度保持一致,从而才能进行有效地召回。

 

分词技术相对来说业内已有较多的方法和手段,主要做法有基于词典进行前后向最大匹配、对所有成词情况构造DAG、hmm/crf序列标注模型以及深度学习模型+序列标注等。

 

目前到家搜索分词项目也采用的是基于DAG统计分词模型,效果和性能较为均衡,大概步骤如下

 

 

词典加载方法,采用前缀词典树存储,

 

生成所有切词可能的有向无环图 DAG,简单来说可以理解为最细颗粒度的分词结果。作为待处理的全组合。 动态规划查找最大概率路径, 找出基于词频的最大切分组合。

 

基于逆向向前遍历,求解全切分所得的所有结果中求某个切分方案S,使得P(S)最大。

 

这里默认每个词上下文无关,某个词的成词概率为P(W)=W在语料中的频次/语料库中词语的总词数,为了防止多个小概率相乘导致下溢,在这里取概率对数。为了尽快找到最大概率的词串,采用动态规划来查找,首先计算出最大概率P(S)后,然后进行回溯的方法直接输出S方案.

 

粗颗粒度分词的准确率较高,但是召回率稍差,细颗粒度分词召回率较高,但是准确率稍差,所以目前到家搜索项目中在使用分词时同时会兼顾多种分词颗粒度,包括意图识别成分提取,term赋权,召回以及排序场景,对于分词的准确率和召回率进行一定的平衡。

 

 

分词流程图如下

3.1.2 新词发现

 

对于分词来说,词典是其中重要的组成部分,词典的建设对于分词的效果有着决定性,除了前期的积累,对于新出现的词汇或是未能累积的词汇,就需要进行未登录词的发现了。

 

基于自由凝固度以及左右邻字熵的新词挖掘

 

简单地,可以采用基于统计的方法来进行新词发现,通过统计语料中的词语tf-idf词频、凝聚度和自由度等指标来进行无监督新词挖掘,当词语的凝聚度和自由度达到一定阈值且已有分词不能切分到一起时可以人工评估后加进词库。

 

其中凝聚度即点互信息:

 

左邻字熵与右邻字熵:

 

表示一个字串左右搭配的丰富性,公式为:

 

对于待挖掘的新词来说,自由凝固度越高越好,一个词自由凝固度越高,表示它们常常出现,对于邻字熵来说也是越高越高,一个词的左右邻字熵越高,表示它们更像是一个”整体”,这里举个反例就很好理解了,例如”焖鸡”这个词的自由凝固度很高,但是它的邻字熵很低,证明它只是某个词汇的一部分。

 

因此,我们可以通过卡阀值,设定自由凝固度和邻字熵的下届,来得到一批候选新词。下图为在京东到家用户搜索词中挖掘到的部分新词。

3.2 term权重

 

搜索过程中,不同term对于检索有不同的意义,不能本末倒置。不同重要程度的词,应该在召回排序阶段给予相应不同的影响,核心词具有更高的分值。

 

对Query分词后,我们需要计算Query中各个term的权重,确定关键短语,提高信息检索效果,最终提高检索结果的相关性和召回率。

 

目前业界主流做法如下

 

 

基于Query的词频统计(TF-IDF):

TF = 单词在Query中出现的次数 / Query总词数,IDF = log (语料Query数 / 包含该单词的Query数)→ TF-IDF = TF * IDF

TF-IDF与一个词在Query中的出现次数(大部分为1)成正比,与该词在Query语料中的出现次数成反比。计算出Query中每个词的TF-IDF值,然后按降序排列,可以看作每个词在Query中的重要程度。

 

IMP(importance)静态赋权:

选择有明确点击意图的Query,初始化term的imp值B_T,初始值可以为1,也可以用TF-IDF初始化,迭代过程如下,Tmp_i是Query中的第i个term的重要性占比,N是所有包含第i个term的Query数目。该方法使得每个单词迭代收敛到一个固定的重要值。

优缺点:优点是简单快速,缺点是没有结合上下文语境信息,不够灵活

 

基于用户点击信息

 

 

基于title点击数据

分析其中的title部分数据。点击的次数越多,相对应的title中包含的核心term权重越大

 

基于相似Query(DIMP)

获取相似Query及子Query,构建Query树,叶子节点(term)赋值静态imp值,自底向上计算term的权重。

 

 

基于特征学习

有监督学习相比于无监督学习的效果一般会更好,但存在需要大量标注样本、模型难以更新等问题。有监督学习一般包括样本构造、特征表示、模型训练、模型评估四部分。

 

 

样本构造

任务形式:多分类(term重要性等级);回归任务(每个term的权重)。

数据标注:基于用户点击样本的回归方法,是搜索结果中doc数目,是搜索结果中包含term的doc数目(此处doc换成title;如果有摘要可以加以辅助)利用点击日志,构建相似Query集,通过计算词共现概率来表示查询中每个term的重要程度,构建词权重训练数据

 

特征表示

embedding表示: 把Query和term表示成低维embedding向量,term与Query距离近则该term比较重要。 dis(term, Query) = ||embedding(term) – embedding(Query)||

term的自解释特征:term专名类型,term词性,term df-idf,位置特征,term的长度,term依存关系等

 

模型训练

采用LR、XGBoost或LSTM模型,不同的模型对效果的影响有限,最重要的问题在于样本构造和特征表示。

 

模型评估

先采用模型本身的准确率,然后进行人工评测。

 

 

到家搜索实现方案现状

 

目前,我们在项目中采用了基于特征学习的方式进行term赋权任务,主要做法是基于偏序对学习的term赋权模型,同基于统计和静态权重的方法相比,准确率和泛化性更好,同时算法会结合不同的上下语境使动态调整权重使赋权结果更合理,整体流程图如下:

输入term的特征向量,初始化特征权重向量;基于pariwise的sigmoid激活,最小化交叉熵损失函数;训练并输出特征权值,计算目标term的得分;建立大小片段切分树,调整term权重

 

 

模型输入

假设分词结果 Query =,,……,,对应的标注数据为:,,……,,label = [ 0, 1, 2 ],代表term的重要性等级。以及term的特征向量x:包括离线计算存储的特征集(IQF、IDF、点击等)和线上计算的特征(词性,语义表示等)。

提取有效偏序对:同一Query中,选取所有label等级不同的term对(,),( label() ≠ label() )。每个term对(,)是一个训练数据单元。

 

激活函数

其中是的特征向量,w是特征权重向量。根据term的重要等级偏序关系,确定学习目标值如下:

 

loss函数

其中L(*,*)是交叉熵损失函数,R(w)是正则项。通过梯度下降最小化loss函数迭代更新权值w,loss函数的导函数如下:

其中,是对应的term对的特征向量

梯度下降:,实验测试了批梯度下降BGD和随机梯度下降SGD,BGD更新慢但是准确度和稳定性更好,倾向于采用BGD方法。

 

大小片段切分树

 

得到特征权值w后,给定Query =,,……,,以及对应的特征向量。可以计算的模型分数

 

做线性映射去除负数弱化差异性

 

再利用softmax做归一化

 

当前score作为Query中term序列的初始权值。

 

根据粗颗粒度分词结果作为精准分词大片段,包含于大片段中的term作为该大片段的子片段。使得大片段的权值相加为1,大片段的子片段权值的和近似等于该大片段的权值(具体视子片段情况而定),具体策略如下:

 

1. 当子片段个数为1时,该子片段权值不变

 

2. 子片段的文本长度/父片段长度 = len <= 1时,按小片段权值比例分割父片段权值

 

3. 子片段的文本长度/父片段长度时 = len > 1时,按小片段权值比例分割父片段权值*min(len,1.2)

 

具体效果图见下:

 

 

3.3 改写

 

改写就是就是对原始Query进行改写,扩展出多个语义一致的Query,多个Query并行召回,丰富召回结果。

 

举个例子:”鳊鱼”和”武昌鱼”是同义词,因此”鳊鱼”可以改写为”武昌鱼”,来优化搜索的召回结果。

 

3.3.1 目前业界主流方法

 

 

基于Query内容,编辑距离,拼音等特征:

 

基于用户行为数据:

 

基于知识体系,同义词,上下位词替换:

 

机器翻译,机器翻译结合强化学习的方法:

 

 

3.3.2 我们的做法

 

1. 协同过滤Query cf (collaborative filtering)

 

该方法借鉴于User based collaborative filtering(UserCF)。基于用户的搜索点击行为,构造共现矩阵,然后通过计算相似度的方法(比如余弦相似度)计算Query之间的相似度。

 

该方法的缺点:

 

1. 商品数据量非常大,点击行为分布不均,Query的向量稀疏,导致无法找到相似的Query

 

2. 矩阵存储空间比较大,需要使用稀疏矩阵的存储方法。

 

2. simrank方法

 

将图表示为,代表限定区域内的对象nodes,代表对象之间的edges。

 

当为异质时(不同类别),图为二部图,bipartite graphs。

 

对于任意一个图中节点,针对其边的指向性,我们可以计算出其入节点集合和出节点。

 

那幺,假设,的相似度为,其公式为:

 

矩阵化:

 

其中是二部图节点结合,k是当前迭代的epoch,是中第个节点。表示节点到节点a的转移概率,其公式为:

 

所以,节点间的相似度矩阵的计算公式为:

 

该方法的缺点:

 

1. 节点的(另一个子集)连接节点集合越大,则与这个节点相似的节点相似度会越小。简单来说,关系越简单(相连边少)的节点更容易与其他节点相似,关系越复杂(相连边多)的节点更难与其他节点相似,朴素SimRank缺乏考虑节点的共同相邻点集的大小。

 

2. 没有考虑边的差异,即没有考虑边的权重。

 

3. simrank++方法

 

为了解决simrank的问题,simrank++主要做了以下两点:

 

1. 考虑节点相似度证据。

 

2. 加入边的权重。

 

对于节点a和b,他们的相似度证据为:

 

对转移矩阵使用归一化:

 

4. Query2vec

 

为了解决基于点击行为的方法依赖于召回结果的问题,拓展基于session数据的方法。

具体方法如下图所示:

5. 基于同义词的方法

 

利用外部知识或者内部资源挖掘得到的同义词,直接在Query中替换同义token的方法实现Query改写。

 

综上所述:

 

首先,我们基于用户点击数据,分别使用QueryCF方法、simrank和simrank++方法挖掘Query改写数据,然后通过加权的方法选取置信度最高的结果。

 

其次,因为以上方法受到召回的限制,无法从缺少点击行为的Query中挖掘改写数据,所以使用query2vec的方法从用户搜索行为中挖掘Query改写数据。

 

然后,利用内部资源训练语言模型挖掘同义词,拓展token级别改写数据。

 

最后结合以上数据,并行对原始Query和改写后的Query进行召回。

 

3.3.3 Query改写实验效果

 

实现结果如下:

 

 

点击率转化率arpu
相对提升0.33%0.4%2.28%

 

实验效果如下图所示,左边是改写前的效果,右图是改写后的效果:

 

3.4 意图

 

搜索意图识别是Query理解中最重要却也最具挑战的模块,存在的难点主要有:

 

 

输入不规范,前文中已有介绍,不同的用户对同一诉求的表达是存在差异性的,甚至可能会出现 Query 表达错误、遗漏等情况

 

歧义性&多样性:用户往往针对一个Query存在多种不同的意图,查询词为:”水”,是矿泉水,还是护肤品里的卸妆水。

 

数据冷启动。当用户行为数据较少时,很难获取准确的意图。

 

没有直接的量化指标,如apru,ctr,uctr,cvr这种可以量化的指标是对搜索系统总体的评价,具体到用户意图的预测上并没有标准的量化指标,需要依赖人工评估

 

 

下图是京东到家搜索意图识别的一个大致流程,主要包括Query的成分提取以及品类预测。

3.4.1成分提取:

 

通过对用户搜索日志进行分析,将用户常用的搜索词的成分主要分为以下四类:品牌词(康师傅),产品词(方便面),属性词(红烧),主题词(火锅);当用户输入Query时,如果能准确的识别每个实体词,就能去索引里面精确匹配对应的字段,从而提高召回的准确率,在排序中也可以用到实体词对排序效果进行优化。 例如:有一个商品的标题是”明治草莓味牛奶 500ml”,它的类目是”低温奶制品”。当用户搜”草莓”的时候,通过关键词匹配逻辑召回这款商品。而通过实体识别和品类预测会得到这个Query的产品词和品类词分别是是”草莓”,”水果类”,也就是用户要搜的产品词是”草莓”。这样就可以判断出其实这是一个误召回,进而可以将这个商品进行过滤或者是排序的时候放到较后的位置。

 

实体词识别模型目前在到家搜索场景下采用目前比较主流的BI_LSTM+CRF来进行训练的,语料是用户搜索的真实Query,用一个相对准确的词典(品牌词/产品词/属性词/主题词)去标注语料。具体的标注预料如下所示:

 

· 康 B-brand 师 I-brand 傅 E-brand  红 B-attr 烧 E-attr 方 B-product 便 I-product 面 E-product

 

训练出的模型对于实体词,品牌词,产品词的识别准确率平均93%左右,crf模型还有一个比较好的地方是具有一定的泛化能力。

 

3.4.2 品类预测:

 

Query通过搜索引擎召回后,一般将类目相关性作为重要的海选排序因子,保留一部分商品,一方面保证了效率,另一方面也从源头保证类目的相关性,保证用户搜索体验。

 

当用户搜索”伊利”的时候,是想要搜索”牛奶”,还是”雪糕”,又或者是”奶粉”。当然,你可能说不同的用户有不同的需求,这就涉及到个性化搜索的内容了,如果用户行为数据足够多,直接使用统计分析就可以找到Query对应的类目相关程度。当然,统计算法也是机器学习的一种。但是,仍有一部分问题是需要机器学习算法来完成的。

 

通过对用户行为数据的挖掘,例如不同类目下的点击发现”伊利”对应的类目相关性排序为:牛奶>奶粉>雪糕。当用户搜索”伊利”的时候,会按照类目相关性的顺序,将牛奶排在最前面。当然,考虑到多样性,排序时会通过类目打散将奶粉和雪糕适当的掺杂在牛奶中。

 

目前品类预测在到家搜索场景下主要尝试的方法有两种,一类是直接采用层级性多标签分类,第二类是采用语义模型,结合用户点击,订单,成交等特征进行融合模型拟合出对应不同品类的得分取topN作为预测的品类倾向。

 

3.4.3.1 层级性多标签分类

 

在类目预测任务中,由于预测目标会同时有一个或多个,采用多元标签分类进行预测。多标签分类任务和多分类任务的区别在于一条数据可能有多个标签,每个标签可能有两个或者多个类别。例如,一篇新闻可能同时归类为”娱乐”和”运动”,也可能只属于”娱乐”或者其它类别,同时,由于品类结构本身附带结构,所以在多元标签分类任务中,根据标签的层级关系:可分为层级性多元标签分类和平行性多元标签分类。举个栗子,如一个酸奶产品,它属于”加味酸奶”,也属于“低温奶制品”,而“加味酸奶”标签是”低温奶制品”标签的子类,这产品所属种类标签是有层级结构,所以该类任务称为层级性多元标签分类。

 

在学习层级信息的时候,使用fine-tuning,将上层标签信息微调的方式传到下层标签的学习中。

按照Hierarchical structure(也就是label的层级结构)进行一层层来利用CNN来预测学习;

 

基本流程:

 

 

输入的是样本一段短文本sentence,将sentence转换成词embedding,利用fastText以及bert都可以;

 

接着先训练样本的顶层label(A,B),具体是在embedding层后加一个卷积层(convoluational layer),最大池化层(maxpooling layer),全连接层+dropout,最后加个sigmoid层,用的二元交叉熵(binary cross-entorpy loss)进行A,B标签预测,这一个CNN分类框架;

 

在预测下一层标签时(A1,A2,B1,B2),采用的仍是CNN结构,只是在embedding layer和convoluational layer不重新生成,而是继承上一层学习的结果,然后在这个基础上进行微调学习;

 

按照2,3步骤,遍历整个层级标签;

 

 

通过CNN/RNN网络结构提炼更高阶的上下文语义特征以及引入注意力机制、记忆存储机制等可以有效地优化模型的分类准确率,同时结合label的层级结构,在embedding layer和convoluational layer进行微调,子类标签所涵盖的特征信息应该也属于父类标签所涵盖的特征信息,有效的利用了层级之间的关系,

 

同时改变输出概率(probabilities)的计算方式和交叉熵的计算方式

 

tf.nn.sigmoid_cross_entropy_with_logits测量离散分类任务中的概率误差,其中每个类是独立的而不是互斥的。这适用于多标签分类问题。

 

样本层面:

 

类别不平衡问题是文本分类任务一个难啃的骨头。事实上,不平衡问题不仅仅是分类标签下样本数量的不平衡,其本质上更是难易样本的不平衡:即使样本数量是平衡的,有的hard example还是很难学习。类似,对那些数量较少的类别进行学习,在不做数据补充的情况下,也可看作是一个hard example问题。解决不平衡问题的通常思路有两种: 重采样(re-sampling)和重加权(re-weighting) :

 

重采样(re-sampling)

 

重采用的通用公式为:

 

C为数据集的类别数量,为类别的样本总数,为从类别中采样一个样本的概率,表示所有类别都采样相同数量的样本。

 

重加权(re-weighting)

 

重加权就是改变分类loss。相较于重采样,重加权loss更加灵活和方便。其常用方法有:

 

loss类别加权:通常根据类别数量进行加权,加权系数与类别数量成反比。

 

Focal Loss:上述 loss类别加权 主要关注正负样本数量的不平衡,并没有关注难易不平衡。Focal Loss主要关注难易样本的不平衡问题,可根据对高置信度(p)样本进行降权:

 

3.4.3.2 融合模型

 

融合模型是在点击,订单特征等对品类相关性拟合的模型上加入品类的语义相关性先验模型

 

首先是点击模型,统计历史的类目点击数据对于曝光较多的类目会占优势,对于类目商品体量不均的情况,会使得点击分数更偏向体量大的类目;

 

同时先验模型中对于召回的类目,要做语义上的判断和区分

 

所以针对Bert+GBDT的类目预测融合模型,对其中的问题进行优化,并得到了准确率的效果提升。

 

点击模型:

 

类似于排序中ctr预估的方法,通过Query和类目下的商品的历史点击行为,预测Query和类目的未来的点击行为。主要使用Query历史7天、15天的曝光、点击等统计特征。

 

价格/成交模型:类目之间的商品的价格差异,在区分类目意图的差异上有着重要作用。例如,用户搜索“手机”,自然召回的商品有主件“手机”类目和配件“手机保护套”类目,我们可以通过Query下的成交价以及各个类目的商品价格加入到特征中。

 

语义模型:

 

在计算语义的匹配模型中,我们采用了多层神经网络,通过词的embedding方式表示Query和类目,然后通过Query和类目的采样做目标来训练这个网络。整体结构如下:

特征包括:

 

 

语义模型获取语义相关性分数

 

成交价格区间,在Query下所有类目的商品分布比例

 

Query召回类目下的商品数、占Query的商品数比例、占类目下的总商品比例。

 

Query分词个数、Query召回的一级大类数,来衡量Query多意向程度

 

类目所属的一级类目、二级类目等类目结构等

 

 

效果评估:

 

目前,绝大部分的标签分类在计算精确率(Precision)、召回率(Recall)、F1值、混淆矩阵等时,都是参考的二分类的计算方式。例如,在二分类中,只有2个类别,分别是正样本和负样本;在多元分类中(标签总个数>2),每一个类别都可以作为关注的对象,被关注的即为正样本,其他为负样本。

 

但是,在多标签分类中,由于每一条文本可能有多个标签,导致我们在计算精确率、召回率、F1、混淆矩阵时遇到了问题。

 

计算Precision和Recall

在计算Precision和Recall时,如果一个样本有多个标签,预测结果只正确了一部分,一种可取的做法就是将部分预测正确的结果也考虑进去

 

(1)准确率

 

对于准确率来说,其计算公式为:

 

对于样本3,准确率为1/3,对于全部4个样本,准确率为 1/4 * (1 + 1+ 1/3 + 1/3) = 0.66

 

对应实现代码

 

(2)召回率

 

对于召回率来说,其计算公式为:

 

对于样本4,召回也为1/3 ,对于全部4个样本,召回率为 1/4 * (1 + 1+ 1/2 + 1/3) = 0.71

 

对应实现代码

 

目前到家意图整体准确率达到93%,同时在业务核心指标上也有着一些成果,搜索Arpu相对累积提升8.42%,同时从搜索用户直观感受也有一定改进,例如下图,左侧为优化后,右侧为优化前。

4. 总结与展望

 

本文是对Query理解在京东到家搜索中相关做法的具体阐述,也包含了部分探索过程和实践经验的一些简单总结,主要从搜索的角度对Query理解涉及的各个重要模块的概念及其对应的一些方法进行阐述。希望能帮助到大家对搜索Query理解相关概念有一个初步的认识,起到抛砖引玉的效果。除了文本提及的技术方案本身,后续我们还会考虑引入更多包括用户个性化、场景的信息来做到更深入的理解搜索场景下的用户查询意图,针对占比越来越大的长尾Query,在各个模块尝试深度融合增强学习来解决Query的泛化识别问题。

 

5. reference

 

SimRank: A Measure of Structural-Context Similarity Simrank++: Query Rewriting through Link Analysis of the Click Grap

 

Context and Content-aware Embeddings for Query Rewriting in Sponsored Search

 

HFT-CNN: Learning Hierarchical Category Structure for Multi-label Short Text Categorization

 

基于DNN+GBDT的Query类目预测融合模型

 

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注