作者:元宗 (一淘及搜索事业部-搜索技术-算法技术-主搜索与商城)

1. 什么是Query suggestion

  Query下拉推荐是指搜索引擎系统根据用户当前的输入,自动提供一个Query候选列表供用户选择,Query下拉提示(Query suggestion)在搜索引擎和广告竞价平台中已经是标配的产品。Query suggestion可以帮助用户明确搜索意图,减少用户的输入并节约搜索时间,提高搜索体验有重要作用。各个搜索系统的下拉推荐的处理流程基本相同,下拉推荐不同主要体现在后台的query候选产生机制不同,下面介绍几种淘宝下拉推荐算法。

2. 基于PV的下拉推荐

  最简单的下拉推荐是基于Query log中每个Query历史PV,这是最直观的下拉推荐算法,主要分三步进行

  Offline部分

  S1: 在海量Query log中,统计一段时间内每个Query的PV和点击数

  Online部分

  S1: 经过相似度计算,得到与用户输入 Query相似的候选Query集合

  S2: 在相似的候选Query集合中,按照Query的 PV和点击数进行排序

  这种方案简单易实现,但也存在如下问题

  a. 对top Query的推荐解决较好,对于长尾Query,其相似的候选query可能从历史Querylog中挖掘不到

  b. 候选Query语义相同问题,比如输入“连衣裙”,可能推荐“连衣裙女”和“连衣裙女款”两个候选Query,他们的语义基本相同,浪费了一个推荐位置

  c. 推荐Query的质量问题,一些质量不高或者作弊Query,由于PV或者点击比较高而被推荐,使得一些质量高的Query没有机会推荐出来

3. 基于静态分的下拉推荐

  为了改善上述单纯基于PV的问题,增加高质量Query的被推荐机会,增大下拉推荐中作弊的成本,改善推荐Query排序合理性,引入query静态分的概念,并用基于Query静态分的下拉推荐策略替代原来单纯基于PV的策略。那么什么是Query的静态分?

  Query静态分是Query质量的综合指标,该指标拟合了Query各维度的知识:比如Query PV、IPV、UV、IUV、IPVUV、CTR、成交转化率、成交笔数、成交金额、召回商品数等。

  将上述知识用logistic回归的方法拟合成一个实数,基于静态分的下拉推荐与基于PV的下拉推荐不同之处在于:

  a. 离线部分计算每个Query的静态分

  b. 在线部分,利用静态分而不是PV对候选Query进行排序,Query静态分不仅考虑了Query的历史PV/点击信息,而且考虑了Query的交易信息,使得交易行为良好的Query获得更多的展现机会,大大降低了低质量和作弊Query的展现概率。

4. 基于CTR预估的下拉推荐

  基于静态分的算法解决了给予高质量候选Query以更多的展现机会和排序位置,但是这种算法与基于PV一样,主要依赖于历史Query自身的特征,搜索Query与候选Query之间的联系仅仅是两者的前缀相同。这种简单的动态特征没有将搜索Query与候选Query紧密的结合在一起,同时静态特征和动态特征的组合都是基于线性加权,每种特征的权重都是在BTS中调整得到的。为了解决两方面的问题,建立搜索词与候选Query的动态联系,这种联系通过CTR来表示。搜索词与候选Query关联性强,它的CTR就会高,反之则会比较低。

  CTR预估模型

  利用Logistic回归模型来预估Query的CTR,在模型中用到的特征如下

  (1)搜索词与推荐Query(用表示)相关的特征;

  (2)搜索词与推荐Query的类目相关特征;

  (3)候选Query静态分相关特征;

  (4)搜索(推荐)Query的词性特征;

  (5)搜索(推荐)词对应的结果页面特征。

  模型评估

  MSE是比较实际值与预测之间的差异,差异值越小越好。

  上述特征大部分都能够通过离线计算出来,线上按照通过得到的候选Query的CTR值进行排序。

5. 下拉推荐进阶

  1)拼音搜索、拼音和汉字混合

  2)拼写纠错与下拉提示

  3)作弊Query清理

  4)个性化下拉推荐

  5)推荐丰富度和多样性

  6)多维度推荐(数据规模、商品、买家、卖家、买家卖家握手)

  6.1)数据规模维度:买家数量、卖家数量、商品数量;商品属性和类目数量

  6.2)商品维度:商品描述角度:卖家经常会对商品进行个性化的描述,以便区别其他卖家并争取更多的曝光量和更好的价格;商品不同分类角度:除了商品所属的后台类目,还可以按照商品使用状态分为用过的,翻新的,珍藏的、有多新/旧;商品准入角度:有一些类目商品是禁止的,如arms,酒精、烟草

  6.3)买家:买家类型(casual shopper, impulsive shopper,value-driven shopper, collector flippers)、买家年龄、性别、购买力、价格区间、对品牌是否在意

  6.4)卖家:卖家的商品在哪些类目、好评率是否高、发货时间、描述是否属实

  6.5)买家和卖家握手:买家和卖家习惯可能不同:买家搜索词和卖家标题、属性、描述可能不一致,如何解决不一致问题

另附一篇:

淘宝搜索下拉框查询词提示(Suggestion)原理

下拉框提示词(如图1所示),在淘宝搜索中,称为Suggestion(查询词提示),已经是淘宝搜索引擎必备的一个功能了,当你在搜索框进行输入时,搜索框会打开下拉的提示框,动态地向你提示一些与你已经输入内容相关的查询串。如果在提示框中看到所希望输入的查询串,直接用鼠标点击或键盘选择后,即可进行搜索,减少你的输入字符数。如果大家有一定的数字媒体检索和搜索引擎的基础知识,应该能联想到高频查询统计是如何运用在这当中的了吧。

一个基本的模型是:统计查询串中可能出现的各个前缀子串,然后统计以各个前缀子串开头的查询串的频率。对各个子串,取以其作为前缀的对应K个最高频查询串。再以各子串为KEY,建立倒排索引。定期更新倒排索引,即可依据查询频率给出一个比较合理的提示内容。   
      模型并不复杂,但这么做有什么好处,其中包含的频率统计信息有什么意义呢?
      来做个简单分析,比如淘宝搜索引擎,一天接收到的查询次数为1000万次,不同的查询串有100万个。通常而言,按查询频率来统计,频率较高的前10%查询词,其被查询的次数会占到总查询次数的近50%。下面用二分图模型来说明这个过程,如图2所示。
      对于用户和具有相同前缀的查询串,分别以上图中的u和q来表示。对于用户ui查询qi串的行为,以在ui与qi间连边来表示。假设各次查询之间是相互独立的,则一次查询命中查询串q的概率与q的度数成正比。如果将已有的查询记录作为先验模型,那么当某用户发起一次查询时,度数高,即查询频率高的串被命中的概率就大,所以会优先出以用户输入为前缀的高频查询串。
       而具体到一个查询串,按上述思路来推测,当用户输入第一个字之后,所提示的字串中包含用户希望输入查询串的概率可以这样计算:提示字串在所有以该字开头的查询串中查询次数所占的比例。一个合理的假设是,以某串P作为前缀的查询串Q,其数目会随着P的串长增长而快速下降。这个速度通过统计公共前缀查询串的数目可以推断,用户也能够查找到相关的统计资料,这里不再举具体数据。
    按这样的方法,随着用户主动输入字串的长度增长,提示词命中用户真实查询词的概率将不断增加,因而需要用户主动输入的字串长度将缩短。整体上讲,能有效地降低用户使用搜索引擎的复杂度。这对于广大的中文搜索引擎用户,无疑是有吸引力的。因为大多数用户使用的是拼音输入法,需要不断地在同音字中选取自己所需要的字、词,现在搜索引擎有了这样一个功能,大家使用起来会方便很多。
       根据以上介绍的Suggestion,我们还可以引入淘宝搜索点击日志,可以进一步利用点击信息来度量查询间的相似性,从而改进Suggestion。
       以二分图作为分析工具,对于查询qi,用户点击的结果URL为uj,则在于之间连一加权边,eij其权重对于qi的所有查询中,uj被点击的次数wij。如图3所示。

对于查询qi则可以用这些与之相连的加权边表示。其形式为:
             基于这种表示,就可以度量两个查询之间的相似度:
       这种做法就是利用点击作为联系查询与结果的桥梁,将结果集作为表达查询的一个特征空间,并在这个特征空间中度量查询的相似度,从而找到相近的查询作为Suggestion结果,由此可见,淘宝点击日志的作用是多么的重要!

百度suggestion解决方案: 点击打开链接

Query suggestion technique of Taobao相关推荐

  1. Query意图识别分析

    outline 近段时间在研究搜索的相关技术,在工作中主要涉及到资讯搜索功能的实现.我们采用了elasticsearch搜索引擎,es基础和es进阶1.由于需要对搜索功能进行迭代,所以笔者继续深入研究 ...

  2. 计算广告(4)----query意图识别

    目录: 一.简介: 1.用户意图识别概念 2.用户意图识别难点 3.用户意图识别分类 4.意图识别方法: (1)基于规则 (2)基于穷举 (3)基于分类模型 二.意图识别具体做法: 1.数据集 2.数 ...

  3. 目标检测相关论文和代码资源汇总

    目标检测相关论文和代码资源汇总 文章目录 目标检测相关论文和代码资源汇总 2014-2019模型汇总(红色为推荐必读篇): Performance table 性能表 2014论文及代码 2015论文 ...

  4. 差分隐私 深度学习_在深度学习中保护数据隐私 第三部分

    差分隐私 深度学习 Link to part 1 (Basics of Federated Learning): https://towardsdatascience.com/preserving-d ...

  5. django-全文检索

    全文检索不同于特定字段的模糊查询,使用全文检索的效率更高,并且能够对于中文进行分词处理 需要的第三方库: haystack:django的一个包,可以方便地对model里面的内容进行索引.搜索,设计为 ...

  6. sqlmap工具命令行的含义

    SQLMAP参数介绍 sqlmap的使用方式:python sqlmap.py [options]: sqlmap中一共有以下十六个选项卡: 帮助选项卡: Target(目标选项卡): Request ...

  7. 【每周NLP论文推荐】 生成式聊天机器人论文介绍

    欢迎来到<每周NLP论文推荐>.在这个专栏里,还是本着有三AI一贯的原则,专注于让大家能够系统性完成学习,所以我们推荐的文章也必定是同一主题的. 生成式聊天机器人是研究的热点,现在看来,通 ...

  8. 揭秘微信「看一看」如何精准挖掘你感兴趣的内容

    作者:maricoliao,腾讯 WXG 应用研究员 一.背景 随着自媒体时代的蓬勃发展,各类自媒体平台每天涌现出海量信息.微信作为最优质的自媒体平台,每天新发表文章数百万篇.汹涌而来的信息,极大地丰 ...

  9. SQLMap用户手册【超详细】

    SQLMap用户手册[超详细] 文章来源:http://www.cnblogs.com/hongfei/p/3872156.html ps:直接copy http://192.168.136.131/ ...

最新文章

  1. SHA256CryptoServiceProvider vs SHA256Managed
  2. scala的传名参数
  3. java 操作cursor数据库_Java连接各种数据库以及调用存储过程
  4. insert oracle用法,insert into select的实际用法,insertselect
  5. 【撸码师的备忘录】JedisPool.returnResource()遭弃用
  6. 隐马尔可夫模型HMM与维特比Veterbi算法(一)
  7. Python 首超 Java 雄霸5月编程语言指数榜!
  8. C语言深入学习系列 - 字节对齐内存管理
  9. 网页授权前端 java_在开发网页授权获取用户基本信息时code是null
  10. SendEmail--邮件分发管理系统
  11. python实现超市商品销售管理系统_python实现超市商品销售管理系统
  12. 走过软件定义网络“来时的路”
  13. IMDB.COM排名算法(贝叶斯公式)和Reddit评论排行算法
  14. 娱乐大数据:《小时代》是属于谁的小时代?
  15. 大数据获客,实时截流,真的有效果吗?
  16. QoS(Quality of Service)服务质量【转自微信公众号开源Linux】
  17. MySQL数据库入门(十)多表复杂查询练习及讲解-下
  18. Flutter——路由和导航
  19. YOLOv5 + Tesseract-OCR 实现车牌号文本识别
  20. 项立刚:乔布斯展现了人类无尽的创造力

热门文章

  1. 七模二十二频4G通讯模块SLM651B
  2. Python进阶 │反爬虫和怎样反反爬虫
  3. 数据结构 - 拓展突破(C++实现中缀表达式转前缀表达式,中缀表达式转后缀表达式,前缀表达式求值,中缀表达式求值)
  4. [ 注意力机制 ] 经典网络模型1——SENet 详解与复现
  5. C盘剩余空间越来越小的终极解决办法!
  6. GIS中的WKB介绍
  7. Ora 28547连接服务器失败,可能是Oracle Net 管理错误问题详解(可能是最简单的)
  8. C语言程序设计第五版谭浩强著 第七章部分课后习题答案
  9. 记录一下 DC1靶机渗透
  10. Linux的Bash——(二)Shell的变量