QP-Term 改写

Posted by OAA on November 5, 2024

1、Term 改写

改写是 QP 中的重要组成部分,在搜索系统中,用户输入的查询词(Query)和文档之间可能存在用词不一致的情况,或者同一意思可以通过不同的表达方式传达。通过同义改写,检索系统可以更好地理解查询和文档的语义匹配,从而提高检索的相关性和结果召回量。

工业界常见的改写方式主要有两种,基于分词的 Term 粒度匹配改写和全词 Query 粒度改写。Term 粒度改写是指将 Query 分词为多个 Term 词序列,通过 Term 同义词替换实现语义泛化,如:宝宝辅食 –> [宝宝, 辅食] –> [婴幼儿, 辅食]。Query 粒度改写指直接对 Query 做语义泛化,如:瘦身饮食计划 –> 减肥食谱。

本章节将详细介绍 Term 改写,对其下游应用、技术方案两块进行展开。

1.1、布尔检索应用

Term 改写主要应用在搜索召回检索模块,如基于倒排索引的 Term 文本匹配召回通路。

假设有 Query 可以被分词为 [A, B, C],基于布尔检索的召回会根据分词构建查询串表达式:A and B and C,即检索结果 Doc 的文本内容需要同时包含Term词 ABC,若 A 有同义Term词 A1A2A3B 有同义 Term 词 B1,则查询串表达式可以构建为:(A or A1 or A2) and (B or B1) and C

当以结合同义词的布尔查询串进行检索时,由于原 Term 词和同义 Term 词是 OR 的关系,即检索命中同义词的笔记也会被召回,由此可以较大的提高相关结果召回量。此外,改写词可以作为特征参与相关性排序模块中。

更进一步的,直接进行平权的 OR 替换可能会导致严重的语义漂移(Drift):

  • 权重惩罚:工业界通常会引入词权重衰减机制。对于改写词 A1,会根据其与原词 A 的相似度赋予一个折扣系数(如 0.8)。底层的查询表达式实际上是 (A^1.0 OR A1^0.8) AND ...。这样在相关性算分(如 BM25)时,命中原词的 Doc 得分会显著高于仅命中改写词的 Doc

  • 上下位控制:改写具备强烈的方向性。通常允许 “下位词向单向位词改写”(如 “iPhone 15” -> “苹果手机”),但严格限制 “上位词向下位词改写”,以防召回过度收敛或引发用户体验问题

1.2、数据挖掘

Term 改写的数据来源主要有两类:同义词典和 PT 表(Phrase Table),其中同义词典中的数据格式一般为有向二元组 <w1, w2>,表示 w2w1 的同义词;而 PT 表存储的是两个词和两者的关联信息,并不显式表示两者是同义关系,格式为 <w1, w2, feat>,其中 feat 表示 w1w2 的转移特征(对齐特征)。

1.2.1、同义词典

同义词典的语料一般来自于现有的辞海、百科、知识图谱等知识库数据,比如很容易可以从辞海中挖掘出:<中国, China>。此外也可以通过人工标注、模型判别对隐式匹配(向量召回)语料进行筛选和过滤后写入词典。大语言模型(LLM) 目前被广泛应用于同义词的批量生成。通过精心设计的 Prompt,LLM 能够从海量低频长尾 Query 中精准抽取出高质量的有向同义词对,经人工校验后打入线上词典。

1.2.2、PT 表

1.2.2.1、数据来源

PT 表的数据深度依赖于用户的海量历史搜索行为,主要通过构建点击二部图(Bipartite Graph)来提取平行句对:

  • Query-Title:通过用户点击 Doc 的 Title 和搜索词 Query 构建平行句对
  • Query-Doc-Query:若不同的 Query 在历史日志中高频点击了同一篇 Doc,那么这些 Query 之间天然构成了平行句对关系(协同过滤思想)
  • Session:短时间内,同一用户多次修改 Query 进行检索,那么这些连续的 Query 之间构成平行句对

1.2.2.2、粒度对齐与图表示学习

根据数据源挖掘出海量的 Query-Doc 平行点击句对后,由于原始点击行为发生在 Query 粒度,而 PT 表的构建目标是 Term 粒度的改写,因此必须解决 “粒度不对齐” 的工程痛点。目前工业界主要采用以下三种技术手段,完成从 Query 级行为到 Term 级语义的跨越计算:

1. 两步走策略:Query 相似度挖掘 + 传统词对齐

这是最经典的基线方案。首先,在原始的 Query-Doc 点击二部图上运行 SimRank 等图算法,挖掘出高度相似的 Query 对。随后,将这些高频共现的 Query 对视作机器翻译中的平行语料,以共有词为锚点,反向推导并提取出局部的 1-gram 或 N-gram 词对齐关系。

对齐方式如下:

假设有 Query=AXBText=AYBC,以共现词 AB 作为锚点,则 XY 构成 1-gram 词对齐,AXAY 构成 2-gram 词对齐。另外可以采用文本翻译领域中的词对齐工具实现词对齐(如 FastAlign、GIZA++)。

2. 图重构:基于 Term-Doc 二部图的降维挖掘

为了省去复杂的对齐步骤,工程上常在建图阶段直接进行 “降维拆解”。系统打破 Query 边界,将 Query 分词后的 Term 直接作为节点与 Doc 建立边连接:

  • 建图逻辑:若用户搜索 “苹果手机壳” 并点击了某数码 ,图中将直接生成 Term(苹果) -> Doc_1Term(手机壳) -> Doc_1 两条边
  • 表示学习:在这个海量的 Term-Doc 二部图上运行 DeepWalk 等随机游走算法。若 Term(苹果)Term(iPhone) 频繁连接到相似的 Doc 节点群,算法便能直接赋予它们在拓扑结构上高度接近的 Embedding 向量表征,从而产出 Term 级别的图相似度

3. 异构图网络(Heterogeneous Graph):多粒度融合

在更前沿的表示学习架构中,通常会构建同时包含 TermQueryDoc 三类节点的异构图网络:

  • 关系定义:图中包含 “包含关系边”(如 Term(宝宝) Query(宝宝辅食))和 “点击关系边”(如 Query(宝宝辅食) Doc(某商品))。
  • 信息传递:通过 GraphSAGE 或 Node2Vec 的变体算法在图中进行随机游走,游走路径(如 Term(宝宝) -> Query(宝宝辅食) -> Doc(辅食商品) -> Query(婴儿辅食) -> Term(婴儿))巧妙地打破了粒度隔离。最终,将三类节点映射到同一高维连续的向量空间中,直接计算任意两个 Term 节点的余弦相似度(Cosine Similarity),即可精准召回语义及上下文高度一致的同义改写词

1.2.2.3、对齐特征

根据平行语料挖掘出大量词对齐数据后,即可统计出对齐特征,常见的特征如下:

有了词和对齐特征即可构建 PT 表作为线上 Term 改写的候选召回。

1.3、模型预测

当离线挖掘构建出 PT 表后,对于输入的查询词 Query 将通过 PT 表获取改写 Term 和相关特征后,则可通过树模型(GBDT)或轻量级 DNN 预测判别 Query 中的 Term 是否可以替换成召回的改写 Term,流程如下:

  1. 对查询词 Query 进行分词获得 Term 序列
  2. 对Term 序列构建 N-Gram 短语(1-3 gram)
  3. 对 N-Gram 短语通过 PT 表查询得到改写候选短语和对齐特征
  4. 对召回的 PT 短语进行对应 Term 替换,组成改写 Query
  5. 针对每个改写 Query 基于 Term 替换点构建特征
    1. 全局特征:Query / 改写 Query 语言模型得分,Query / 改写 Query 统计特征(检索量)等
    2. Term 词粒度特征:PT 表固有的对齐特征
    3. 上下文特征:替换点前后组成的 N-Gram 对齐特征
    4. 语义特征:原 Term 与改写 Term 的 Embedding 向量余弦相似度
  6. 通过 GBDT 或轻量级 DNN 模型 模型打分,判别当前 Term 改写是否可行(GBDT 模型可通过人工标注数据集训练得到,学习目标可以是样本关系,如同义 / 近义 / 无关)

1.4、总结

综上,Term 改写可以抽象为以下流程,并可分为离线数据挖掘和在线模型预测两个部分,一个好的改写系统可以有效降低长尾低频 Query 的零少结果率和 Query 换词率等指标。