面试题答案
一键面试Term向量返回值对搜索相关性计算的影响
- 词频(Term Frequency, TF)
- 影响:词频表示一个词在文档中出现的次数。较高的词频通常意味着该词在文档主题中更为重要。在搜索相关性计算中,包含搜索词且词频高的文档可能与搜索查询更相关。例如,在一篇关于“苹果”产品的文档中,“苹果”一词出现多次,相比于“苹果”仅出现一次的文档,从词频角度,前者与搜索“苹果产品”的相关性可能更高。
- 原理:搜索引擎在计算相关性分数时,词频常作为一个因子。一般来说,词频越高,相关性分数在这一维度上会相应增加,但通常会进行一些归一化处理,以避免长文档因词频天然较高而获得过高分数。
- 位置信息(Position Information)
- 影响:位置信息记录了词在文档中的具体位置。如果搜索词在文档开头附近出现,可能暗示该文档与搜索查询紧密相关,因为文档开头往往会阐述核心主题。例如,一篇新闻报道开头就提到“特斯拉发布新车型”,对于搜索“特斯拉新车型”的查询,此文档相关性较高。
- 原理:可以通过给不同位置的词赋予不同权重来影响相关性计算。比如,开头位置的词权重较高,越往后权重逐渐降低,以此反映位置对相关性的影响。
- 偏移量(Offset)
- 影响:偏移量指示词在文档中的起始和结束位置。它有助于理解词在文档上下文的具体情况。例如,在处理多义词时,结合偏移量获取词周围的上下文,可以更准确判断文档与搜索词的相关性。比如“苹果”一词,若偏移量指向的上下文提到“果园”,则可能是指水果苹果;若提到“科技公司”,则可能指苹果公司,从而影响与不同搜索意图的相关性。
- 原理:通过分析偏移量对应的上下文,可以更精准地匹配搜索意图,调整相关性分数。
利用返回值调整相关性算法提升搜索效果的示例
- 基于词频的调整
- 算法调整:在传统的TF - IDF(Term Frequency - Inverse Document Frequency)算法基础上,对词频部分进行细化。例如,引入Kullback - Leibler散度来衡量文档中词频分布与整个语料库词频分布的差异,以此调整词频在相关性计算中的权重。假设我们有文档集合$D$,对于每个文档$d \in D$,计算词$t$在文档$d$中的词频$TF(t, d)$,以及词$t$在整个语料库中的词频$TF(t, D)$。通过以下公式计算Kullback - Leibler散度: [KL(TF(t, d) || TF(t, D))=\sum_{t}TF(t, d)\log\frac{TF(t, d)}{TF(t, D)}] 然后根据这个散度值来调整词频在相关性计算中的权重,散度值越大,说明该词在文档中的分布与语料库差异越大,可能对文档主题越关键,赋予更高权重。
- 示例:对于搜索“人工智能发展趋势”,在文档$d_1$中“人工智能”词频为10,在语料库中平均词频为5;在文档$d_2$中“人工智能”词频为8,在语料库中平均词频为6。通过计算Kullback - Leibler散度,$d_1$的散度值可能更大,说明“人工智能”在$d_1$中相对语料库分布更独特,在相关性计算中给予$d_1$更高的分数,从而提升$d_1$的搜索排名。
- 结合位置信息的调整
- 算法调整:定义一个位置权重函数$w(p)$,其中$p$是词在文档中的位置。例如,$w(p)=\frac{1}{1 + \alpha p}$,$\alpha$是一个可调节参数。当计算文档与搜索查询的相关性分数时,对于每个匹配的词,将其词频与位置权重相乘后再纳入相关性计算。假设搜索词$q$在文档$d$中有匹配词$t$,词频为$TF(t, d)$,位置为$p$,则该词对相关性分数$S$的贡献为$S_{t}=TF(t, d)\times w(p)$。
- 示例:对于搜索“大数据应用场景”,在文档$d$中“大数据”出现在开头位置$p = 1$,“应用场景”出现在较靠后位置$p = 100$。假设词频$TF(大数据, d)=5$,$TF(应用场景, d)=3$,$\alpha = 0.01$。则“大数据”对相关性分数贡献为$5\times\frac{1}{1 + 0.01\times1}\approx4.95$,“应用场景”对相关性分数贡献为$3\times\frac{1}{1+0.01\times100}=1.5$。在综合计算文档相关性分数时,“大数据”因位置靠前贡献更大,更能体现开头位置词对相关性的重要性,提升与搜索查询相关度高的文档排名。
- 利用偏移量和上下文的调整
- 算法调整:当获取到搜索词的偏移量后,提取词周围一定窗口大小(例如前后各10个词)的上下文。对上下文进行分析,比如使用词向量模型(如Word2Vec或BERT)计算上下文与搜索词的语义相似度。假设搜索词为$q$,通过偏移量获取的上下文为$C$,利用预训练模型得到上下文向量$v_C$和搜索词向量$v_q$,计算它们的余弦相似度$sim(v_C, v_q)$。将这个相似度作为一个因子纳入相关性计算,如$S = S_{base}\times sim(v_C, v_q)$,其中$S_{base}$是原本不考虑上下文时的相关性分数。
- 示例:搜索“银行利率”,文档中有“银行”一词,通过偏移量获取其上下文“附近有一家银行,办理业务很方便”,此上下文与“银行利率”语义相似度低。另一个文档中“银行利率最近有所调整”,上下文与搜索词语义相似度高。在相关性计算时,后一个文档因上下文语义相似度高,其相关性分数$S$会相对更高,从而在搜索结果中排名更靠前。