Python简易搜索引擎原理及实现(四)利用布尔模型和向量模型计算权值
我们在倒排索引的基础上,引入了B+树索引和轮排索引,以支持通配符的模糊查询方式。
本篇主要是掌握和测试布尔模型和向量模型在信息检索中应用的基本方法,计算出一些参数值,辅助搜索引擎去对最终各查询结果计算权值,排序。
首先介绍几个概念:
-
df(document frequency):总文档中包含每个 term 的文档数
-
tf(term frequency):每个 term 在每个文档中词频数
-
wf(weighting term frequency):根据 tf 计算 term 的权值
wf 计算公式:
- tf × idf:综合df 和tf 的值,实际是利用此参数计算出的权值作为term项在一个文档中的权值。其中,idf:inverse document frequency
上述是利用tf来计算出的tf × idf值,其实还有一种是利用wf来计算的wf × idf值,它们的公式类似,只是把tf 的部分更换为 wf。wf × idf是归一化后的tf × idf值,wf × idf对于低出现次数和高出现次数的term在一个文档中的权值把控得更好。
5.余弦相似:利用两个向量之间的夹角的余弦值,来表示两个向量间的相似度。
有了这个公式,我们就可以根据用户输入的查询词来计算出每个文档与之的相似度,然后根据相似度按从大到小的顺序来对查询出的文档排序了。