NLP学习—17.基于BM25、tfidf和SIF的检索系统实现

本文介绍了NLP中的检索系统实现,重点讲解了Smooth Inverse Frequency(SIF)、BM25算法,并提供了相应的代码实现。SIF通过对TF-IDF加权平均词向量的改进,去除共性信息,增强句子表示的独特性。BM25则是一种基于概率的文档相关性评估算法,用于计算query与文档的相关性。文章还包含BM25的源码解析及整个检索系统的代码实现。
摘要由CSDN通过智能技术生成



一、Smooth Inverse Frequency(SIF)

  Smooth Inverse Frequency是一种基于向量的检索。在介绍SIF前,需要先理解平均词向量与TFIDF加权平均词向量。

  • 平均词向量就是将句子中所有词的word embedding相加取平均,得到的向量就当做最终的sentence embedding。这种方法的缺点是认为句子中的所有词对于表达句子含义同样重要。
  • TFIDF加权平均词向量就是对每个词按照tfidf进行打分,然后进行加权平均,得到最终的句子表示。

SIF加权平均词向量主要是对上述两种方法进行了改进。SIF算法包括两步,第一步是对句子中所有的词向量进行加权平均,得到平均向量 v s v_s vs;第二步是移出(减去) v s v_s vs在所有句子向量组成的矩阵的第一个主成分(principal component / singular vector)上的投影。

  • 第一步主要是对TFIDF加权平均词向量表示句子的方法进行改进。论文提出了一种平滑倒词频 (smooth inverse frequency, SIF)方法用于计算每个词的加权系数,具体地,词 w w w的权重为 a / ( a + p ( w ) ) a/(a+p(w)) a/(a+p(w)),其中 a a a为平滑参数, p ( w ) p(w) p(w)为(估计的)词频。直观理解SIF,就是说频率越低的词在当前句子出现了,说明它在句子中的重要性更大,也就是加权系数更大。事实上,如果把一个句子认为是一篇文档并且假设该句中不出现重复的词(TF=1),那么TFIDF将演变成SIF,即未平滑的倒词频。但是相较于TFIDF这种经验式公式,论文通过理论证明为SIF提供理论依据。
  • 第二步,个人的直观理解是移出所有句子的共有信息,因此保留下来的句子向量更能够表示本身并与其它句子向量产生差距。

算法伪代码如下:
在这里插入图片描述
算法源码如下:https://github.com/PrincetonML/SIF
代码实现如下

二、BM25

  BM25是一种用来评价搜索词和文档之间相关性的算法,它是一种基于概率检索模型提出的算法:有一个query和一批文档Ds,现在计算query和每篇文档D之间的相关性,先对query进行切分(分词),得到单词 q i q_i qi,然后单词由3部分组成:

  • 每个单词的权重
    N表示所有文档的数目, n ( q i ) n(q_i) n(qi)包含了单词 q i q_i qi的文档数目。
    I D F ( q i ) = l o g ( N − n ( q i ) + 0.5 n ( q i ) + 0.5 ) IDF(q_i)=log(\frac{N-n(q_i)+0.5}{n(q_i)+0.5}) IDF(qi)=log(n(qi)+0.5Nn(qi)+0.5)
  • 相关性分数R:单词和Doc之间的相关性,最后对于每个query中单词的分数求和,得到query和文档之间的分数
    R ( q i , d ) = f i ( k 1 + 1 ) f i + K q f i ( k 2 + 1 ) q f i + k 2 R(q_i,d)=\frac{f_i(k_1+1)}{f_i+K}\frac{qf_i(k_2+1)}{qf_i+k_2} R(qi,d)=fi+Kfi(k1+1)qfi+k2qfi(k2+1)
    K = k 1 ( 1 − b + b d l a v g   d l ) K=k_1(1-b+b\frac{dl}{avg\ dl}) K=k1(1
  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值