1. TF-IDFTF-IDF即为词频*词逆文档频率词稀有度代表着某个词能不能代表文档并通过该值与其他文档区分开。通过这个值能够进行关键词检索推荐系统相似度计算等等。1.1 TFTerm Frequency词频顾名思义是一个词在一篇文档中出现的次数计算也很简单t 表示当前计算的词d 表示文档w 表示文档里的某一个词。1.2 IDFinverse document frequency词的逆文档频率其实就是一个词的稀有度在越少的文档中出现则说明这个词越稀有t 表示当前计算的词N 表示总文档数 dft函数表示包含词 t 的文档数。为了防止dft函数为0有时会分子分母都加一个常数如 1。2. BM25BM25是在TF-IDF的基础上进行了四点优化使结果更精确合理。2.1 TF线性增长改为非线性增长TF-IDF中的词频计算是线性的这是不合理的因为一个词出现10次20词都已经算是强关联了不能说出现20次就比出现10次大一倍的相关性。所以应该修改为饱和式增长趋近于某个固定值。所以这里把改为这里的 k 是控制饱和速度的参数f 为词频。当 f 趋近正无穷时TF≈ k 1。2.2 文档长度归一化TF-IDF中没有对文档长度做处理那么文档越长词越多统计也就越失真。所以应该对长文档进行惩罚短文档进行奖励。其实就是对 2.1 中的 TF 分母中的 k 乘一个系数得到dl 表示当前文档的长度 avgdl 表示所有文档平均长度。如果 dl avgdl则 系数 1 分母变大导致TF变小。如果 dl avgdl, 则 系数 1分母变小导致TF变大。2.3 词稀有度加权更合理之前TF-IDF中的IDF只把相关文档纳入计算而没有把不相关的纳入计算。名义上等于替换成了概览检索模型但简单理解的话也就是在分子减去相关文档数再分子分母同加一个平滑项。最后为了防止出现负数加1使得结果大于0.为什么说这样把不相关也纳入计算了呢因为分子是总文档数减去相关文档数那么也就是等于不相关文档数而分母是相关文档数所以就是同时考虑了这两个因素然后不相关除以相关也就解释了为什么是一个概率模型了。得到注意如果把1约进去前面的算式可得这样看好像这些计算完全没有意义了只是加了不同的常数但这个常数是在概率模型的基础上得到的而不是随意设置的所以同样具有意义。2.4 查询词频因子之前的计算都是文档层面的包括TF-IDF也没有考虑查询的信息。如果用于查询那么查询中的词频也是应该考虑在内的所以同样把查询改成TF的格式但因为查询的长度都有限所以不进行长度归一化。最终可以得到完整公式