query语义改写

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
OpenSearch LLM智能问答版免费试用套餐,存储1GB首月+计算资源100CU
简介: 1. 问题背景   商品检索的主要的问题还是在于用户query和商品描述之间存在GAP,特别是中长尾query。把问题分成以下几种类型: 多种描述:划痕笔/补漆笔/修补笔/点漆笔 信息冗余:   冰箱温控器温度控制==冰箱温控器 属性检索: 118冰箱、60寸液晶电视机4k高清智能60曲面 宽泛意图: 超美吊灯、大容量冰箱 2.所做工作   query改写的目标空间可以分为文本空间和意图ID空间两种类型:文本空间包含词、短语、query,意图ID空间主要包括pidvid、性别年龄尺码等自定义tag、一些语义聚合的标签如:"奢侈","可爱"等。

1. 问题背景

  商品检索的主要的问题还是在于用户query和商品描述之间存在GAP,特别是中长尾query。把问题分成以下几种类型:

  • 多种描述:划痕笔/补漆笔/修补笔/点漆笔
  • 信息冗余:   冰箱温控器温度控制==冰箱温控器
  • 属性检索: 118冰箱、60寸液晶电视机4k高清智能60曲面
  • 宽泛意图: 超美吊灯、大容量冰箱

2.所做工作

  query改写的目标空间可以分为文本空间和意图ID空间两种类型:文本空间包含词、短语、query,意图ID空间主要包括pidvid、性别年龄尺码等自定义tag、一些语义聚合的标签如:"奢侈","可爱"等。所以我们的工作还是主要基于以下两种形式:

  • 向量化改写:query映射到query,主要针对"多种描述"和"信息冗余"类型
  • 意图ID改写:query映射到意图ID,主要针对"属性检索"和"宽泛意图"类型

2.1 向量化改写

  向量化改写的基本流程仍然是:query向量化⇒向量相似查找⇒相关性判断

2.1.1 query向量化

  主要优化点在于通过尝试一些有效的向量化方法,对任意query向量化。下面介绍一下我们的做法:

  • seq2seq
  • 完全无监督
  • i2i扩展

2.1.1.1 seq2seq

  这里我们借鉴的是Skip-Thought Vectors[1],这个算法试图通过seq2seq重建句子周围的句子,如下图所示:
c271fe30c2c081b108a859cd7056feb9
  模型的目标函数也是两个部分,一个来自于预测下一句,一个来自于预测上一句。如下式:
90230b467dedca3a5f091b6d2a7b4fcc
  我们从session中获取训练预料,假设某个session序列是(s1,s2,...,sn),那么一条训练数据就是(si-1,si,si+1),encoder是si词序列的lstm,decoder是分别si-1和si+1的lstm.这样训练下来decoder的上下文向量就学到了这个句子在session中的上下文表示。
  其实除了query session,用query来重建其点过的宝贝标题序列同样适用,只不过decoder阶段换成query点过的标题。

2.1.1.2 完全无监督

       这里我们主要借鉴的WR方法[2],作者在论文中证明:在维基百科上的非标签语料库中使用流行的方法训练word embedding,将句子用词向量加权平均,然后使用PCA/SVD修改一下 。 这种权重在文本相似性任务中将效果提高了约10%至30%,并且击败了复杂的监督方法,包括RNN和LSTM, 它甚至可以改善Wieting等人[3]的embeddings.
算法如其名,主要分为W和R两个步骤:

  • W:就是词向量加权平均的时候的权重。
  • R:使用PCA/SVD remove向量中的common部分。
    4ee5d3fbeb2856a54978707c2fec69a7

根据query的描述文本的类型,我们产出了两种向量:
  (1) 基于query自身的词。
  (2) 基于query和query点击的宝贝标题的词。
针对上述第二种类型,在原有算法的基础上,我们做了一些改进:

  • 互信息权重
      query点了一些标题,并不是对标题中的所有词感兴趣,对于相关性任务来说,理论上我们只关注和query最相关的词,所以在W阶段我们加入词和query互信息的权重MI(q,w),即a/(a+p(w))⇒MI(q,w)*(a/(a+p(w))),对应的|s|也根据MI(q,w)进行了scale.

  适当加大query自身词的权重:基于review case发现因为线上已经上了相似query改写/意图改写(标题中可能缺失了一些词),导致原始query自身的某些词被attention的权重偏低。更好的做法是把点击的对象的更多属性参与向量化,比如点击的pidvid,意图id等。

2.1.1.3 i2i扩展

  对一些依赖行为的算法,对于一些行为偏少的长尾query通过宝贝的i2i来扩展,可以扩大计算的覆盖率和准确度。这部分我们做了以下工作:

  • 直接召回query历史点击宝贝的i2i宝贝
  • 协同过滤算法的扩展:q对应的item越多,基于item的CF算法覆盖率越高。针对中长尾query我们用i2i扩展了点击行为。
  • 基于点击数据的WR方法:对于点击少于20的长尾query利用i2i扩展点击数据优化embedding

2.1.2 向量相似查找

  目前候选query集合设置的500W左右,而需要计算相似的query集合数据量已经到9亿+,相似搜索是一个非常大的计算量。计算步骤如下:

  • 1.对候选query集合进行kmeans聚类成C个簇
  • 2.遍历C个簇中心查找余弦距离最近的topM个类
  • 3.然后遍历topM个簇中的点获取topK个相似

2.1.3 相似判断

这里我们训练一个query相似度的模型。下面介绍下主要部分:

2.1.3.1 样本选取

  深度模型依赖大量的样本喂养,而接近于真实分布的样本一直是一个难点。我们主要尝试了以下方式:

  • 行为反馈获取样本
      query下有不同的改写串rewq,计算出各个rewq所带来的召回和收益情况(点击+成交),通过收益的gap筛选正样本和负样本。
  • 从相关性任务中迁移样本
      改写和相关性是联动的,query和宝贝相关性的样本可以迁移过来使用。比如:一个宝贝和一个query不相关,那么这个query和点击到这个宝贝的所有query理论上都不相关。
  • 弱标签:好处是数据丰富,获取相对容易,比如:

  a) q1和q2的相似度我们用(q1,q2点击标题)的bm25或者(q2,q1点击标题)的bm25来构造弱标签。
  b) 用q1和{q2下挂宝贝}的相似度来衡量q1和q2的相似度:用q1去attention q2点击doc中的词,然后向量化和q1 attention自身doc的词向量化距离进行比较,选取一些高置信度的作为label.
  c) 用简单模型的输出结果来获取样本,用我们已有的GBDT模型来预测,取得分数高于一定阈值或者低于一定阈值的分别作为正样本和负样本。

  • 规则构造样本
      比如:使用同义词和冲突词的片段替换分别构造正样本和负样本

2.1.3.2 模型训练

  高频词和短语通过语言模型或者点击文档能获取很多扩展的语义,容易获取高质量的embedding。而长尾query由于行为稀少,单存依赖自身信息获取embedding的质量通常不理想。调研了一下基于Skip Convolution或BiLSTM+Self-attention,通过合理设计联合训练网络,把词和短语级别丰富的embedding信息迁移到长尾query上,实现提升长尾字符串embedding质量的目标。
c85829912f4ed5909746ff232a34f275

  • 网络的左半部分:
      主要为了学习query在“session”、“点击”、“query自身”三个维度的融合表示,在相似q任务上我们继续更新和query相关的向量

  三个维度主要目的在于学习词,短语粒度的语义信息,泛化到所有query。每个维度的query model可以使用跳跃卷积(skip-cnn),主要是考虑商品搜索的query对term位置的信息较为不敏感,也可以选择双向lstm+attention. 
  其实这个思路和我们的评测人员的思路很像,评测两个query是否相关,除了一个整体判断,更多的是把query拆解成一些‘短语’去判断。

  • 网络右半部分 
      第二部分主要是为了解决相关性判定的问题,用了一个二分类的模型;这里把q-q pair的特征也作为网络的一部分输入

2.2 意图ID改写

  对于意图比较宽泛的query,比如畅销手机,大容量冰箱,虽然在query向量改写中会有所体现,但是对于行为较少的query改写的还是不太理想。我们采取的做法是把他们映射到我们的意图id空间,比如价格,销量,pidvid,年龄,性别,尺码,季节,新品等,知识图谱的数据在这里得到了应用。

3 展望

  上述的query改写给我们的目标带来了较大的提升。可以想象query改写的空间依然是巨大的。
  对于深度模型我们会继续做,考虑query生成的思路特别是强化学习选词,Query向量的表征空间扩展到属性空间,图像空间甚至是用户空间。关于改写的目标,相关性是基础,但绝不是最终目标,后续会考虑目标改写query的价值甚至是个性化改写。
  "相似"对应衡量query之间的关系还是太粗了,后续我们要把query改写的类型明确化,比如同义和蕴含(上下位),对于query之间的关系我们正在尝试一些方法[4]来挖掘。后续我们计划挖掘更多的知识,并考虑如何把知识融入到模型之中。

参考文献:
1.Ryan Kiros, Yukun Zhu, Ruslan Salakhutdinov, Richard S. Zemel, Antonio Torralba, Raquel Urtasun, Sanja Fidler. Skip-Thought Vectors
2.Sanjeev Arora, Yingyu Liang, Tengyu Ma.  A Simple but Tough-to-Beat Baseline for Sentence Embeddings
3.John Wieting, Mohit Bansal, Kevin Gimpel, and Karen Livescu. Towards universal paraphrastic sentence embeddings
4.Ruiji Fu , Jiang Guo , Bing Qin.Learning Semantic Hierarchies via Word Embeddings

目录
相关文章
|
2月前
|
机器学习/深度学习 自然语言处理 API
query改写:大模型应用测试离不开的实践
queryrewrite 是一个用于大模型应用测试的 Python 库,专注于查询(query)的改写与验证。它支持多种改写方法,包括大型语言模型(LLM)、词汇表替换和同义词替换,同时提供多种验证方法如 ROUGE-L、BLEU、帕累托最优和LLM语义相似度,以确保改写后的查询在语义上保持一致。该项目特别优化了对中文文本的处理,涵盖分词和相似度计算。用户可通过 pip 安装,并支持扩展不同的 LLM 模型,如 OpenAI、Ollama 等。
511 87
query改写:大模型应用测试离不开的实践
|
机器学习/深度学习 算法 流计算
深度预测平台RTP介绍
前言 RTP平台是阿里内部一个通用的在线预测平台,不仅支持淘系搜索、推荐、聚划算、淘金币等业务,也支持国际化相关icbu、lazada等搜索推荐业务,同时还支持着淘客,优酷、飞猪等大文娱的搜索推荐场景。
9458 0
|
算法 数据库 计算机视觉
Dataset之COCO数据集:COCO数据集的简介、下载、使用方法之详细攻略
Dataset之COCO数据集:COCO数据集的简介、下载、使用方法之详细攻略
|
5月前
|
机器学习/深度学习 算法 数据可视化
数据驱动是什么?数据驱动的深层次理解!
在企业数字化转型中,“数据驱动”常被提及,但其内涵却未必人人明晰。本文从应用层次与价值实现机制两方面解读“数据驱动”,分为四个层次:监测(记录事实)、分析(诊断问题)、挖掘(深度算法)和使能(赋能业务)。同时提出DIPOA模型,将数据视为生产原材料,通过链条完成价值转化。
|
6月前
|
机器学习/深度学习 人工智能 编解码
重定义数字人交互!OmniTalker:阿里推出实时多模态说话头像生成框架,音视频实现唇语级同步
阿里巴巴推出的OmniTalker框架通过Thinker-Talker架构实现文本驱动的实时说话头像生成,创新性采用TMRoPE技术确保音视频同步,支持流式多模态输入处理。
2411 2
重定义数字人交互!OmniTalker:阿里推出实时多模态说话头像生成框架,音视频实现唇语级同步
|
人工智能 自然语言处理 搜索推荐
解读阿里云搜索开发工作台如何快速搭建AI语义搜索及RAG链路
本文介绍阿里云搜索开发工作台如何通过内置数据处理、查询分析、排序、效果测评、大模型等服务,结合阿里云搜索引擎及开源引擎,灵活打造AI语义搜索及RAG链路。
20353 15
|
9月前
|
并行计算 PyTorch 算法框架/工具
阿里云PAI-部署Qwen2-VL-72B
阿里云PAI-部署Qwen2-VL-72B踩坑实录
3774 1
|
人工智能 自然语言处理 安全
claude国内怎么用?教你两种claude国内使用方法!
Claude AI 是由 Anthropic 公司开发的一款新一代 AI 助手,旨在成为更安全、更友好、更可靠的 AI 系统。它基于 Anthropic 对 AI 安全性的深入研究,并采用 “Constitutional AI” (宪法式 AI) 的训练方法,使其行为更符合人类价值观,并减少有害输出的可能性。 🛡️
|
人工智能 机器人 开发工具
快速部署 Flowise 社区版
FlowiseAI 是一个开源的低代码开发工具,专为开发者构建定制的语言学习模型(LLM)应用而设计。 通过其拖放式界面,用户可以轻松创建和管理AI驱动的交互式应用,如聊天机器人和数据分析工具。 它基于LangChain框架,支持与多种AI模型和数据库集成,实现高度可定制化的流程自动化​。本文介绍通过计算巢快速部署Flowise社区版服务。
快速部署 Flowise 社区版