48 | 搜索引擎(下):如何通过查询的分类,让电商平台的搜索结果更相关?
黄申
该思维导图由 AI 生成,仅供参考
你好,我是黄申。
上一节,我给你阐述了如何使用哈希的数据结构设计倒排索引,并使用倒排索引加速向量空间模型的计算。倒排索引提升了搜索执行的速度,而向量空间提升了搜索结果的相关性。
可是,在不同的应用场景,搜索的相关性有不同的含义。无论是布尔模型、向量空间模型、概率语言模型还是其他任何更复杂的模型,都不可能“一招鲜,吃遍天”。今天,我就结合自己曾经碰到的一个真实案例,为你讲解如何利用分类技术,改善搜索引擎返回结果的相关性。
你可能会觉得奇怪,这分类技术,不是监督式机器学习中的算法吗?它和信息检索以及搜索技术有什么关系呢?且听我慢慢说来。
电商搜索的难题
我曾经参与过一个电商的商品搜索项目。有段时间,用户时常反馈这么一个问题,那就是关键词搜索的结果非常不精准。比如搜索“牛奶”,会出现很多牛奶巧克力,甚至连牛奶色的连衣裙,都跑到搜索结果的前排了,用户体验非常差。但是,巧克力和连衣裙这种商品标题里确实存在“牛奶”的字样,如果简单地把“牛奶”字眼从巧克力和服饰等商品标题里去除,又会导致搜索“牛奶巧克力”或者“牛奶连衣裙”时无法展示相关的商品,这肯定也是不行的。
这种搜索不精确的情况十分普遍,还有很多其他的例子,比如搜索“橄榄油”的时候会返回热门的“橄榄油发膜”或“橄榄油护手霜”,搜索“手机”的时候会返回热门的“手机壳”和“手机贴膜”。另外,商品的品类也在持续增加,因此也无法通过人工运营来解决。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了如何利用分类技术改善电商平台的搜索结果相关性。作者指出传统的向量空间模型并不适合电商搜索系统,提出了通过查询的分类来改善搜索结果的方法。文章介绍了两种分类方法,并建议综合使用这两种方法,通过权重加和的方式结合两种方法的概率,使搜索系统更加智能。作者还讲解了如何利用分类的结果改变搜索的排序,以及如何在Elasticsearch中动态修改排序结果。最后,文章提出了思考题,鼓励读者分享和讨论如何改进基于用户行为反馈的分类模型。整体而言,本文深入探讨了电商搜索引擎相关性模型的优化方法,为技术人员提供了有益的思路和实践指导。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《程序员的数学基础课》,新⼈⾸单¥68
《程序员的数学基础课》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(12)
- 最新
- 精选
- 拉欧是否还是通过朴素贝叶斯进行优化?
作者回复: 这里确实可以通过朴素贝叶斯来构建一个分类器
2019-04-053 - 骑行的掌柜J黄老师除了刚刚文中您讲的Elasticsearch利用分类结果来改变搜索排序,还有没有其他的可以加深对查询分类器和搜索引擎结合使用的实操案例?谢谢
作者回复: 如果你对实现细节感兴趣,可以参考我的书《大数据架构和算法实现之路》 https://item.jd.com/12206386.html
2020-07-142 - 建强思考题: 如果获取的是P(C|f1,f2,...fn),个人理解也可以采用朴素贝叶斯来构造分类器, 即P(C|f1,f2,...fn) = P(C|f1) * P(C|f2) * P(C|f3)....*P(C|fn),而各项P(C|fi)全部通过用户的购卖行为得到。 举例: 用户有6次购买行为,其中5次购买的是“国产计算机”,1次购买的是“国产咖啡”,则有: 分类C = {计算机类、咖啡类}, 查询关键词f = {国产、计算机、咖啡} 于是就有分类器: P{计算机类 | 国产, 计算机} = P{计算机类|国产} * P{计算机类|计算机} = 5/6 * 5/6 = 25/36 P{咖啡类 | 国产, 计算机} = P{咖啡类|国产} * P{咖啡类|计算机} = 1/6 * 0 = 0 P{计算机类 | 国产, 咖啡} = P{计算机类|国产} * P{计算机类|咖啡} = 5/6 * 0 = 0 P{咖啡类 | 国产, 咖啡} = P{咖啡类|国产} * P{咖啡类|咖啡} = 1/6 * 1/6 = 1/36 因此当用户输入“国产 计算机”时,分类器会优先出现计算机类,而当用户输入“国产 咖啡”时,分类器则会优先出现咖啡类。 这种改进是否正确,请老师指教。
作者回复: 对,主要思想就是这个意思。不过不太理解这里的6次购买行为,是和查询有关的吗?还是和查询无关的?
2020-12-271 - escray不是很了解搜索引擎的实现原理,只能凭借直觉来讲。 如果把查询看做多个词的组合,那么应该也可以采用线性组合的方式吧,同样可以先用商品目录来构建查询分类器,然后把分词的结果按照一定的规则,选择合适的分类器,比如“低脂牛奶巧克力”要放到巧克力类目;而“低脂巧克力牛奶”要归为牛奶类目;。 在有了一些用户行为数据之后,可以逐步加大用户行为在其中的比重,同样采取简单的线性加和。 其实如果查询语句越长,越有可能判断出搜索的类别和用户的真实意图。
作者回复: 基本思路很好啊👍
2020-06-061 - wanghua老师,有更多关于垂直领域搜索引擎提高相关性的资料推荐么
作者回复: 推荐我自己写的一本书《大数据架构和算法实现之路:电商系统的技术实战》,里面有不少介绍
2021-04-01 - 全有我就是这样来用的;哈哈
作者回复: 英雄所见略同😃
2020-05-15 - Paul Shan思考题 多个词为条件的概率可以近似看成这些词是独立的,然后求出条件概率的乘积。
作者回复: 是的👍
2019-10-17 - 张九州我想的是先按照每个分类计算,方法和只有一个分类的情况一样,然后再根据用户对每个分类的浏览搜索行为作为排序权重,不知道对不对
作者回复: 这个思考题的重点是考虑多个词的联合分布概率和每个词的分布概率之间的关系,是否用到相互之间的独立性等等
2019-10-14 - ken先算出关键词的分类 再给分类字段 提升权重 查询
作者回复: 具体分类字段,是指有一个指定的字段用于表示其分类吗?
2019-08-274 - Paul Shan向量空间求出的结果顺序是基于文本的统计信息。当商品名包含的关键词过少而描述包含的关键词过多,这种相关性就更多的反映了描述的相关性,而描述中的词汇不如文章中的词汇有代表性,还反映了卖家卖出货物的意愿,信息的准确度大打折扣。为了解决这个问题,在查询结果的排序中优先显示和查询类别一致的结果。为了让类别信息优先处理,需要构建查询到商品类别的映射,这个映射可以通过贝叶斯模型来处理,也就是求出查询为条件,各个类别出现的概率,这种方法对于商品数据分布不均匀的情况下会有不少误差。还可以观察用户行为,构建查询到商品类别的映射,这种方法动态实时高效,缺点是没有历史数据的情况下如何处理。可以综合这两者来加权处理。用户数据量少的时候,贝叶斯模型权重大,用户数据量大的时候,基于用户行为的模型权重大。2019-10-174
收起评论