为什么需要概率检索
给一个用户需求和一个文档集,一个检索系统需要决定文档有多满足查询
-
IR 系统难以理解一个查询背后的信息需求,并且对文档满足查询的程度做了非确定性推测
-
概率论可以为这种非确定性推理提供一个基本的理论
- 概率模型利用这个基础来估计文档与查询相关的可能性有多大
概率模型与其他模型比较
布尔模型
概率模型提供了排序,因此要优于布尔模型
向量空间模型
向量空间模型:根据相似度对文档进行排序。相似的概念并不能直接转化为“该文档是否适合提供给用户?”的评估。最相似的文件可以是高度相关的,也可以是完全不相关的。
概率论可以说是我们真正希望IR系统做的事情:给用户提供相关的文档。
概率论
- 联合概率
-
条件概率
-
链式法则:
-
全概率定理:
-
贝叶斯定理:(计算后验概率)
-
优势率:反映概率如何变化的“放大器”:
概率排序原理(PRP)
假设相关性是二值的:要么相关,要么不相关 R d , q = 1 / 0 R_{d,q} = 1 / 0 Rd,q=1/0 。概率模型检索回来的文档按 P ( R = 1 ∣ d , q ) P(R=1|d,q) P(R=1∣d,q) 降序排列
-
如果检索到的文档按相关性概率递减排序,那么系统的效果达到最好
-
当返回一个无序文档集而不是排序的结果时,可以使用贝叶斯最优决策原理:返回相关的可能性大于不相关的可能性的文档
二值独立模型(BIM)
文档和查询都表示为词项出现与否的布尔向量
独立性:指的是词项之间在文档中的出现是相互独立的
针对查询向量来说,返回的文档可以表示成 x ⃗ \vec x x 且是相关文档的概率,也就是向量 x ⃗ \vec x x 对应的文档与查询相关的概率,也就是具体的一篇文档与查询相关的概率
因此,我们按照 P ( R = 1 ∣ d , q ) P(R=1|d,q) P(R=1∣d,q) 进行排序,在BIM中就对应按照 P ( R = 1 ∣ x ⃗ , q ⃗ ) P(R=1|\vec x,\vec q) P(R=1∣x,q) 进行排序
针对一个查询,当返回一篇相关文档或不相关文档时,文档表示为 x ⃗ \vec x x 的概率,也就是与查询相关的文档中,文档可以表示成向量 x ⃗ \vec x x 的概率
先验概率,针对查询,返回一篇相关文档是相关文档 / 不相关文档的概率,也就是文档集中,与查询相关 / 不相关的文档的概率
我们可以根据文档相关性的优势率对文档进行排序,这样的话可以忽略上面的分母
同时可以看出,优势率中第一项对一个给定的查询来说,是一个常数,不会影响文档的排序,因此可以忽略
朴素贝叶斯条件独立性假设:在给定查询的情况下,认为一个词的出现与否与其他词是相互独立的
因此,优势率可以表示成如下形式(将向量的出现,拆分成向量中词的出现, x t x_t xt 代表一个词)
一个词,在一篇文档中要么出现,要么不出现,因此我们可以写成如下形式
下面式子的含义是:返回的文档是相关文档,且其中出现了词 x t x_t xt ,因此就是 x t x_t xt 出现在相关文档中的概率
简化表示,我们定义
可以得到这样一个表
同时,假设:查询语句中未出现的词,出现在相关文档和不相关文档中的概率一样。 q t q_t qt 代表查询语句中的一个词
现在,我们可以只考虑出现在查询中的词,因为未出现的词后面两项都是 1
第二项因子,考虑的是查询中的词项出现在文档中(分子是出现在相关文档中,分母是出现在不相关文档中)的情况,第三项考虑的是查询中的词项未出现在文档中的情况
我们将式子转化成如下形式
- 后面一项,多乘了 t : x t = 1 t:x_t=1 t:xt=1 的情况,因此在前面一项中添加 $\frac{1-u_t}{1-p_t} \$ 以将影响抵消
这里,式子的第三个因子考虑的是查询中出现的所有词,因此对于一个给定的查询来说,这个因子是个常数。因此,我们可以将其忽略。所以,文档排序中唯一需要估计的量只有第二个乘子
注意:第二个乘子中所有需要考虑的词,仅仅是在查询语句中出现的词
最后用于排序的量称为== R S V ( r e t r i e v a l s t a t u s v a l u e ) RSV(retrieval\, status\, value) RSV(retrievalstatusvalue) 检索信息状态==
RSV
我们定义== c t c_t ct 为优势率比率的对数值==
优势率比率的对数值 c t c_t ct
可以看到, c t c_t ct 是 R S V d RSV_d RSVd 求和中的一项
- 当查询词项出现在相关文档中时,优势率为 $\frac{p_t}{1-p_t} \$
- 当查询词项出现在不相关文档中时,优势率为 $\frac{u_t}{1-u_t} \$
- c t = 0 c_t = 0 ct=0 代表词项在相关和不相关文档中优势率相等
- 若词项更可能出现在相关文档中,那么 c t c_t ct 为正,反之为负
c t c_t ct 实际上给出的是模型中词项的权重,而查询文档的得分是,可以看到这与向量空间模型的操作是相同的,只是词项的权重不一样
但是 q t q_t qt 和 u t u_t ut 是不知道的,且两个加起来不等于 1。因为一个是在相关文档的集合中考虑的,一个是在不相关文档中考虑的
如何估计一个词项的 c t c_t ct 呢?
通过统计得出
相关文档数目为 S S S , 文档总数为 N N N , d f t df_t dft 为包含 t t t 的文档数
为了避免出现 0 的概率(比如 s = 0) , 我们通常在每一项上都加上 $\frac{1}{2} \$
u t u_t ut 部分的简化
假设相关文档只占文档集很小的一部分,我们可以简化不相关文档那部分的数据。这是 i d f idf idf 的表达式。这种优化很难扩展到 p t p_t pt 上
p t p_t pt 部分的假设
-
假设对于查询中的所有词项 x t x_t xt , p t = 0.5 p_t = 0.5 pt=0.5。
- 我们期望的是:查询词项出现在很多但不是所有的相关文档中
- 我们的假设并不严重反对这一期望
-
因此 c t c_t ct 的第一项为 0
-
因此决定 c t c_t ct 的就是 i d f idf idf
对于短文档的一遍查询,该方法能取得不错的结果
前面曾经说过, t f tf tf 很重要,那我们如何在模型中加入 t f tf tf 项,并且考虑归一化呢?
二值独立模型与向量空间模型的区别
- 其实并不是特别不同
- 在两种方式下,可以构建相同的信息检索方案
- 对于概率检索模型,我们不是通过余弦相似度和 tf-idf 来打分,而是通过一个概率论驱动的不同的方式
Okapi BM25:一个非二值的模型
是一个概率模型,加上了词项频率和长度归一化
BIM模型最初主要为较短的编目记录和长度大致相当的摘要所设计,因此没考虑这两个方面
-
对于文档 d d d ,最简单的文档评分方法是给文档中的每次查询词项赋予一个 i d f idf idf 权重
-
引入词项频率和文档长度
-
t f t d tf_{td} tftd :文档 d 中词项 t 出现的次数
-
L d L_d Ld:文档 d 的长度
-
L a v e L_{ave} Lave:所有文档的平均长度
-
k 1 k_1 k1:一个取正值的调优参数
-
取0,则对应 B I M BIM BIM 模型
-
取较大的值,对应于使用原始词项频率,后面的式子相当于
-
-
b b b (0<=b<=1):调优参数,决定文档长度的缩放程度
- 取 1 ,表示基于文档长度对词项权重进行完全的缩放
- 取 0,表示归一化时不考虑文档长度的影响
-
-
对于长查询,对查询词项也可以使用类似的权重计算方法
- t f t q tf_{tq} tftq:词项 t t t 在查询 q q q 中的权重
- k 3 k_3 k3:取正值的调优参数,用于对查询中的词项频率进行缩放控制
- 对于查询的长度没有进行归一化,因为查询是固定的
- 实验结果表明,合理的取值范围: k 1 , k 3 k_1,k_3 k1,k3 1.2~2,b = 0.75
那我们应该用哪种模型呢?
- 基础的,简单的:向量空间模型,权重的 tf-idf
- 牛逼的:调好参的 BM25或语言模型
- 一般的:没调参或者只调了一个参的 BM25或语言模型