我试图从头开始计算IDF值,这样我就可以理解它在幕后是如何工作的,但仍然无法得到预期的结果
我有一套这样的文件
docs = {'d1' :'t3 t3 t3 t6 t6',
'd2' :'t1 t2 t3 t3 t6',
'd3' :'t3 t3 t4 t5',
'd4' :'t4 t5 t6 t6',
'd5' :'t1 t2 t3 t5'}
我应该计算一个名为query_sum_idf
的值,它表示请求中发送的令牌的IDF的总值,在本例中是['t5', 't2']
本例中的期望值为1.4271 ± 1.0e-04
,但在开发微积分时,我做了以下工作,得到了不同的结果:
math.log10(5 / float(3)) + math.log10(5 / float(2)) = 0.6197
,其中5
是文档总数,3
是所有文档中t5
的计数,最后2
是所有文档中t2
的计数
正如你所看到的,结果是不同的,所以我在问我是否遗漏了什么
你有一个有趣的问题
我试着自己做这项工作,并在维基百科上查阅了IDF的常见定义。我这样计算IDF:
问题是,您使用的是log10而不是自然对数。即使在wiki上,它也没有定义,而
log
要使用它。我希望我能帮忙相关问题 更多 >
编程相关推荐