但是在构建搜索系统的初期总是无法精准地帮助用户找到想要的商品主要原因有以下几点:
- 不同的用户对同一种诉求的表达往往是有差别的,往往会存在一种比较常见的现象,用户输入的query并不能清晰准确的表达需求。这一块是可以通过较好的产品设计及实时反馈来做精确需求表达捕捉,产品设计主要是前面介绍的引导类产品(下拉推荐、筛选、锦囊等),实时反馈是指快速捕捉用户在当前query下的正负反馈,系统捕捉其中的query意图。
- 搜索系统对用户query的理解能力较弱,无法挖掘出用户的真实需求。这一块则更多是算法发力的点,通过文本、行为、session等数据挖掘query本身的内涵,这一块更多是QU(query understanding)的工作。
- 用户输入了长尾词,过多条件无法匹配到商品。这一块也可以通过QU和QR(query rewrite)来逐步解决。
- 召回结果集的排序不合理,可能用户需求的内容被排在后面而未曝光。这一块则是排序的问题了,建立一个良性的评分排序公式,并且利用算法合理建模用户决策过程。
1.1 QU/query understanding
1.1.1 概述
1.1.1.1 目的
- 拆解用户搜索词的意图
- 比如新品,年龄,尺码,属性,类目等搜索意图识别及归一
1.1.1.2 任务
- Query词性及主体结构,主要词/描述词等: 2018最新款适合胖胖的女生穿的连衣裙
- 预测用户搜索商品类目(category)性别(gender): 手提电脑、t恤 女
- 属性&标签识别: 品牌,颜色,尺寸: 裙子红色,43码nike球鞋
- 搜&逛:强意图/转化&弱意图/逛: 连衣裙 & Iphone XR 256G
1.1.1.3 方法
- 方法词表穷举法,规则解析法,机器学习方法
1.1.1.4 意图识别的难点
- 输入不规范,不同的用户对同一诉求的表达存在差异。
- 多意图,“苹果” 可以是产品词,也可以是品牌词;可以是手机,也可以是水果。
- 数据冷启动。当用户行为数据较少时,很难获取准确的意图。
1.1.2 词性&主体识别&属性/标签识别
词性的识别有助于整个搜索系统快速地找到和定位相关商品,也可以帮助快速定位核心词、属性词等。
搜索过程中,不同term对于检索有不同的意义,不能本末倒置。不同重要程度的词,应该在召回排序阶段给予相应不同的影响,核心词具有更高的分值。当用户搜”children toys“召回商品时,核心词是toys,children为修饰词,根据term weight来进行排序降权的。细粒度地还可以做进一步区分产品词、品牌词、型号词、停用词。query被完整匹配和部分匹配的权重是不同的、单词命中和多词命中同一商品也需要考虑权重情况。
- 词属性
基础属性:pv、uv、gmv、ctr、cvr等
业务属性:品牌词、大促属性
词质量分
- 词关系
同义词、形近词、同音词、子母品牌、类目、文本相似性
- 词维度的用户画像
1.1.4 强弱意图
用户强弱意图/转化意图识别,可以快速帮助搜索系统定位召回及排序策略,不同的意图可以带来不同的排序和展现效果。如强意图下相关性因子应该加强,弱意图下应该更加注重点击/转化等反馈行为量。
- 强意图/转化型: 需要快速帮助用户定位所需的商品 (因素:价格、品牌、品质、商家等),推送引导的目的是让用户作出购买,收藏等决策,追求转化的数量+速度+质量。
- 弱意图/闲逛型: 需要帮助用户发掘新的兴趣、新的话题,但同时不能让用户 感觉无聊,目的是满足用户需求,把用户喜欢的推荐给他,追求 pv/点击率。
根据用户行为和query的静态信息,分析query是搜索型(偏向买)还是浏览型(偏向逛)。后续利用模型对query分类,用以分析排序策略对不同类型query的影响,方便对不同类型query作不同排序。
- session+query内商品的点击率
- Session内不同query的个数
- 空格数量
- 相关一级类目个数
- 停留时长再逛和搜query中表现差异大
- 行业分布:服装鞋包/3c、美容护理、食品保健、话费充值差异大
1.1.5 类目预测
1.2.1.1 问题
- query和商品描述之间存在gap,特别是中长尾query。多种描述,信息冗余,属性检索,宽泛意图。
1.2.1.2 目标
- 文本和意图,通过对原始Query进行改写,生成一系列相关Query,把相关Query作为原始Query的补充,与原始Query一起参与搜索,从而得到更加丰富和准确的匹配结果
- query embedding(query映射到query),可以针对“多种描述”和信息冗余问题意图改写:query映射到意图,主要针对属性检索和宽泛意图类型;也可以进行相似query挖掘。
- 向量改写流程: query向量化->向量相似查找->相关性判断;借鉴skip-throught-vector,使用seq2seq重建句子周围的句子,假设某个session序列是(s1,s2,…,sn),那么一条训练数据为(si-1,si,si+1),encoder是si的词序列的lstm,decoder是分别si-1和si+1,这样训练下来decoder的上下文向量就学到了这个句子在session中的上下文表示。
1.2.3 multi-method
- 通过语义、行为、session log等挖掘出相似的query。
- 多维度相似融合再排序: 按照点击相似度、文本相似度、Session相似度衡量Query之间的相似度,得到候选的Pair(可选)交给重排序模块,对Query pair的优先级做优化,生成Top K的改写结果。
- 基于行为Item cf/swing、Simrank++
- 基于session Word2vec、seq2seq
- 基于内容 Word2vec
- 融合 LR/GBDT
2.1 检索依据
- 电商商品: 图片+标题+属性+交互,检索项包括但不限于:商品名称,商品标题、副标题,商品描述,商品参数、规格,商品品牌,商品品类,别名关联商品,促销类型
- 相关性(query&tittle/content,行为,session): 融合点击相似度、文本相似度、Session相似度衡量Query之间的相似度,除了前面介绍的通过query session来做query embedding,用query来重建其点击过的宝贝标题/描述序列同样适用,只不过decoder阶段换成query点击过的标题。
2.2 语义搜索
语义搜索是指不单单考虑词维度的精确匹配,而是语义层面来做。增加搜索结果的相关性,提升用户体验外,也可以一定程度上遏制商家商品标题堆砌热门关键词的问题。
- 二次/三次召回:放弃权重低term,扩大检索字段和检索范围
- Query 纠错 & 同义词改写:同时用原词和同义词去检索,最后对两者返回的结果取并集。
- 分类意图识别的优化,首先根据 Query 分布定义了 8 类意图:可以通过识别 Query 中 Term 的意图来判定整个 Query 的意图
- 静态分体现商品的转化,商品品质,背后供应商品质
- 动态分体现商品与query的相关性,个性化分,用二元分类(Binary Classification)来优化点击/购买概率。
3.1.1 评分系统-静态分
- 相关度、商业化因素、个性化因素、人为因素、数据模型统计。
搜索技术服务模块必然与产品设计迭代并行,并且通过数据分析来支持整个流程优化,抓住重点和系统最大短板进行迭代。
下一篇文章以搜索相关的数据分析为导向,介绍搜索产品与功能需要关注的一些指标,以及对整个平台的作用。
系列文章:
对电商搜索感兴趣,并想深入了解算法的小伙伴,可参与我的live:
其它相关文章及live整理: