下拉框推荐-Suggest-SUG
什么是下拉框推荐
在我们使用各种app(飞猪)想要搜索我们想要的东西,假设我想要上海迪士尼的门票,那么精确的query是“上海迪士尼门票”,要打7个字,如果在你输入“上海”的时候app就推荐了query“上海迪士尼门票”,你不需要继续输入,直接点击这个query就ok;再举个例子,你不小心输入了“dishi”,app帮你自动纠错并推荐了“迪士尼门票”等query,对于用户来说,体验是不是一下就变好了,降低了我们输入的成本。
这就是下拉框推荐,也称为suggest-sug。搜索场景中,搜索list页的query大部分是从sug引导过去的,这就意味着sug推荐的query好坏对后续链路的转化有着重要影响,sug不仅要推荐用户想要的query,还要确保搜索能承接住这个query,保证有搜索结果。
如何召回
- 前缀召回-根据用户的输入前向匹配召回-上海:上海的景点、上海的酒店、上海
- 包含召回-召回的query包含用户输入-迪士尼:上海迪士尼门票、香港迪士尼乐园
- 分词包含召回-召回的query包含用户输入的分词结果,由分词的粒度决定召回效果-杭州一日游:杭州灵隐寺一日游、杭州西湖一日游
- 字召回-分词包含召回中最细粒度分词
- 拼音前缀召回-shang:上海、上海迪士尼-尚海:上海、上海迪士尼
- 简拼召回-hz:杭州
- 中英召回-杭z:杭州、杭州的景点
- 英文前缀召回-the twin:the twin tower
- 英文分词召回-twin tower:the twin tower
- 英文包含召回-twint:the twin tower
- 模糊召回-上海迪迪士尼:上海迪士尼乐园、上海迪士尼门票
- 向量召回:基于用户输入query的向量与库中向量进行匹配并根据相似度进行排序-成本高效果一般
- 生成式模型:基于用户的输入自动补全,可以产生库中没有的query,但很难满足线上的rt要求,且易产生搜索承接不住的query。但是可以离线保存这些query,扩充候选query库,并离线检测这些query搜索是否接得住
如何排序
- 排序模型:很多wide-deep模型都可以直接用,构建的特征包括两个大类:离散特征+连续特征。
- 离散特征主要是你召回query的相关特征:sug页uctr、pctr、结果页的(30天、15天、7天、3天)uctr、pctr、l2o、用户输入与召回query直接拼接之后的uctr等。用户输入与召回query之间的包含关系:如分词包含、前缀包含等
- 连续特征主要是用户的输入和你召回的query之间的关系:用户query与召回query的拼接等
- 额外特征:模型毕竟是黑盒的,所以最终排序的分数需要额外增加一些策略特征,如对召回的酒店query计算与用户之间的距离、对3天的uctr额外增加权重等
- 根据专家经验进行排序:如用户在北京输入“杭州”,可以离线人工构建一些泛 意图query如“杭州的酒店”、“杭州的景点”、“杭州一日游”、“北京到杭州的机票”、“灵隐寺”、“杭州西湖”...到机票的query是构造的排序,目的地的景点可以根据用户历史搜索的热度进行排序
如何纠错
- 用户输入错误是很常见的情况,和输入法、query特征都有关系,如很多用户都会把“迪士尼”输成“迪斯尼”,把“恭王府”输成“公王府”,图1中全部使用了“迪士尼”进行了召回,图2中只有前两个query使用纠正之后的“恭王府”进行召回,其余还是用“错误”的“公王府”进行召回,如果没有纠错模型,召回的query并不是用户想搜的,用户还需要重新输入,相当于增加了用户的搜索成本,所以纠错模块是相当需要的。
- 纠错模型:相关链接-中文文本纠错调研 - nghuyong。离线构建训练集训练模型,再对用户历史输入query进行预测,筛选不同,人工校验,存入纠错库,预处理阶段对用户输入query进行修改。另一方面,专家经验也是相当重要的,可以基于用户输入的频率、点击率等输入产生一批候选待纠错query,一般这个量级不会很大,外包校验就ok。
业务结合
- 意图识别:构建意图库,对用户输入的query进行意图识别,并根据意图+专家经验进行不同的候选query的召回排序是很有必要的,下图,用户输入目的地意图“北京”,携程的做法是:构造一批泛意图query-目的地+酒店、景点、一日游等;目的地热门景点;北京的热门酒店。对于景点意图-poi-“灵隐寺”,做法是:poi+附近酒店、一日游;精准酒店;query普通召回。敢打赌,经过AB实验,这样搭配的策略该意图的点击率会比一般召回的点击率是高的,因为一些明确意图下,很难猜准用户的精确意图,泛化意图更能收敛,或者说用户也不知道具体自己要搜啥,那就看下大家都在搜啥。站在用户的角度,如果用户输入一个精准酒店名,该配什么样的策略?我觉得精准酒店+该精准酒店附近的酒店(给出附近酒店与精准酒店的距离,并基于距离、评分、价格等因素排序)就比较合适。
- 与工程结合,实时的定坑能力:无论在携程,还是在飞猪、美团,会有各种各样的大促活动,如随心飞,酒店打折等活动,产品运营需要对一些query进行定坑配置,如用户输入目的地“法喜寺”时,想要在坑位3配置“打卡拍照攻略”,线上能实时生效,这就需要和工程端联合开发这种能力,并把这种配置试试读取到线上
- 基于用于行为推荐:如果用户今天已经点击过某个query或者搜索过某个酒店,当再次搜索相关query时,是不是应该把用户历史行为相关的query放在前面呢?!就类似于默认页推荐吧
- 基于所有用户行为推荐:当用户搜索目的地“上海”时,在当前城市“上海迪士尼乐园”是个热度很高的query,放在前面推给用户一般是不会错的
- 异地搜索query推荐:用户在杭州输入“北京”,用户是存在交通意图的,所以“杭州到北京的机票”“杭州到北京的火车票”一般点击还挺高的
- 推荐query的丰富度:如上图所示,推一个干干的query是不是显得太单一了,可以根据不同类型的query去构建不同的标签,如POI-景点排名、景点特色;酒店-酒店标签、与用户距离等
- 确保推荐的query在结果页是有结果的或者能解析的,这就需要和搜索端进行联合,sug端利用搜索端的日志进行query的筛选
- 确保sug页的top1与结果页的top1是相同的。举个例子,用户输入“鼓楼”,sug推荐第一个是“南京鼓楼”,用户点击“搜索”进入结果页的第一个是“西安鼓楼”,这就是不统一的,会给用户错觉,所以这部分明显意图的识别sug端要和搜索端联合起来。
评价指标
- sug uctr:最直观的指标,点击算法推荐的query的用户占比。100个用户请求1000次,60个用户点击过推荐的query,uctr=60%
- sug pctr:相对准确的指标,点击算法推荐的query的pv占比。100个用户请求1000次,50次点击过推荐的query,pctr=5%。问题在于用户逐字输入“hangzhou”,相当于8次请求,及时最后点击了,pctr也只有1/8
- 用户输入的平均字长:越短表明越好
- 用户输入的平均时长:越短表明越好
- sug无结果率:用户输入query的无结果率。
- list页的无结果率:用户点击sug推荐的query之后,在list页无结果的占比
- sug ppctr:我自己命名的指标,最精确的指标,用户每一次完整输入才算一次请求,逐字输入“上海迪士尼”时相当于1次输入,而不是5次输入,这样计算是最精确的。
- list页uctr:sug引导的结果页的uctr。点击sug推荐的query之后进入list页(结果页),结果页的商品是搜索推荐的,推荐的好坏将直接影响用户的点击,但是sug推荐词的好坏也是会影响点击,所以有影响,但只是间接影响。
- list页pctr:sug引导的结果页pctr,和list页uctr的原理差不多,还是间接影响因素
- l2o:sug引导的query的下单率。更间接的因素
- list页pv来自sug的占比:sug页点击率越大,这个占比就越大
监控指标
- 上述指标的监控
- query粒度的搜索量、点击率指标:这个很重要,提升sug的uctr几乎是最重要的任务,你可以从高搜索量低点击率的query入手,对这部分query进行优化召回排序,这样也可以快读定位问题
- query type粒度的搜索量、点击率指标:比query粒度更粗一些,上面提到有意图链路召回排序利用专家经验构建的必要性,这部分指标可以让你快速发现定位基于专家经验的召回排序问题。例如发现目的地意图的点击率明显低于其他意图,那就需要对目的地意图的召回排序进行针对性优化
- query粒度下用户点击习惯指标: 用于监控用户在该输入下喜欢点击的query排序,如统计所有用户输入“北京”时的点击情况,发现用户更喜欢点“北京的酒店”、“北京环球影城”等query,“北京的酒店套餐”几乎没人点,那就可以考虑把“北京的酒店套餐”这个query替换成别的query。这部分数据还可以用于猪搜场景下的“猜你想搜”模块,很通用的用户点击行为数据。
- sug推荐用户不点的指标:用户最终输入“上海”,且点击了搜索按钮,但在输入“上”时,sug已经推荐了“上海”这个query,但用户还是没有点,这说明这部分用户的习惯是点击搜索按钮或者输入法的返回键
相关文章:
下拉框推荐-Suggest-SUG
什么是下拉框推荐 在我们使用各种app(飞猪)想要搜索我们想要的东西,假设我想要上海迪士尼的门票,那么精确的query是“上海迪士尼门票”,要打7个字,如果在你输入“上海”的时候app就推荐了query“上海迪士尼…...
Nmap的几种扫描方式以及相应的命令
Nmap是一款常用的网络扫描工具,它可以扫描目标网络上的主机和服务,帮助安全研究员了解目标网络的拓扑结构和安全情况。以下是Nmap的几种扫描方式以及相应的命令: 1.Ping扫描 Ping扫描可以用来探测网络上响应的主机,可以使用“-sn…...
Qt::QOpenGLWidget 渲染天空壳
在qt窗口中嵌入opengl渲染天空壳和各种立方体一 学前知识天空壳的渲染学前小知识1 立方体贴图 天空壳的渲染就是利用立方体贴图来实现渲染流程2 基础光照 光照模型3 opengl帧缓冲 如何自定义帧缓冲实现后期特效4 glsl常见的shader内置函数 glsl编程常用的内置函数二 shader代码…...
谷歌搜索技巧大全 | 谷歌高级搜索语法指令
谷歌搜索技巧是利用各种高级搜索语法或者搜索指令,让我们能够使用Google进行精确化的搜索,外贸找客户和学术文件查找都可以应用到这些搜索技巧。(大部分命令也适用百度搜索)。Google通过互联网收集数据,抓取有意义的信息,将其存储…...
JAVA开发(JAVA垃圾回收的几种常见算法)
JAVA GC 是JAVA虚拟机中的一个系统或者说是一个服务,专门是用于内存回收,交还给虚拟机的功能。 JAVA语言相对其他语言除了跨平台性,还有一个最重要的功能是JAVA语言封装了对内存的自动回收。俗称垃圾回收器。所以有时候我们不得不承认&#…...
你还不会用CAD一键布置停车位?赶紧学起来!
在设计CAD建筑图的过程中,你还在一个一个地画停车位吗?那未免也太低效了吧!今天,小编用浩辰CAD建筑软件来教大家一键布置停车位,赶紧学起来吧! 浩辰CAD建筑软件是行业应用最广泛的创新型建筑设计专业软件&…...
【MySQL之MySQL底层分析篇】系统学习MySQL,从应用SQL语法到底层知识讲解,这将是你见过最完成的知识体系
文章目录MySQL体系结构MySQL存储结构(以InnoDB为例)MySQL执行流程(以InnoDB为例)1. 数据写入原理2. 数据查询原理MySQL存储引擎1. 为什么需要不同的存储引擎2. 如何为数据指定不同的存储引擎,数据粒度又是多少3. MySQL…...
单核CPU是否有线程可见性问题?
本文仅是本人对问题的思考记录,并没有实操验证,有误请大家评论指出。 今天见到了一个经典的问题,单核CPU是否有线程可见性问题,学完操作系统应该可以直接回答,不会有线程安全问题。但如果结合JVM虚拟机来进行分析&…...
MyBatis 架构介绍
MyBatis 架构介绍MyBatis 架构图MyBatis 所解决的 JDBC 中存在的问题引用MyBatis 架构图 mybatis 配置:mybatis-config.xml,此文件作为 mybatis 的全局配置文件,配置了 mybatis 的运行环境等信息。另一个 mapper.xml 文件即 sql 映射文件,文件…...
加密算法---RSA 非对称加密原理及使用
加密算法---RSA 非对称加密原理及使用一 非对称加密原理介绍二 加密解密测试2.1 加密解密工具类2.2 测试一 非对称加密原理介绍 非对称加密算法中,有两个密钥:公钥和私钥。它们是一对,如果用公钥进行加密,只有用对应的私钥才能解…...
MySQL-查询语句
数据库管理系统的一个最重要的功能就是数据查询,数据查询不应只是简单查询数据库中存储的数据,还应该根据需要对数据进行筛选,以及确定数据以什么样的格式显示。MySQL提供了功能强大、灵活的语句来实现这些操作。下面是通过help帮助查看到的s…...
【算法】【数组与矩阵模块】求数组中需要排序的最短子数组长度
目录前言问题介绍解决方案代码编写java语言版本c语言版本c语言版本思考感悟写在最后前言 当前所有算法都使用测试用例运行过,但是不保证100%的测试用例,如果存在问题务必联系批评指正~ 在此感谢左大神让我对算法有了新的感悟认识! 问题介绍 …...
centos安装Anaconda3
目录一、参考二、Anaconda简介1、用途2、关于anaconda三、下载安装1、下载2、安装anaconda3、配置环境遍历4、测试配置结果5、设置显示前缀一、参考 在centos上安装Anaconda 最新Anaconda3的安装配置及使用教程(附图文) 二、Anaconda简介 一句话&…...
【微信小程序】-- WXML 模板语法 - 列表渲染 -- wx:for wx:key(十二)
💌 所属专栏:【微信小程序开发教程】 😀 作 者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…...
【Linux】Linux中gcc/g++的使用
本期主题:程序的编译过程和gcc/g的使用博客主页:小峰同学分享小编的在Linux中学习到的知识和遇到的问题小编的能力有限,出现错误希望大家不吝赐🍁 1.背景知识 预处理(进行宏替换,去注释,头文件的…...
【Spring Cloud Alibaba】(五)Dubbo启动报错?一直重连报错?你值得学习的是排查问题的方法
系列目录 【Spring Cloud Alibaba】(一)微服务介绍 及 Nacos注册中心实战 【Spring Cloud Alibaba】(二)微服务调用组件Feign原理实战 【Spring Cloud Alibaba】(三)OpenFeign扩展点实战 源码详解 【Spri…...
adb命令的使用
命令 连接机顶盒 adb connect [机顶盒ip]查看已连接设备 adb devices断开某个机顶盒的连接 adb disconnect [机顶盒ip] or adb disconnect [虚拟机名称]断开所有设备连接 adb disconnect获取 root 权限 adb root挂载文件系统 adb remount当想往移动设备端 push 文件时显…...
springBoot自定义参数类型转换器
springBoot允许用户自定义转换器,以处理自定义请求参数协议。 方式一:通过实现接口:WebMvcConfigurer 并重写方法的形式。 Configuration public class BootConfig implements WebMvcConfigurer {/*** 自定义参数转换*/Overridepublic voi…...
OA系统在企业中的应用你知道哪些?
随着人工智能技术的不断发展,企业中的OA系统(Office Automation System)正在逐渐得到广泛应用。OA系统是一种集成了多种功能的信息化工具,能够帮助企业实现办公自动化、信息管理、决策支持等多种功能。本文将从OA系统在企业中的应…...
JAVA中,ArrayList 的扩容机制,含案例
JAVA中,ArrayList 的扩容机制,含案例 在 Java 中,ArrayList 是一个动态数组,它可以根据需要自动增长。当 ArrayList 中的元素数量超过其初始容量时,它会重新分配一个更大的内部数组,然后将现有元素复制到新…...
供应链的有效管理,分析指标有哪些
对于企业而言,供应链是一个很复杂的、体系化的生态系统,从原材料、到供应商、到生产、仓库、物流,最后到达经销商或者最终客户那里,这个链条很长。相关的分析指标也有很多,在这些指标里面也有非常多可以扩展、延申的内…...
嵌入式环境配置—VMware 软件安装和虚拟机的创建
目录 一、VMware软件的安装 二、虚拟机的创建 三、Linux操作系统的安装 VMware软件的安装 为什么要虚拟机? 嵌入式Linux开发需要在Linux系统下进行,我们选择了Ubuntu。 1.双系统安装 有问题,一次只能使用一个系统。Ubuntu基本只做编译用。需求&…...
阿里前端二面经典手写面试题汇总
实现类的继承 实现类的继承-简版 类的继承在几年前是重点内容,有n种继承方式各有优劣,es6普及后越来越不重要,那么多种写法有点『回字有四样写法』的意思,如果还想深入理解的去看红宝书即可,我们目前只实现一种最理想…...
【Eye】Fake News Reading on Social Media: An Eye-tracking Study
Fake News Reading on Social Media: An Eye-tracking Study Abstract 在网上传播假新闻(以及一般的虚假信息)最近被认为是威胁整个社会的一个主要问题。这种传播在很大程度上是由于新的媒体形式,即社交网络和在线媒体网站。研究人员和从业…...
想学计算机,应该学什么专业?
我们在考虑想学计算机,应该学什么专业?这个问题的时候,每个人都应该结合自己的兴趣来确定。有的喜欢编程、有的喜欢设计、有的喜欢做产品跟人打交道……自己有兴趣再加上自己的努力,掌握好专业技能,就一定能进入高薪的…...
Android逆向之旅—反编译利器Apktool使用教程
apktool下载软件首先下载apktool.bat和apktool.jar官网地址:https://ibotpeaches.github.io/Apktool/install/配置环境变量具体的apktool命令自行百度apktool 解包与打包解包: apktool d xxx.apk打包: apktool b xxx1.jadx安装与使用下载exe或…...
色环电阻的阻值如何识别
这种是色环电阻,其外表有一圈圈不同颜色的色环,现在在一些电器和电源电路中还有使用。下面的两种色环电阻它颜色还不一样,一个蓝色,一个土黄色,其实这个蓝色的属于金属膜色环电阻,外表涂的是一层金属膜&…...
Dataway 让 Spring Boot 不再需要 Controller、Service、DAO、Mapper 简单接口直接开发。
新的sql语法可以先看一下官网,部署起来之后会用到Dataql: DataQL - 数据查询语言https://www.dataql.net/先看一下效果 接下来来实现一下。 1 创建spring boot项目 导入依赖 <!--begin dataWay--><!--hasor-spring 负责 Spring 和 Hasor 框架之…...
C#窗口介绍
窗口就是打开程序我们所面对的一个面板,里面可以添加各种控件,如下图所示,我们可以在属性栏设置其标题名称、图标、大小等。图1 窗口图 图2 设置面板 图3 设置双击标题框,会生成Load函数,也可以到事件里面去找Load函数…...
SpringBoot:SpringBoot整合Junit 和 MyBatis(3)
SpringBoot整合Junit 和 MyBatis1. SpringBoot整合Junit2. SpringBoot整合MyBatis2.1 定义SpringBoot项目2.2 定义dao接口2.3 定义service层2.4 定义controller层2.5 配置yml/yaml文件2.6 postman测试1. SpringBoot整合Junit 在com.example.service下创建BookService接口 publ…...
网站复制按钮怎么做的/搜索引擎营销特点是什么
目录 一、一开始就要定好标准。 二、招聘前需要考虑的招聘的程序员的标准 三、你需要的是一个全职雇员还是一个合同工。 四、需要仔细考虑关注的焦点是经验、能量还是热情? 五、具体做事的时候,架构师要少一些,砖瓦匠要多一些。 一、一开…...
如何建设局域网网站/软文推广多少钱
一般是linux的dns没有设置ip,编辑/etc/resolv.conf添加ip不用重启就生效。转载于:https://blog.51cto.com/11725968/2356536...
成都网站维护多少钱/爱论坛
五一回来后,发现同事的电脑不能正常由grub引导了,自动进入了gurb的命令行状态。估计是有人动过,但是还好同事没有到岗所以有时间修好。 使用kernel 与initrd命令引导进入了linux,发现可以正常进入,说明只是引导的问题&…...
杨浦网站建设 网站外包/电商运营工资一般多少钱一个月
今天,Lyft很高兴宣布Flyte的开源,Flyte是一种结构化的编程和分布式处理平台,用于高度并发,可扩展和可维护的工作流。 Flyte在Lyft从事生产模型培训和数据处理已有三年多了,已成为价格,位置,预计…...
具有价值的响应式网站/seo优化方式包括
在王者荣耀游戏中玩家可以进到别的玩家页面查询该玩家的一些信息,包括历史战绩、常用英雄、亲密关系等。有时候为了保护自己的隐私不被别的玩家看到,此时用户可以设置查阅权限,这样隐私就不会被泄露了。那如何设置呢?下面就跟大家…...
设计制作的一般流程是明确问题/西安seo推广优化
窃以少年老成,中国称人之语也;年长而勿衰(Keep young while growing old),英、美人相勖之辞也,此亦东西民族涉想不同、现象趋异之一端欤?青年如初春,如朝日,如百卉之萌动…...