赞
踩
bm25算法,常用作搜索相关性评分。
对Query进行语素解析,生成语素qi(词);然后,对于每个搜索结果d,计算每个语素qi与d的相关性得分,最后,将“一个Query各个qi相对于d的相关性得分”加权求和,从而得到“Query与d的相关性得分”。
一条Query与搜索结果的任意doc之间相关性分数
S
c
o
r
e
(
Q
,
d
)
=
∑
i
n
W
i
R
(
q
i
,
d
)
Score(Q,d)=\sum\limits_{i}^n W_i R(q_i, d)
Score(Q,d)=i∑nWiR(qi,d)
上式,
Q
Q
Q表示Query,
q
i
q_i
qi表示根据
Q
Q
Q解析获得的语素,
d
d
d表示搜索结果的一条文档,
W
i
W_i
Wi表示语素
q
i
q_i
qi的权重,
R
(
q
i
,
d
)
R(q_i, d)
R(qi,d)表示
q
i
q_i
qi和
d
d
d的相关性得分。
(1)
W
i
W_i
Wi的定义
定义一个语素与一个文档的相关性权重,较常用的是
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)=logn(qi)+0.5N−n(qi)+0.5
上式,
N
N
N是索引中的全部文档数,
n
(
q
i
)
n(q_i)
n(qi)是包含
q
i
q_i
qi的文档数。
很显然,
n
(
q
i
)
n(q_i)
n(qi)与
I
D
F
(
q
i
)
IDF(q_i)
IDF(qi)成反相关,即当给定的文档集合里,很多文档都包含
q
i
q_i
qi时,
q
i
q_i
qi的区分度就不高,则使用
q
i
q_i
qi来判断相关性的重要度就较低。
(2)
R
(
q
i
,
d
)
R(q_i, d)
R(qi,d)的定义
定义一个语素与一个文档的相关性得分,一般形式如下
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}{avgdl})
K=k1(1−b+bavgdldl)
上式,
k
1
k_1
k1,
k
2
k_2
k2,
b
b
b是可根据经验设置的调节因子,一般
k
1
∈
[
1.2
,
2
]
k_1\in[1.2,2]
k1∈[1.2,2],
b
=
0.75
b=0.75
b=0.75;
f
i
f_i
fi是
q
i
q_i
qi在
d
d
d中出现的频率,
q
f
i
qf_i
qfi为
q
i
q_i
qi在
Q
Q
Q中的出现频率。
d
l
dl
dl为
d
d
d的长度,
a
v
g
d
l
avgdl
avgdl为文档集中所有
d
d
d的平均长度。在多数情况下,
q
i
q_i
qi在
Q
Q
Q中只会出现一次,即
q
f
i
=
1
qf_i=1
qfi=1,公式可简化为:
R
(
q
i
,
d
)
=
f
i
(
k
1
+
1
)
f
i
+
K
R(q_i, d)=\frac{f_i (k_1 +1)}{f_i + K}
R(qi,d)=fi+Kfi(k1+1)
由
K
K
K的表达式可知,
b
b
b的作用是调整
d
l
dl
dl对“相关性的影响”的大小,即b越大,
d
l
dl
dl对“相关性得分的影响”越大;而
d
l
dl
dl越长,
K
K
K值越大,相关性得分越小。
可如下解释,当文档较长时,包含
q
i
q_i
qi的机会越大,则同等
f
i
f_i
fi的情况下,“长文档与
q
i
q_i
qi的相关性”应该比“短文档与
q
i
q_i
qi的相关性”弱。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。