这是cs276 information retrieval & web search的笔记2,这里总结关于IR 系统中,rank的一些概率模型,BIM,BM25
IR系统的核心就是ranking,也就是非常直观的任务,对于user的一个query q q q, IR系统希望给每个检索出来的文档一个分数 score,按照score由高到低反馈给用户,而概率模型的核心就是对这个分数,用概率建模。
P ( R ∣ q , d ) P(R|q,d) P(R∣q,d) 其中 R R R 是一个binary事件变量, R = 1 R=1 R=1 表示相关, R = 0 R=0 R=0 表示不相关。 q q q 表示user的查询,而 d d d 表示文档
由于我们只care的是rank(相对大小)而不是 P r o b Prob Prob 绝对大小。因此在概率模型中我们使用的metric通常是
O d d ( R ∣ q , d ) = P ( R = 1 ∣ q , d ) P ( R = 0 ∣ q , d ) Odd(R|q,d)=\frac{P(R=1|q,d)}{P(R=0|q,d)} Odd(R∣q,d)=P(R=0∣q,d)P(R=1∣q,d)
下面介绍两种概率模型,BIM,BM25,分别基于 二项分布和泊松分布
首先将document 向量化成 x = ( x 1 , … , x i , … , x T ) , T x = (x_1,\dots ,x_i,\dots ,x_T ),T x=(x1,…,xi,…,xT),T 表示 query 中 t e r m term term 的数量, x i = 1 ⟺ t e r m i x_i =1 \iff term_i xi=1⟺termi 在document d d d 中
那么 score
O ( R ∣ q , d ) = O ( Q ∣ q , x ) = Pr ( R = 1 ∣ q , x ) Pr ( R = 0 ∣ q , x ) = Pr ( R = 1 ∣ q ) Pr ( x ∣ R = 1 , q ) Pr ( x ∣ q ) Pr ( R = 0 ∣ q ) Pr ( x ∣ R = 0 , q ) Pr ( x ∣ q ) ( b a y e s r u l e ) = O ( R ∣ q ) Pr ( x ∣ R = 1 , q ) Pr ( x ∣ R = 0 , q ) \begin{aligned} O(R|q,d) &= O(Q|q,x)\\ &= \frac{\Pr(R=1|q,x)}{\Pr(R=0|q,x)}\\ &= \frac{\frac{\Pr(R=1|q)\Pr(x|R=1,q)}{\Pr(x|q)}}{\frac{\Pr(R=0|q)\Pr(x|R=0,q)}{\Pr(x|q)}} (bayes\ rule)\\ &=O(R|q)\frac{\Pr(x|R=1,q)}{\Pr(x|R=0,q)} \end{aligned} O(R∣q,d)=O(Q∣q,x)=Pr(R=0∣q,x)Pr(R=1∣q,x)=Pr(x∣q)Pr(R=0∣q)Pr(x∣R=0,q)Pr(x∣q)Pr(R=1∣q)Pr(x∣R=1,q)(bayes rule)=O(R∣q)Pr(x∣R=0,q)Pr(x∣R=1,q)
因为 q q q 对于每个document d d d 来说,都是一样的,可以看做一个常量,因此我们重点关心的是
Pr ( x ∣ R = 1 , q ) Pr ( x ∣ R = 0 , q ) (1) \frac{\Pr(x|R=1,q)}{\Pr(x|R=0,q)} \tag{1} Pr(x∣R=0,q)Pr(x∣R=1,q)(1)
binary independent model 的核心就是两个假设:
基于独立性假设对于等式 ( 1 ) (1) (1), 我们有
s c o r e ( q , d ) = ∏ i = 1 T Pr ( x i ∣ R = 1 , q ) Pr ( x i ∣ R = 0 , q ) = ∏ x i = 1 Pr ( x i = 1 ∣ R = 1 , q ) Pr ( x i = 1 ∣ R = 0 , q ) ∏ x i = 0 Pr ( x i = 0 ∣ R = 1 , q ) Pr ( x i = 0 ∣ R = 0 , q ) l e t p i = Pr ( x i = 1 ∣ R = 1 , q ) , r i = Pr ( x i = 0 ∣ R = 0 , q ) = ∏ x i = 1 p i r i ∏ x i = 0 1 − p i 1 − r i = ∏ x i = 1 p i r i ( ∏ x i = 1 1 − r i 1 − p i 1 − p i 1 − r i ) ∏ x i = 0 1 − p i 1 − r i = ∏ x i = 1 p i ( 1 − r i ) r i ( 1 − p i ) ( ∏ i = 0 T 1 − p i 1 − r i − > c o n s t a n t ) \begin{aligned} score(q,d) &=\prod_{i=1}^T \frac{\Pr(x_i|R=1,q)}{\Pr(x_i|R=0,q)}\\ &=\prod_{x_i=1}\frac{\Pr(x_i=1|R=1,q)}{\Pr(x_i=1|R=0,q)}\prod_{x_i=0}\frac{\Pr(x_i=0|R=1,q)}{\Pr(x_i=0|R=0,q)}\\ \mathbf{let}\ p_i&=\Pr(x_i=1|R=1,q),r_i=\Pr(x_i=0|R=0,q)\\ &=\prod_{x_i=1}\frac{p_i}{r_i}\prod_{x_i=0}\frac{1 - p_i}{1-r_i}\\ &=\prod_{x_i=1}\frac{p_i}{r_i}(\prod_{x_i=1}\frac{1-r_i}{1-p_i} \frac{1-p_i}{1-r_i})\prod_{x_i=0}\frac{1 - p_i}{1-r_i}\\ &=\prod_{x_i=1} \frac{p_i(1-r_i)}{r_i(1-p_i)}(\prod_{i=0}^T \frac{1-p_i}{1-r_i} ->constant) \end{aligned} score(q,d)let pi=i=1∏TPr(xi∣R=0,q)Pr(xi∣R=1,q)=xi=1∏Pr(xi=1∣R=0,q)Pr(xi=1∣R=1,q)xi=0∏Pr(xi=0∣R=0,q)Pr(xi=0∣R=1,q)=Pr(xi=1∣R=1,q),ri=Pr(xi=0∣R=0,q)=xi=1∏ripixi=0∏1−ri1−pi=xi=1∏ripi(xi=1∏1−pi1−ri1−ri1−pi)xi=0∏1−ri1−pi=xi=1∏ri(1−pi)pi(1−ri)(i=0∏T1−ri1−pi−>constant)
因此,最终我们需要计算的就是
s c o r e ( q , x ) = ∏ x i = 1 p i ( 1 − r i ) r i ( 1 − p i ) (2) score(q,x)=\prod_{x_i=1} \frac{p_i(1-r_i)}{r_i(1-p_i)}\tag{2} score(q,x)=xi=1∏ri(1−pi)pi(1−ri)(2)
将 ( 2 ) (2) (2) 式取对数,我们得到,
R S V = ∑ log p i ( 1 − r i ) r i ( 1 − p i ) (3) RSV = \sum \log \frac{p_i(1-r_i)}{r_i(1-p_i)}\tag{3} RSV=∑logri(1−pi)pi(1−ri)(3)
define
c i = log p i ( 1 − r i ) r i ( 1 − p i ) (4) c_i= \log \frac{p_i(1-r_i)}{r_i(1-p_i)}\tag{4} ci=logri(1−pi)pi(1−ri)(4)
接下来的任务便是估计 c i c_i ci 了
假设对于整个集合中的文档,我们能够得到如下的统计表格
doc | Relevant | Non-Relevant | Total |
---|---|---|---|
x i = 1 x_i=1 xi=1 | s s s | n − s n-s n−s | n n n |
x i = 0 x_i=0 xi=0 | S − s S-s S−s | N − n − S + s N-n-S+s N−n−S+s | N − n N-n N−n |
sum | S S S | N − S N-S N−S | N N N |
(note 小 s s s 通常很难估计)
p i = s S , r i = n − s N − S , 1 − r i = N − S + s − n N − S , 1 − p i = S − s S p_i=\frac{s}{S},r_i=\frac{n-s}{N-S},1-r_i=\frac{N-S+s-n}{N-S},1-p_i=\frac{S-s}{S} pi=Ss,ri=N−Sn−s,1−ri=N−SN−S+s−n,1−pi=SS−s
假设 N − S ≈ N N-S \approx N N−S≈N
log 1 − r i r i = log N − n − S + s n − s ≈ log N − n n ≈ log N n = I D F ! \begin{aligned} \log \frac{1-r_i}{r_i}&=\log \frac{N-n-S+s}{n-s}\\ &\approx\log \frac{N-n}{n}\\ &\approx \log \frac{N}{n}=IDF! \end{aligned} logri1−ri=logn−sN−n−S+s≈lognN−n≈lognN=IDF!
最难估计的是 p i p_i pi 一种可以的方法是不停的在系统中迭代,来估计 s s s,不过这对系统和数据的需求都很大,而且急需真实的系统场景和环境
这个模型还有一个问题,他没有将term frequency 纳入其中,也就是说,通常来说,一篇document 如果其中的term frequency 出现的次数很多,通常它的相关性会高一些,BIM并未对此建模
我们来看看下面一个基于(possion distribution )泊松分布的 模型
BM25对term frequency建模,同时它提出了一个 eliteness 的概念
所谓 eliteness 也就是说在query中的某些 term,他是是特别的(整篇文档都是关于这些term的,这完全有道理,比如paper 的key words)
(注 未特别说明本文所有图片均引用自 ref1)
其实可以将 eliteness 看做一个 “隐”变量(hiden variable)
同时它表示 Pr ( T F i = i ) \Pr(TF_i=i) Pr(TFi=i) 为possion 泊松分布
基于以上假设,我们可以建立如下模型
R S V e l i t e = ∑ t f i > 0 c i e l i t e ( t f i ) RSV^{elite}=\sum_{tf_i>0}c_{i}^{elite}(tf_i) RSVelite=tfi>0∑cielite(tfi)
whre,
c i e l i t e ( t f i ) = log Pr ( T F i = t f i ∣ R = 1 ) Pr ( T F i = 0 ∣ R = 0 ) Pr ( T F i = t f i ∣ R = 0 ) Pr ( T F i = 0 ∣ R = 1 ) c_{i}^{elite}(tf_i) = \log \frac{\Pr(TF_i=tf_i|R=1)\Pr(TF_i=0|R=0)}{\Pr(TF_i=tf_i|R=0)\Pr(TF_i=0|R=1)} cielite(tfi)=logPr(TFi=tfi∣R=0)Pr(TFi=0∣R=1)Pr(TFi=tfi∣R=1)Pr(TFi=0∣R=0)
and,
Pr ( T F i = t f i ∣ R ) = Pr ( E i = E l i t e ∣ R ) Pr ( T F i = t f i ∣ E i = E l i t e ) + Pr ( E i = E l i t e ˉ ∣ R ) Pr ( T F i = t f i ∣ E i = E l i t e ˉ ) \Pr(TF_i=tf_i|R)=\Pr(E_i=Elite|R)\Pr(TF_i= tf_i | E_i=Elite) + \Pr(E_i=\bar{Elite}|R)\Pr(TF_i= tf_i | E_i=\bar{Elite}) Pr(TFi=tfi∣R)=Pr(Ei=Elite∣R)Pr(TFi=tfi∣Ei=Elite)+Pr(Ei=Eliteˉ∣R)Pr(TFi=tfi∣Ei=Eliteˉ)
这就对term项建立了双泊松模型:
Pr ( T F i = k ∣ R ) = π λ k k ! e − λ + ( 1 − λ ) μ k k ! e − μ \Pr(TF_i=k|R)=\pi \frac{\lambda^k}{k!}e^{-\lambda} + (1 - \lambda)\frac{\mu^k}{k!}e^{-\mu} Pr(TFi=k∣R)=πk!λke−λ+(1−λ)k!μke−μ
parameter π , μ , λ \pi,\mu,\lambda π,μ,λ 都非常难以估计,因此,这里又采用了近似!(PS:我发现近似真实个非常神奇的东西)
观察这个函数有几个性质:
sf : t f k + t f \frac{tf}{k+tf} k+tftf
c i B M 25 v 2 = log N d f i ( k 1 + 1 ) t f i k 1 + t f i (5) c_i^{BM25v2}=\log \frac{N}{df_i}\frac{(k_1+1)tf_i}{k_1+tf_i}\tag{5} ciBM25v2=logdfiNk1+tfi(k1+1)tfi(5)
以上公式与 tf-idf非常像,不过 tf项是有界的(saturation function)),分子系数意义不大,仅仅是让 tf=1时这个值为1,估计是想让这项的值变化不那么陡峭吧
基于两个intuition
d l = ∑ t f ∈ d t f i dl=\sum_{tf\in d} tf_i dl=∑tf∈dtfi
a v d l avdl avdl: 整个文本集合中的平均文本长度
B = ( ( 1 − b ) + b d l a v d l ) , b ∈ [ 0 , 1 ] B=((1-b) + b\frac{dl}{avdl}), b\in[0,1] B=((1−b)+bavdldl),b∈[0,1]
b b b 正则因子
let t f i ′ = t f i B tf_i'=\frac{tf_i}{B} tfi′=Btfi, 带入 equation ( 5 ) (5) (5) 我们得到真正的
c i B M 25 ( t f i ) = c i B M 25 v 2 ( t f i ′ ) = log N d f i ( k 1 + 1 ) t f i k 1 ( ( 1 − b ) + b d l a v d l ) + t f i (6) c_i^{BM25}(tf_i)=c_i^{BM25v2}(tf_i') =\log \frac{N}{df_i}\frac{(k_1+1)tf_i}{k_1((1-b)+b\frac{dl}{avdl}) + tf_i}\tag{6} ciBM25(tfi)=ciBM25v2(tfi′)=logdfiNk1((1−b)+bavdldl)+tfi(k1+1)tfi(6)
and,
R S V B M 25 = ∑ c i B M 25 ( t f i ) (7) RSV^{BM25}=\sum c_i^{BM25}(tf_i)\tag{7} RSVBM25=∑ciBM25(tfi)(7)
(PS: 这些特征都需要从真实的系统,业务场景中去查找,所以写在这里再多,仅仅纸上谈兵肯定是不行的,所以这里仅仅是对知识做个总结,表明有这个东西)
code
版权声明
本作品为作者原创文章,采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议
作者: taotao
仅允许非商业转载,转载请保留此版权声明,并注明出处