国内几个大型电商公司基本每日都有较大的流量通过搜索产生成交,具有优秀用户体验的搜索功能必然带来巨大的商业收益。那他们是怎么让你更快更好地找到你想要的东西呢?搜索入口很可能是用户开始使用 app 的起点,搜索的易用性是影响产品初次体验的重要要素。
本文主要结合本人的一些电商算法经验,以手淘搜索为例展开,介绍产品和诉求层面以及如何使用搜索入口来做用户引导,后续文章会结合相关算法深入展开。
引导: 带着人们向某个目标行动,在行动上帮助人们走出困境。
搜索引导: 帮助用户更快的完成搜索过程,找到目标信息。
具体到电商: 帮助用户找到所需商品,并达成交易。
特点: 搜索和推荐场景时效性强,千人千面,用户兴趣多变
用户输入搜索关键词,搜索系统根据输入信息,筛选出用户可能喜欢的内容,同时按照某种重要性进行 排序 并展示。简单而言,搜索可以分为三步。
“从 2013 年起,淘宝搜索就进入千人千面的个性化时代,搜索框背后的查询逻辑,已经从基于原始 Query 演变为【Query+ 用户上下文 + 地域 + 时间】,搜索不仅仅是一个简单根据输入而返回内容的不聪明的“机器”,而是一个能够自动理解、甚至提前猜测用户意图(比如用户浏览了一些女士牛仔裤商品,然后进入搜索输入查询词“衬衫”,系统分析用户当前的意图是找女性相关的商品,所以会展现更多的女士衬衫,而不是男生衬衫),并能将这种意图准确地体现在返回结果中的聪明系统,这个系统在面对不同的用户输入相同的查询词时,能够根据用户的差异,展现用户最希望看到的结果。变化是时刻发生的,商品在变化,用户个体在变化,群体、环境在变化。在搜索的个性化体系中合理地捕捉变化,正是搜索要去解决的课题。”
——阿里资深算法专家元涵
在进行搜索功能的设计时要以 简单、高效 为核心目标, 搜索即服务 。电商搜索从大的架构或流程上来说,与通用搜索引擎有非常多的相似之处。包括对数据的 收集、分析、索引 ,进而根据用户的搜索词在搜索引擎中 检索 ,完成商品与搜索词之间的相关度评价,最后对结果进行 排序 展现,并实时响应用户的相关行为和筛选 反馈 。
根据搜索的过程,可以拆解用户的搜索流程如下: 搜索入口 - 搜索触发 - 内容输入 - 点击搜索 - 反馈结果 。我们从这个流程的各个环节上来看三大电商的搜索功能,进行对比分析。
对比是个学习与分析的好方法,接下来的若干章节将从上述各个环节展开,主要介绍国内 top3 电商为主,所以分别以 拼多多、淘宝、京东 的搜索功能为切入点进行对比,并给出相关技术方案。
本文从前两个环节来进行介绍,搜索前 (搜索入口 - 搜索触发):
一级 tab(拼多多)
顶部中间搜索框(淘宝, 京东, 天猫)
搜索入口吸顶(淘宝, 京东, 拼多多, 移动)
这里没有找到将头部右侧 icon 作为搜索入口的电商,所以找了非电商的例子 (移动)。
分析: 几乎所有大型电商对搜索入口 定位 均较 高 ,给了相当 重要的位置 ,尤其是拼多多给了 一级 tab 作为用户的搜索入口,但首页取消了搜索入口;并且在搜索入口展现层面均设置了 吸顶 (下滑操作不会让搜索框消失),拼多多搜索入口在一级 tab 下吸顶。搜索位置体现了产品对搜索功能的定位问题。
默认底纹: 内容前置,用户在不输入搜索词的情况下直接得到想要搜索的词
常见情况: 商品名称关键词,类目词,品牌词,特定活动
运营人工配置
热门搜索词、热门品类、热门活动
实时对用户最近一次的点击 / 收藏 / 加购 / 搜索词,使用自然语言处理 进行关键词、品类词、活动提取 ,并 在搜索框内显示 。这里涉及文本处理 词性识别 和 命名实体识别 (NER, 把无结构文字转变为有结构文字 ),核心词 (名词)、形容词 (属性 / 标签等) 提取过程,可以考虑基于规则或统计的词性标注 (HMM)。
生成式: seq2seq ,通过将用户的近期 n-1 个时间步内的行为序列输入 rnn 模型 ( lstm ),生成预测未来第 n 时间步的行为,可以考虑将商品标题,属性,用户特征 / 标签一同输入训练 user embedding,然后在用过一个 decoder 对其进行解码 。
检索式: user 与 query embedding到 同一个向量空间 中, 并最终计算两者的相似度,最终将与用户相似较高的 topN 进行召回 ,并使用模型 预估意图及转化 最高的 query 作为底纹。
doc2vec 和 word2vec方式对用户和 query 进行 embedding,query 的文本为搜索曝光日志中此 query 下转化最高的 n 个商品 (tittle, 描述等),user 的文本则为用户近期行为交互相关商品的文本 (tittle, 描述等),使用 doc2vec 或 word2vec 进行训练,最终产出 query 及 user 的 embedding vector。
检索式向量召回性能开销大,一般现在外层使用聚类模型进行一级查找,确定一级簇以后再进行二级查找。
触发搜索框后,在绝大数电商搜索产品中均有不同程度的搜索推荐版本,对于业务来说,这是 cross sale 的方式。常见的有 搜索历史、热门搜索、搜索发现 ,并且除了搜索历史,热门搜索和搜索发现一定程度上需要做 语义归一化,避免浪费坑位,如“白裤子”与“裤子 白色” 。
搜索历史的功能建立在一定假设的基础上,假设用户使用 搜索具有一定重复性 。搜索历史帮助用户快速检索历史需求, 快速 进行 回放 。并且通过数据分析可以发现,搜索历史的 query 词更加高频,转化也比其它搜索推荐词转化高;所以 历史搜索一般更靠近搜索框 ,并且搜索词按时间先后顺序由近及远,数量过多时会进行 折叠或只保留 N 个 ,用户有 清空 历史搜索词的 选项 。
通过已有用户的搜索日志,进行数据分析,选择将高频 & 高转化搜索词进行展现,便于 用户冷启动 / 意图冷启动 进行筛选。这一过程中也有运营同学的参与,如大促热门活动主题。热门搜索推荐词应 避免长尾,应尽量高频、宽泛、多样 。
注: 用户冷启动一般指新用户,意图冷启动指用户之前未有的需求。
这一板块使用了千人千面,更加个性化。并且很多时候有换一批的功能,可以让更多内容有曝光机会。由于有搜索历史的存在,所以搜索词在个性化的同时,应尽量 避免与搜索历史栏出现语义重复 ,提供更有价值的搜索词,从而 最大化曝光效率 ,并且为了防止过多推荐词带来干扰,一般搜索发现词在 10 个以内 。
这个模块的技术方案与底纹推荐类似,只不过最终的展现不是一个,而是 topN,这里就不再赘述。
根据搜索的过程,可以拆解用户的搜索流程如下: 搜索入口 - 搜索触发 - 内容输入 - 点击搜索 - 反馈结果 。我们从这个流程的各个环节上来看四大电商 app(京东、天猫、手淘、拼多多) 的搜索功能,进行对比分析。
前文已经介绍了搜索前的一些产品及技术方案;本文还是电商搜索为例,以用户搜索过程中输入搜索词 (点击“搜索“按钮到按下”回车“之间发生的事) 的过程为切入点,结合产品及技术方案展开,结合相关搜索词功能进行论述。
关键词 匹配 / 补全 / 联想 / 纠错 的作用主要有三个: 引导、纠错和高效 。
通过统计发现,用户在 第一次查询 中 得到预期 搜索结果的 概率非常低 ,所以需要引导查询自动建议可以减少用户搜索的工作量,并通过数据挖掘 (群体行为和智慧) 来给出高频恰当的搜索建议。
四个电商 均使用 了 前缀匹配 ,但是 手淘和天猫使用了拓展 icon ,可 快速将推荐词黏贴至搜索框,京东使用了属性、标签、类目扩展 (除了 对输入内容做联想 ,还会展示出与关键词相关的维度, 自动补全关键词 ,增加用户的选择), 拼多多 则相对搜索词产品 探索较少 。不过目的都是帮助用户 快速锁定意图,并开展搜索 。
用户在搜索框输入字符时,会在搜索框下面实时显示 下拉提示词 给用户, 方便用户选择 。可以帮助用户快速输入和优化搜索条件,且 避免输入错误 ;在此基础上很多电商 app 也出现了 筛选功能 ,在当前搜索建议词基础上进行扩展,进一步 减少用户操作 。 一般在用户搜索的不够具体,会推荐该搜索词更细的分类 。淘宝的辅助多重筛选搜索,输入时展现的一系列联想内容,点击右边的一个 拓展 icon ,就可以 采用联想出的内容 ,在此基础上继续缩小范围筛选,从而 帮助用户获得最接近需求的内容 。
通过当前 实时输入 的词去 匹配候选词 ,一般 查询频度和同查询词的历史查询记录 为 重要参考依据 。
在搜索词补全和联想数量上,淘宝为 10 条 ,拼多多为 10 条,京东 / 天猫超过 10 条,但是不能过多,过多的选择会给用户造成记忆负担,并且占据空间,有损用户体验,所以需要 控制数量以便信息不会过载 。
当然部分电商在历史的版本迭代中会尝试在搜索输入阶段进行纠错,比如输入联衣群,下拉框中 自动纠正 为连衣裙的一些选项,目前四个电商 app 均并无此功能,而是在搜索结果展示内做纠错及提醒; 自动容错功能,将极大地提升用户体验 ,并提升用户的购买率。
主旨: 前缀匹配原则,完整词未出现 时一般使用 补全 / 联想功能,品类引导词为主 ;当出现 明显品类词后 开始出现更 细粒度属性及标签筛选词 。一般从 query log 中挖掘出大量候选 query ,并且保证前缀相同,然后根据某种 计算模型 给候选 query 计算一个分数,最后按照分数选出 topK 作为最终结果。
主要考虑因素: 当前搜索词,用户 (性别、年龄等特征),日志中的群体智慧
常见搜索引擎均带有 suggestion 功能,直接使用
使用前缀匹配后的候选词 ( Trie 树 + TopK 算法 , 回溯算法遍历 trie 树),使用用户搜索频度最高的 topK 个搜索词, 但是这样会使长尾词无法得到曝光机会。
在用户进行搜索商品时,通过用户与搜索词信息进行 意图预测 ,并辅之以 类目、性别预测,前缀匹配后 最终将某个 性别和类目下的共现最高的 topK 热搜词作为搜索框下拉框提示词。
复杂模型版,使用 前缀匹配算法进行候选集召回 (若 召回量过少,考虑非前缀匹配结果 ),并做 简单截断 ;然后使用 用户特征 (性别、年龄、行为序列)、context 特征 (季节、天气、温度、地理位置) 进行、当前搜索词的 embedding vector ,然后 候选搜索词也有一个 embedding vector,三个 vector 分别与候选 vector 计算 cosine similarity ,最终使用一个 线性模型融合 三个分数,最终的排序结果会进行语义 去重再选择 topK (这里也可以用生成模型来做排序)。
这里可以将用户、context 均视为搜索词,就可以用日志数据构造 doc,最终使用 doc2vec 或 word2vec。
主要针对复杂模型版 1 的排序特征上,继续 增加特征, 并考虑更多的维度 。
通过语义、行为、session log 等挖掘出 query 间相似分,并加入用户、搜索词、context 类特征及其交叉特征。多维度相似融合再排序: 按照点击相似度、文本相似度、Session 相似度衡量 Query 之间的相似度,得到候选的 Pair(可选)交给重排序模块,对 Query pair 的优先级做优化,生成 Top K 的改写结果。
基于行为: item cf/swing、simrank++
基于 session: word2vec、seq2seq
基于内容: query2vec(类似 word2vec,构建 query 序列)
模型: LR/GBDT
样本: 用户日志,行为加权 (展现:1, 点击:5, 购买:50)
特征: 搜索词的 pv/ctr/cvr,用户是否活跃,用户画像 / 特征,用户 + 候选词 (查询词 / 浏览详情页与热搜候选词相似度),context 特征 (地理位置,温度,天气等)
针对纠错,还可以做一个模型,但是上述 query 方式可以一定程度上避免了很多的输入有误问题。针对纠错可以考虑如下 2 种:
Non-word 纠错(准备一个电商语料库字典,输入词不在整体字典中,即可以判定为错词)
Real-word 纠错 HMM(噪声信道模型, 利用 unigram+bigram+trigram,选择最优的 token 组合,Query pair,正确及错误词候选集合训练转移矩阵)
针对候选词进行语义归一,一般将候选 query 相对搜索 query 的扩展部分进行相似度计算,以高于某个阈值后,只保留得分高的一个候选词,这样可以节省有限的坑位资源。
清除的 icon: 输入内容时,引导信息消失,有的还会伴随在搜索框中出现清除的 icon,清除的 icon 主要方便用户进行二次搜索时一键清空当前信息,省去了逐字删除的麻烦;根据输入内容,进行关键词的匹配。
联想词下商品数量: 产品层面还可以做一个事情,就是将关键词对应的搜索结果数量前置,便于用户控制搜索词的颗粒度,也避免出现无结果或者少结果的情况,特别是针对相对稍长尾的搜索词而言。
搜索引擎在信息检索上的优势,不仅体现在自身在 算法和计算能力 上的优势,能让搜索更加 贴近需求 ;并且 结合对用户信息的量化分析和数据把控 ,可以提供 更加智能 的信息服务 ( 千人千面 搜索)。
搜索后,能够检索出来的商品通常非常多,如何将这些商品清晰有序地展示给用户,让用户快速、准确地找到想要的商品?这涉及到以下若干个问题:
难免用户在搜索过程中有错误的输入,纠错功能可以通过算法 判断后输入有误,然后展示正确搜索词 的 商品列表 给用户,并 友好地告知 用户正确的搜索词,并确认是否需要搜索系统判断有误的搜索词 (确实有 长尾、低频 词搜索需求存在)。考虑到了整个纠错功能的容错性, 减少了用户输入错误 或者本身 记忆错误 带来的搜索问题,用户也不用再次进行搜索了。自动容错功能,将极大地 提升用户体验 ,并提升用户的购买率。
技术方案: 前文提到的 Non-word 纠错 和 Real-word 纠错 ,这里不再赘述。
当搜索 结果过多 或 相关度结果参差不齐 时,召回的商品还是海量的,对于用户精准快速的获取商品仍然是一个不小的挑战,而 排序和过滤 的功能则能够很好的 缓解 这一情况。过滤和排序能够一定程度上帮用户 调整和缩小搜索商品列表 ,大幅度 降低 用户下滑寻找商品的 工作量 。
目前筛选器是各大电商的 搜索产品标配,使用频率 非常高。筛选器 通过传递筛选参数 ,搜索引擎会在原有召回基础上 进行商品过滤 。筛选在各大电商均做了 2 类方式 的展现,当 筛选项维度少 时,可以将筛选(与排序一起)放置商品列表结果中间 (类似 淘宝搜索的锦囊 ),一般在浏览若干个商品以后出现;若 维度丰富 ,一般使用 侧边栏 形式。
商品类目及属性标签的挖掘: 主题模型、词性挖掘、图像算法 等, 后续文章 介绍 商品结构化 相关的文本及图像算法,本文先不过多介绍。
用户进行搜索后,出现 无结果或少结果 原因可能有以下几点带来:1. 输入错误的搜索词 ;2 筛选条件过多 或搜索词 过于长尾 / 具体 ;3. 本身平台符合搜索需求的 商品少或无 。对于 前两种 ,可以提示用户并进行 自动容错 ,展现正确的商品列表;对于 第三种 情况,一般会 匹配相关替代 商品进行补足,或 提示用户更换搜索词 ,有些平台推出了 订阅服务 ,当搜索结果更新时,会向用户 主动推送 。
往简单来讲,用户输入了搜索词,系统通过搜索词找到与搜索词相关的商品集合,系统通过用户及商品的情况进行排序,最终展现给用户。
从 流程 上来说,如下图
接下来我们分别通过讲解 QP、召回、排序来对上述流程解构。首先来看以下 QP 里面的各个模块。
词性的识别有助于整个搜索系统快速地找到和定位相关商品,也可以帮助 快速定位核心词、属性词 等。
搜索过程中, 不同 term 对于检索有不同的意义 ,不能本末倒置。 不同重要程度的词 ,应该在 召回排序阶段给予相应不同的影响,核心词具有更高的分值 。当用户搜”children toys“召回商品时,核心词是 toys,children 为修饰词,根据 term weight 来进行排序降权的。 细粒度地还可以做进一步区分产品词、品牌词、型号词、停用词 。query 被完整匹配和部分匹配的权重是不同的、单词命中和多词命中同一商品也需要考虑权重情况。
其它还包括了 中心词逻辑、热词逻辑、纠错系统、丢弃词逻辑、词性标注等工作 。常见方法词性识别有, 基于规则 和 基于统计的词性标注 (HMM)。
基础属性:pv、uv、gmv、ctr、cvr 等
业务属性:品牌词、大促属性
词质量分
同义词、形近词、同音词、子母品牌、类目、文本相似性
用户强弱意图 / 转化意图识别,可以快速帮助搜索系统 定位召回及排序策略 ,不同的意图可以带来不同的排序和展现效果。如 强意图下相关性因子应该加强,弱意图下应该更加注重点击 / 转化等反馈行为量 。
根据用户行为和 query 的静态信息,分析 query 是 搜索型(偏向买) 还是 浏览型(偏向逛) 。后续利用模型对 query 分类, 用以分析排序策略对不同类型 query 的影响,方便对不同类型 query 作不同排序 。
分析用户个性化标签的浏览行,转化型趋势。
Query 的类目预测主要是, 分析 Query 和哪些类目的意图更相关 (当然这里 用户维度的信息也会被考虑进来 )。query 通过搜索引擎召回后,一般将 类目相关性作为 重要的 海选排序因子 ,保留一部分商品,一方面保证了 效率 ,另一方面也 从源头保证类目的相关性 ,保证 用户体验 。从实际工作来看, fasttext 是一个非常不错,实践也较快的算法。
语义搜索是指不单单考虑词维度的精确匹配,而是语义层面来做。增加搜索结果的相关性,提升用户体验外,也可以一定程度上遏制商家商品标题堆砌热门关键词的问题。
精排系统主要服务于个性化排序,召回粗排由搜索引擎负责完成,精排侧重更细粒度特征,更复杂模型,实时性。精排所需特征,模型基本复用搜索引擎的技术,可以支持高密度的数据存储和高并发读取。
预测出每一条商品在给定以上条件组合(q,u,o)下发生交易行为的概率。
姚凯飞,Club Factory 推荐算法负责人。硕士毕业于上海交通大学,前阿里推荐算法工程师,多年电商及视频推荐经验,目前在出海电商 Club Factory 负责推荐算法工作。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 我们