BM25考虑了词频的饱和效应,即随着词频的增加,增加的相关性会逐渐减少。这是通过使用一个非线性函数来调整词频的影响。主要体现在下面这部分:
当词频比较小时,主导这个公式值的,是除之外的部分,那可以认为,这部分公式,会随着词频的增长而增长,而当词频增大到一定程度时,主导这个公式值的,就变成词频了,综合分子分母可以发现,越到后面,分子上涨的部分,被分母抵消掉了。
为了便于大家理解,我做这样一个实验,假设= 2.0,= 0.75,为20,文档中一共5个词,出现了1词,之后每次向中增加一个与相同的词,则整个增长过程如下所示,其中TF就是,TF_adj是上面这个公式,大家可以观察diff,它表示随着TF的增长,TF_adj增量:
| TF | TF_adj | diff |
|---|
| 1 | 1.600000 |
|
| 2 | 2.033898 | 0.433898 |
| 3 | 2.236025 | 0.202127 |
| 4 | 2.352941 | 0.116916 |
| 5 | 2.429150 | 0.076209 |
| 6 | 2.482759 | 0.053609 |
| 7 | 2.522523 | 0.039764 |
| 8 | 2.553191 | 0.030669 |
| 9 | 2.577566 | 0.024374 |
| 10 | 2.597403 | 0.019837 |
可以看到,随着TF的增大,diff越来越小,越到后面,越“涨不动”了,也就说明了词频是有饱和效应的
TF-IDF未考虑文档长度的影响,而BM25通过引入文档长度标准化因子,长文档通常会包含更多的词,因此需要对词频进行标准化,以避免长文档得到不成比例的高分。这个标准化是通过参数控制的。主要体现在下面这部分:
因为在BM25中,词频表示的词在文档中出现的次数,那对于越长的文档,相对来说它里面的词的就会越大,因此引入文档长度标准化:
当文档比较长时,较大,从而使分母较大,降低词频的影响。
当文档较短时,较小,从而使分母较小,扩大词频的影响。
BM25中引入的参数和提供了额外的调节手段,使得模型可以更好地适应不同的应用场景,而TF-IDF则没有这样的灵活性。