
1.7 概率检索模型
概率检索模型从概率排序原理推导而来,是一种直接对用户需求相关性进行建模的方法,其基本思想是:给定一个查询,返回的文档能够按照查询和用户需求的相关性得分高低来排序。目前最成功的概率检索模型是BM25(Best Match 25)模型,发展于1970年到1980年之间,目前很多商业搜索引擎使用的都是1994年在BM25的基础上进行改进的Okapi BM25模型。下面从概率基础推导BM25的评分公式。
1.7.1 贝叶斯决策理论
概率检索模型的数学基础是贝叶斯决策理论,推导BM25模型的评分公式先从贝叶斯公式开始。我们知道,概率是对随机事件发生的可能性的度量,取值为0~1,比如抛一枚硬币,正面朝上的可能性和反面朝上的可能性都是0.5。条件概率是指在某些前提条件下的概率问题,在事件A发生的前提下事件B发生的概率记为P(B|A)。联合概率是指两个事件同时发生的概率,事件A和事件B相互独立,那么A和B同时发生的概率记为P(AB),显然P(AB)=P(BA)。A和B同时发生的概率等于事件A发生的前提下事件B发生的概率,即:

A和B同时发生的概率也等于事件B发生的前提下事件A发生的概率,即:

P(AB)=P(BA),所以:

两边同时除以P(B),可得:

上式即为贝叶斯公式,贝叶斯决策理论在机器学习、自然语言处理等领域被广泛应用,在海量数据的文本分类问题(比如垃圾邮件、垃圾短信的甄别和过滤)上能取得非常好的效果,其核心思想是选择高概率对应的类别。
以图1-3为例,数据集中有实心圆和空心圆两类数据,假设数据集的统计参数已知,给出一个新的数据点A(x, y), P1(x, y)表示点A属于实心圆的概率,P2(x, y)表示点A属于空心圆的概率,如果P1(x, y)>P2(x, y),那么点A极有可能属于实心圆,反之属于空心圆。

图1-3 数据分布图
概率检索模型把用户查询和要查询的文档集作为一个贝叶斯分类问题,对于任意的一个查询,文档集可以划分为与查询相关和与查询不相关两类。对于文档D, P(R|D)代表文档属于相关文档集的概率,P(NR|D)代表文档属于不相关文档集的概率,如果P(R|D)>P(NR|D),可以认为文档D和用户查询相关,反之不相关,如图1-4所示。

图1-4 贝叶斯分类
问题的关键是如何比较P(R|D)和P(NR|D)的大小,由贝叶斯公式可得:

比较P(R|D)> P(NR|D),等价于:

由于P(D)是相同的,左右两边消去,等价于P(D|R)P(R)>P(D|NR)P(NR),左右两边同时再除以P(D|NR)P(R),转换为如下形式:

在搜索排序的时候,系统只需要将降序排序即可,问题进一步转换为如何计算P(D|R)与P(D|NR)。
1.7.2 二值独立模型
二值独立模型(Binary Independence Model,简称BIM)也是一种概率检索模型,通过做出一些假设估算文档或者查询的相似性概率。二值独立模型中的二值是指文档和查询都表示成词项出现与否的布尔向量,词项出现记为1,词项不出现记为0。独立是指假设词项在文档中的出现是相互独立的,通过对词项的独立性假设可以用数学的方法描述文本,把文档频率转换为词项概率的乘积,即

假设查询中有5个关键词,文档D中只出现了第1个、第3个、第5个,那么通过二值假设,D可以表示为{1,0,1,0,1},用Pi表示第i个单词出现在相关文档集合中的概率,相关文档集合中出现文档D的概率可表示为:

同样,对于假设Si代表第i个单词在不相关文档集合内出现的概率,不相关文档集合中出现文档D的概率可表示为:

计算:

一般情况下,的计算公式如下:

其中i:Di=1表示单词在文档D中出现,i:Di=0表示单词在文档D中不出现。进一步进行等价变换,其中:

最终得到计算结果:

等式两边同时取对数得到相关性计算公式:

相关性公式中只有Pi和Si未知,Pi和Si分别代表第i个单词在相关文档集合中出现和不出现的概率,对于一个已知的查询,总的文档集中要么是和该查询相关的,要么是和该查询不相关的,根据相关与否文档集可分为两类;同时,对于一个查询,总的文档集合中的文档要么是包含查询关键词的,要么是不包含查询关键词的,根据文档的包含与否文档集也可以分为两类。综上可得表1-7,其中总文档集合为N,相关文档数量为R,包含单词i的文档数量为ni,相关文档中包含单词i的文档为ri。
表1-7 文档集分类表

如果已知N、R、ni、ri,即可计算Pi和Si:

如果ri=0,则Pi=0,相关性计算公式中就会出现log(0)的情况,因此需要进行平滑处理,在分子上加上常数0.5,分母上加上常数1,最终:

带入相关性计算公式可得:

上述公式即为通过二值独立模型计算用户查询和文档相关性的方法,其含义就是累加同时出现在用户查询和文档D中的概率,累加结果即为查询和文档的相关度。
1.7.3 Okapi BM25模型
二值独立模型计算相关性的实际应用效果并不理想,因为二值假设只考虑了单词在文档中的出现与否,没有考虑单词的权重,BM25模型在此基础之上进行了改进,把idf因子、文档长度、文档词频、查询词频等因素统统考虑进去,BM25模型的评分公式如下:

其中
对查询Q进行分词,依次计算每个单词在文档D中的分值,累加后即为查询Q下文档D的得分。上述公式分为三个部分,第一部分为二值独立模型中推导出来的相关性计算公式;第二部分是查询词在文档D中的权重,fi代表单词在文档D中的词频,k1是经验参数,K是对文档长度的考虑,k1和b都是经验参数;公式第三部分是查询词自身的权重,tftq是词项t在查询Q中的词频,k2是一个取正的调优参数,用于对查询中的词项频率进行缩放。k1取0时,公式的第二部分为1,此时不考虑词频的因素,b取0时表示忽略文档长度因素,k2取0时表示不考虑词项在查询中的权重。在没有根据开发测试集进行优化的情况下,已有的实验结果表明,参数的合理取值范围是:k1的取值区间为1.2~2, b取0.75, k2取0~1000, k2取值较大是因为查询一般较短,不同查询词的词频较小,较大的调节参数值可以对词频之间的差异进行放大。
1.7.4 BM25F模型
Okapi BM25模型提出之后被广泛应用,在计算相关性的时候只是把文档当作整体来考虑,但是并没有考虑文档不同域(也就是字段)的权重差异,结构化的数据会被切分成多个独立的域,以网页为例,网页有标题、摘要、主题词、内容等域,很显然网页标题是对一个网页内容的高度概括,标题中关键词的权重很显然要比网页内容中的关键字权重高。BM25F在BM25的基础上做了一些改进,把单词在文档域中的权重得分考虑进去。BM25F的计算公式如下:

公式中的第一部分还是二值独立模型的评分,代表第i个单词在u个域中的得分之和,wk代表为每个域设定的权值,fui代表第i个单词在第u个域中的词频,Bu是第u个域的长度因素。在Bu的计算公式中,bu是调节因子,对于不同的域要设定不同的调节因子,ulu是第u个域的实际长度,avgulu是文档集中这个域的平均长度。