标签权重在个性化搜索排序中的最佳实践

本文涉及的产品
推荐全链路深度定制开发平台,高级版 1个月
简介: 本文通过阿里云开放搜索中的tag_match 函数的标签匹配应用,详细解读标签权重在搜索排序召回中的业务价值

个性化搜索需要满足:

• 具备较强的语义理解能力,精准命中搜索需求;
• 满足搜索关键词和内容的多样性特点,可根据用户行为优化排序,实现个性化搜索;
例如:

  1. 搜索“吃鸡”,可能是游戏吃鸡内容搜索,也可以能是新闻内容搜索;
  2. 用户点赞过的店铺优先排序出现;

开放搜索tag_match 函数在个性化搜索中的应用

功能介绍:
tag_match : 用于对查询语句和文档做标签匹配,使用匹配结果对文档进行算分加权。涉及query和文档匹配的很多需求都可以使用或者转化为tag_match来满足,对实现搜索个性化需求尤其有用。
产品文档:https://help.aliyun.com/document_detail/51259.html?spm=a2c4g.11186623.6.618.28f833251UOr7V

适用场景

内容搜索:
一个大型的综合性论坛,帖子可以被打上各种各样的标签(搞笑,体育,新闻,音乐,科普..)。我们在推送给开放搜索的文档中,可以为每个标签赋予一个标签id(例如搞笑-1, 体育-5, 新闻-3, 音乐-6..), 然后通过一个tag字段存储这些标签。 如果我们对帖子做过预处理,甚至能得到每个帖子每个标签的权重。

例如:

  1. 一个搞笑体育新闻的帖子可以得到搞笑的权重为0.5,体育的权重为0.5,新闻权重为0.1,则这个帖子的tag字段的值为[1 0.5 5 0.5 3 0.1]对会员用户,通过长时间的积累,我们能获知每个用户的兴趣标签。
  2. 用户是nba_fans,对体育和搞笑很感兴趣,他对应的体育和搞笑标签的权重分别为0.6和0.3。那么这个用户查询时,我们就可以通过kv_pairs子句把这个信息加到query里面。假如这个kv_pairs子句名字为user_tag, 那么nba_fans的user_tag的值5=0.6:1=0.3。这样,我们只要在精排表达式中配置了tag_match(user_tag, tag, mul, sum), 我们就能够实现对用户感兴趣的帖子加权,把用户更感兴趣的帖子排到前面。
  3. nba_fans搜索到上面那个帖子时,搞笑和体育这两个标签能够匹配到。通过指定kv_op参数为mul,我们会把query和doc中的值相乘,他们各自的计算分数分别为(体育:0.5 0.6 = 0.3, 搞笑:0.5 0.3 = 0.15)。通过指定merge_op参数为sum,我们会把体育和搞笑的分数加和(0.3+0.15 = 0.45),这个加和的分数会加到最终的排序分数上。这样,我们就能够实现了对这个用户感兴趣帖子的排序加权。

商品搜索:
商品可以具有多个属性标签,例如1表示年轻人(年龄)、2表示中年人(年龄)、3表示小清新(风格)、4表示时尚(风格)、5表示女性(性别)、6表示男性(性别)等。

  1. 假设我们只想表示商品有没有某个标签,不想区分哪个标签更重要。这个标签通过options字段来保存。那么年轻时尚女性的衣服的options字段可以表示为[1 4 5], 注意这里只有标签key,没有value。用户也都有自己的属性标签,和商品标签对应。例如年轻女性用户,历史成交中多购买小清新风格衣服。这该用户的查询可以写为user_options=1:3:5。注意这里kv_pair中也是只有标签key,没有value的。
  2. 要实现对符合用户标签喜好的商品加权,我们可以在formula中使用tag_match(user_options, options, 10, sum, false, false)。这里我们通过user_options和options指定了query和doc的标签信息。kv_op设为常数10,表示只要有标签匹配到,那么匹配的计算结果就是10。has_default为false,表示我们不需要初始值。doc_kv为false,表示我们doc中只存储了key信息,没有value。这样,上面的年轻女用户查询到上面的衣服时,女性和年轻两个标签能够匹配上,这两个标签的计算结果都是10。通过sum这个merge_op,能够得到这件商品的最终加权分数为20。通过这种方式,即使我们没有标签的权重信息,也能够实现对匹配到的文档做排序加权。

标签权重优化案例实践:

假设文档内容共有如下10类型的标签:
1-财经, 2-科技 ,3-体育 ,4-娱乐 ,5-时尚, 6-教育 ,7-旅游 ,8-游戏 ,9-科普 ,10-医疗

案例1:关键词相同,但是标签不同的title
如图,搜索“吃鸡”出现两篇doc,但是二者的类型不同,分别是1-财经、8-游戏;

image.png
实践应用
如果想将“8-游戏”标签的文档在前面展示,可设置tag_match函数

image.png
以下分别演示配置在排序表达式或sort子句中的方法:
• 排序表达式展示的结果:

image.png
• sort子句展示的结果:

image.png
案例2:多标签综合得分展示(可针对用户的个性化推荐)
如图,搜索“运动员",在一级标签相同的情况下,需要匹配二级标签的得分

image.png
实践应用
如果想优化二级标签,把“10-医疗”标签的文档在前面展示,可设置tag_match函数
配置在排序表达式或sort子句中的方法:

image.png
• sort子句展示的结果:

image.png
案例3:多标签同类型,不同得分
如图,搜索“运动员",红框展示的内容,都同属于同样的标签,但是每个标签的打分不同;

image.png
实践应用
如果想根据标签整体的综合分进行排序,可设置tag_match函数

演示配置在排序表达式或sort子句中的方法:

image.png
• sort子句展示的结果:

image.png


如果你想与更多开发者们进行交流、了解最前沿的搜索与推荐技术,可以钉钉扫码加入社群~

image.png

【开放搜索】新用户活动:阿里云实名认证用户享1个月免费试用~https://www.aliyun.com/product/opens

目录
相关文章
|
1月前
|
机器学习/深度学习 人工智能 算法
如何将传统的关键字搜索与现代向量搜索结合?
如何将传统的关键字搜索与现代向量搜索相结合,找到更相关的搜索结果优化 RAG。
如何将传统的关键字搜索与现代向量搜索结合?
|
3月前
|
人工智能 开发工具 git
语义搜索测试
语义搜索测试
28 0
|
8月前
|
人工智能 自然语言处理 算法
Similarities:精准相似度计算与语义匹配搜索工具包,多维度实现多种算法,覆盖文本、图像等领域,支持文搜、图搜文、图搜图匹配搜索
Similarities:精准相似度计算与语义匹配搜索工具包,多维度实现多种算法,覆盖文本、图像等领域,支持文搜、图搜文、图搜图匹配搜索
Similarities:精准相似度计算与语义匹配搜索工具包,多维度实现多种算法,覆盖文本、图像等领域,支持文搜、图搜文、图搜图匹配搜索
|
11月前
|
小程序 数据库
小程序搜索功能,云开发搜索,小程序云开发模糊搜索,同时搜索多个字段
小程序搜索功能,云开发搜索,小程序云开发模糊搜索,同时搜索多个字段
242 0
|
存储 并行计算 算法
秒懂算法 | 搜索基础
本篇介绍了BFS和DFS的概念、性质、模板代码。
114 0
秒懂算法 | 搜索基础
|
JavaScript
计算属性实现模糊搜索功能场景
我相信大家在项目中都会遇到模糊搜索这个功能要求,即我们在输入框内输入文字后显示与输入文字相关的关键字,那这个具体实现方案是什么,这是我在最近一期蓝桥杯楼赛中遇到的业务需求,大家可以来思考一下,下面我将进行实现详解
111 2
计算属性实现模糊搜索功能场景
|
搜索推荐 数据格式
推荐系统:通过surprise近邻查找相似用户和相似项目
推荐系统:通过surprise近邻查找相似用户和相似项目
100 0
|
前端开发
【TP5】对于广告分类跟搜索的解决方案
【TP5】对于广告分类跟搜索的解决方案
107 0
【TP5】对于广告分类跟搜索的解决方案
|
Kubernetes 搜索推荐 Java
电子商务搜索基准
电子商务搜索基准是第一个具有个性化推荐的电子商务搜索系统的端到端应用基准。这项工作与詹建峰教授合作(http://www.benchcouncil.org/zjf.html)'的团队,他也是国际开放基准委员会(BenchCouncil,http://www.benchcouncil.org/)的主席。
电子商务搜索基准
|
自然语言处理 搜索推荐 iOS开发
电商搜索"提高输入效率,更快找到想要的商品"最佳实践
很多时候,搜索不仅仅只是“搜索”,不是单纯的在搜索框中输入Query这么简单,有时搜索还赋予了其他的价值和意义,今天和大家聊一聊如何通过搜索引导功能---“下拉提示”,优化业务的价值~
2664 0
电商搜索"提高输入效率,更快找到想要的商品"最佳实践