1 信息检索模型

  信息检索模型是一个四元组 。其中D(Document)是文档表示的集合,Q(Query)是查询表示的集合,F(Framework)是对文档、查询及其关系建模的框架,例如布尔框架、线性框架,R(Ranking)是排序函数,对于查询表达式 和文档表达式 ,函数返回文档 关于查询的文档次序。

  信息检索主要基于文本,文本模型也细分为是否考虑文本结构,所谓考虑文本结构就是区别对待标题、段落等文档不同结构处的内容。在web中,由于文档数量巨大,还需要考虑网页之间的链接,如今的web排序函数结合了经典的信息检索模型和基于链接模型的特征来提高检索性能。信息检索还可基于图像、音频等多媒体数据,检索策略更复杂。信息检索模型的分类体系见下图:

2 经典信息检索

2.1 基本概念

  • 索引项(index term):文档里的一个词或一组连续的词,主要是名词,因为名词相比于形容词、副词等往往能包含更多信息,具体的选择策略因人而异。
  • 词汇表(vocabulary): ,其中 是文档集中索引项的数量, 是某个索引项。
  • 文档表示:就是简单的词袋方法,表示成和词汇表一样长的向量,其中每个元素是0或1,0表示对应的索引项在文档中未出现,1表示对应的索引项在文档中出现。
  • 查询表示:和文档表示相同,每个元素表示相应索引项是否在查询中出现。
  • 项-文档矩阵:行数是索引项个数,列数是文档个数,元素 表示第 个索引项在第 个文档中出现的频数。显然,在词袋方法中是0-1矩阵。
  • 文档的逻辑视图:大概就是表示文档的方式。通常是把文档全文转变成索引项集合,流程如下图:

2.2 布尔模型

  使用词袋方法表示文档,用析取范式(disjunct normal form)表示查询。例如对于词汇表 和查询 ,用析取范式表示查询为:

文档与查询的相关度定义为析取范式中是否有一项与文档表示相同,因此也是二值的。

  布尔模型的优点是简单,缺点是不支持排序。因为相关度是二值的,只能表示相关与否,而不能表示相关的程度。

2.3 项权重

  提高检索质量的一个方法是给每个索引项设置权重,通常根据索引项在整个文档集中出现的频次设置权重。如果不假设索引项之间相互独立,还要考虑索引项之间的相关性,因为索引项之间的关联往往会反映文档之间的关联,一种计算项间相关性的方法是项-文档矩阵乘他的转置矩阵,如下图:

假设项间相互独立可以简化模型、提高计算效率,而利用项间相关性提高排序水平也是十分复杂的工作,考虑了项间相关性并不能保证排序水平的提高,因此是否假设项间相互独立没有固定的标准。

2.4 TD-IDF

  TF-IDF是一个常用的计算项权重的指标,其中TF(Term frequency)表示项频,IDF(Inverse document frequency)表示反比文档频率。

  使用项频是基于Luhn假设,即高频项对描述文档的关键主题是重要的。可以直接将索引项的频次作为TF权重,即 ,但考虑到要与IDF权重结合,而IDF使用了对数运算,因此通常使用TF权重的一个变种:

  TF权重倾向于给频次高的索引项更大的权重,但也要考虑索引项的区分度,即索引项特异性(term specificity)。如果一个索引项在每个文档中都出现,虽然出现频次高,但是对于文档排序等任务没有太大帮助,最常见的就是a、the这样的冠词、连词和介词。因此不仅要考虑高频项,还要考虑区分度大的索引项。IDF权重考虑的就是某个索引项在多少个文档中出现,即相对文档频率 ,其中 是文档集中的文档数量, 是出现索引项 的文档数量,因为相对文档频率越小的索引项区分度越大,所以IDF使用了相对文档频率的倒数,称作反比文档频率。

  TF-IDF将二者结合起来,计算方法如下:

  TF、IDF和TF-IDF有多种变体。TF变体如下:

IDF变体如下:

TF-IDF变体如下:

  通过下图可以分析出TF-IDF的性质。TF和IDF权重表现出的幂律特性会相互平衡,高TF权重趋于和低IDF权重结合,低TF权重趋于和高IDF权重结合,结果是TF-IDF权重最高的索引项往往具有中等TF和IDF权重,而项频太高的项和文档频率太低的项经过平衡后都具有较低的TF-IDF权重。妙啊!

2.5 文档长度归一化

  对于给定的查询,较长的文档仅仅因为包含更多的索引项而更可能被检出,为了消除这一影响,可以把文档的排序除以其长度,这个过程称为文档长度归一化,如何计算文档长度取决于文档的表示形式。

2.6 向量模型

  布尔模型使用析取范式的每一项和文档表示进行严格匹配,难以得到理想的结果。向量模型将文档和查询表示为向量形式,使用向量夹角的余弦值衡量相似度,成功将相似度量化为可用于比较和排序的数值,基于相似度的排序可以理解为一种部分匹配策略。文档的向量表示为 ,其中 是索引项总个数, 是项-文档对 的权重,一般采用TF-IDF权重,查询的向量表示为 , 是项-查询对 的权重。文档-查询余弦相似度公式为:

注意到余弦公式分母的向量范数恰好也起到了文档长度归一化的作用。

2.7 概率模型

  概率模型的目标是估计文档与查询相关的概率,他假定这种相关性仅依赖于文档和查询本身的表示,并假定存在一个理想答案集,仅包含所有与查询相关的文档,因此能够最大化与用户相关的总体概率。显然,这种假设是对真实情况的简化,所以必然会存在一些缺陷。

  概率模型计算相关度的公式是:

其中 是与查询 相关的文档的集合, 是与查询 不相关的文档的集合, 是文档 与查询 相关的概率, 是文档 与查询 不相关的概率。根据贝叶斯公式:

其中 表示从查询 的相关文档集 中随机选择的一偏文档表示为 的概率, 表示从整个文档集中随机选择的文档和查询 相关的概率, 的含义是相似且互补的。概率模型中不考虑项权重,所以 是一个二值向量,如果假设索引项间的独立性,即所谓的二值独立假设,可以得到:

其中 表示索引项 出现在从查询 的相关文档集 中随机选择的一偏文档内的概率, 表示索引项 出现在从查询 的不相关文档集 中随机选择的一偏文档内的概率。使用对数函数只改变数值而不改变排序结果,所以可以进一步简化为:

得到了相似度公式,接下来就是如何计算

  一种计算方法是使用索引项出现列联表,如下:

情况 相关文档数 不相关文档数 总文档数
包含 $k_i$ 的文档 $r_i$ $n_i-r_i$ $n_i$
不包含 $k_i$ 的文档 $R-r_i$ $N-n_i-(R-r_i)$ $N-n_i$
所有文档 $R$ $N-R$ $N$

那么可以得到,

之所以给每个包含 的项加0.5,是为了减小极端情况下过小的 计算的影响。这种方法需要人工估计 值,所以不实用,同时缺少文档长度归一化的操作,使得排序效果也不是很好。

  另一种方法是在避免人工估计的条件下,基于几条假设来自动更新 值,个人认为这里的假设太牵强,理解不了。

  概率模型的优点是能按照相关概率进行排序,但其认为相关性仅与文档和查询的内容有关,所以实际应用时效果难以保证。此外,概率模型不可避免地要做初始估计将文档分为相关和不相关集合,不太好操作。观察上面计算 的公式,与IDF权重的公式是相似的,从这个角度看,概率模型的另一个缺点是没有用到TF特征,也没有进行文档长度归一化。

3 其他集合论模型

3.1 基于集合的模型

  基于集合的模型不考虑单独的索引项,而是考虑索引项之间的相互依赖性,通过引入项集的概念表示索引项之间的关联。

  项集(Termset):项集 是文档集中索引项的子集。若 中所有的索引项都出现在文档 中,就称项集 出现在 中。

  显然,若文档集中有 个索引项,则理论上有 个项集,但实际数据集中一般仅包含部分项集。同时,用项集表示替代索引项表示就需要把项的词汇表改为项集的词汇表,即

  频繁项集(Frequent termsets):由 个项构成的项集称为 项集,如果包含某个 项集的文档数 高于某个给定的阈值,那么这个 项集 称为是频繁的。显然,一个 项集是频繁的当且仅当他的所有 项集都是频繁地。

  在TF-IDF中,计算的权重是项-文档矩阵的元素,在集合模型中与之类似,计算的权重是项集-文档矩阵的元素。对于 ,令 是文档集中文档总数, 是项集 在文档 中的原始出现频率,赋予项集权重:

同理, ,相似度计算公式为:

由于项集空间是项空间的指数级大小,所以相似度的计算十分复杂,需要进行计算简化。例如在计算向量范数时只考虑 项集。或是进一步缩小项集的范围,只考虑频繁闭项集,闭项集(Closed termset)就是项集的闭包,比如项集 出现在相同的文档子集中,那么可以只计算 ,大大减小了计算量,除了频繁闭项集,还可选择最大频繁集,即添加任何索引项都不能使其保持频繁性。从项集数目上看,频繁项集>频繁闭项集>最大频繁集,需要注意的是,减少计算必然伴随着信息的损失,因此需要根据实际情况进行权衡。

3.2 扩展布尔模型

  用向量模型的特征扩展布尔模型,狗尾续貂?

3.3 模糊集模型

  模糊集模型基于模糊集理论,对于每一个索引项 ,为其分配一个模糊集(fuzzy set) ,模糊集为每一个文档 分配一个介于区间 之间的隶属度(degree of membership) ,若 表明 的良好模糊索引项,若 表明 不是 的良好模糊索引项。隶属度可以通过项间相关性矩阵 来计算,索引项 的相关性计算公式为:

其中 是含有索引项 的文档数, 是含有索引项 的文档数, 是同时含有这两个索引项的文档数,这种相关性度量被广泛应用在聚类算法中。有了相关性度量,就可以计算隶属度:

这其实就是在考虑 中每一个索引项的相关性,可以看出,只要 中至少有一个索引项 关系密切(即 ),则 。此外,采用代数和的方式计算而不是对所有相关性使用 函数,可以使 的值变得平滑。

  有了文档相对索引项的隶属度,就可以进一步计算文档相对于查询的隶属度,因为借鉴布尔模型的方法,查询可以表示成索引项组成的逻辑表达式。例如对于查询 ,可以写成析取范式 ,设 分别是 的模糊集,查询的模糊集 可以从下图理解:

其中, ,则:

同样,采用代数和的方式计算而不是对所有相关性使用 函数,可以使 的值变得平滑。

4 其他代数模型

4.1 广义向量空间模型