为什么我们需要检索模型?
- 检索模型为我们提供了一种能够定义检索过程的数学框架, 其中包括:
- 对于假设的解释, 因为假设可能隐含于模型中
- 排序算法的基础
- 提供了用于估计相关性过程的数学抽象
The Boolean Model
- 之所以被称为布尔模型, 是因为在这种模型之下, 用户会提交带有布尔表达式的查询, 例如: AND, OR, NOT. 只有满足了布尔表达式的文档才会被检索到.
- 布尔模型的优缺点:
优点:
- 布尔模型的结果是可预测的, 且比较容易解释
- 可以合并多个不同的特征
- 因为大多数文档都被排除, 因此可以高效地处理查询
缺点:
- 效能取完全决于用户, 如果用户准确地知道自己的需求, 那么布尔模型才能发挥极大的作用
- 简单的查询通常不会有效
- 但是, 复杂的查询又会过于繁琐
Ranking in Boolean Model: Coordination Level Matching
- Coordination level -- 文档D和查询Q之间相同的词汇代表了他们的协调等级. 一个和查询有n个相同词汇的文档和只有n-1个相同词汇的文档比起来, 和查询更具有相关性.
- 将其应用于布尔模型中, 则可表示为: 文档D满足查询Q的布尔子句的数量
TF: Term Frequency
- TF的定义:
|Q|: 查询的size, 也即查询中词汇的数量
f(q_i, D): 一个词汇q_i在文档D中出现的次数
- 需要注意的是, 如果一个文档只包含单个词汇但频率很高, 这个文档很有可能在得分上高于那些包含所有词汇, 但都是以正常频率出现的文档. - TF的缺点:
- 所有词汇的权重都是一样的
- 文档越长, 就越有可能得到更高的分数
IDF: Inverse Document Frequency
- IDF的定义:
目标: 抑制在集合中频繁出现而对匹配没有意义的术语的影响
N: 集合中文档的总数量
n_i: 包含词汇i的文档的数量 - 然后, 我们可以将TF和IDF结合起来, 得到词汇的权重:
高TF-IDF数值代表了这个词汇在一个文档中高频率出现, 但在集合的文档中出现的频率低. 我们以此来剔除掉那些比较常见的词汇, 也即在文档和集合中出现频率都比较高的词汇.
Vector Space Model(VSM)
- 在VSM模型中, 文档和查询被表示成Term weights的向量形式(d_{ij}表示了每个词汇在不同文档中的权重)
集合则使用term weights的矩阵表示, 例子如下: "匹配文档和查询"的方式则变成了"similarity", 即计算两个矢量之间的余弦值. - 具体计算方式如下, 查询中有多少个词汇, 就代表我们需要在几维中进行计算:
- VSM的优缺点:
优点:
- 计算简单
- 任何相似性计算或单词权重表都可以应用于这个框架内(例如TF-IDF)
缺点:
- 在VSM下, 词汇之间是没有联系的
Probabilistic Models
- 将检索过程视为一个分类问题: 文档分为相关(R)和不相关(NR)
为此, 我们用到贝叶斯决定理论(Bayes Decision Rules): 如果P(R|D) > P(NR|D), 则文档D是相关的.
对不等式两边做变换则有:
- The Probability Ranking Principle
在PRP中, 排序以相关概率的降序进行排列
同时, 有如下两个假设:
- 尽可能准确地估计概率
- 每个文档的相关性都是独立的 - 那么, 我们又应该如何估计P(D|R)呢? 首先回到不等式
我们可以假设, P(NR)和P(R)是常数
1. (在大多数模型中适用) 假设词汇d_i之间相互独立, 则有如下等式
2. 那么此时, 问题便转化为了如何观测P(d_i|R)
- 在这个问题中, 我们引入一个新的模型: Binary Independence Model.
- 在这个模型中, 每一个文档表示为一个二进制的向量, 用来表示每个词汇是否出现在这个文档中
- 假设p_i是第i个词汇出现在相关文档中的概率, 也即在矢量中表示为1的词汇. 而s_i则是出现在不相关文档中的概率.
3. 然后, 我们可以对原概率等式做如下的变换:
最后一项等式中, 黄色色块部分表示了所有的词汇, 因此在排序中可以被忽略. 在真正的排序中, 我们使用前一项进行排序:
BM25
-
BM25是基于Binary Independence Model(BIM)构建的排序算法.
-
BM25在TF-IDF的概念上延伸出两个不同点:
- 词频饱和
- 对文档长度的标准化 -
BM25的表达式如下, 主要由以下几个部分组成:
1. RSJ (Robertson-Sparck Jones) weight: 这个权重系数考虑了相关文档的数量(R), 含有词汇i(r_i)的相关文档数量...(N和n_i的定义? 上课问问)
N表示集合中的文档总数, n_i表示包含词汇i的文档数量
因此, 如果假设文档之间是相互独立的话, 那么RSJ系数就变成了IDF的近似:2. 词汇饱和部分(Term saturation component)
这个系数规定了一个词汇的出现频率对于文档分数的贡献不能超过饱和点. 而饱和点的大小由系数k_1来决定, k_1>0.
- 如果k_1很高, 那么词汇q_i在文档D中的词频f_i对分数的贡献就会非常显著
- 如果k_1比较低, 那么词频f_i在更高值处对分数的贡献就会非常低
- 一般会设置k_1 = 1.2
3. 文档长度标准化(Document length normalisation)系数B会对文档长度做出一个较为缓和的标准化处理. 其中b是调整系数, dl是文档长度, 而avdl是平均的文档长度.
调整系数b决定了标准化的程度, 取值范围在0~1之间. 如果b = 1, 说明施加了完整的标准化, 如果b = 0, 说明不施加标准化. 一般设置b = 0.75.
4. 查询内部分(Within-query component)此项通常对那些同一词汇在查询中多次出现的查询比较有效, 且和词汇饱和部分的作用是一样的, 其中的qf_i代表第i个词汇在查询中出现的次数.
但是实验表明这项系数不是非常重要, 我们通常会将在查询中出现多次的同一词汇视为不一样的单词, 因此一般假设qf_i = 1. 更进一步的, 可以将k_2设置为0, 便可将此项简化为常数1.
Language Models
- Query likelihood model
根据文档模型生成查询的概率对文档进行排序, 也即同样的主题, 对P(Q|D)进行排序.
对于给定的查询, 有概率P(D|Q), 由贝叶斯定理可得:
假设先验概率是正态分布的, 那么得到Unigram模型(词汇之间无联系):
那么, 我们如何估计P(q_i|D)呢? - Maximum likelihood estimator(MLE)
我们可以使用MLE来观测Unigram的概率:
其中f_qi,D是词汇q_i在文档D中的词频, |D|是文档D的长度
- 但如果查询中的某一个或某些词无法在文档中查询到, 那么P(Q|D)就会等于0.
- 因此, 我们需要通过平滑化来解决这个问题:
降低那些已出现在文档中的词汇的概率
将那些"left-over"的概率分配给那些没有出现在文档中的词汇 - Smoothing Framework
在平滑化中, 未出现的词汇的概率的观测值为: , 其中a_D是一个参数, P(q_i|C)则是查询中的第i个词汇在集合C中出现的概率(Background probability)
而已出现的词的概率为: - Jelinek-Mercer Smoothing
在Jelinek-Mercer smoothing的定义下, 观测的概率可表示为: 因此, 排序分数则变为: 也可使用log函数将其变为求和的形式: - Dirichlet Smoothing
在Dirichlet smoothing中, a_D取决于文档的长度, 其中是参数(参数的取值如何确定?):
然后, 得到概率的观测值: 以及文档分数的表达式: