恳请大家将lucene的词频计算过程给讲解一下, 自己看了好久没搞明白.谢谢了.

wgdwyh 2010-05-13

例如 :  0.30151135 = tf(phraseFreq=0.09090909)

这中的phraseFreq是怎么计算出来的?既然是词频 为什么值还能是个浮点数, 不应该是大于等于零的整数吗?

 

我看了DefaultSimilarity类 中的 tf(float freq)方法,但是不知道这个freq参数是从哪里传递来的, 也就无法从代码的角度分析freq的计算过程.  恳请大家知道的给指点一下, 感激涕零.

 

 

 

phyeas 2010-05-13
TF=词出现次数/总词数,所以应该大于0小于1……
wgdwyh 2010-05-13
phyeas 写道
TF=词出现次数/总词数,所以应该大于0小于1……


非常感激 . 我解释一下,是否您说的是这个意思.


假设要打分的文档有3个filed
filed1: 中国 真 强大
filed2: 美丽 的 中国
filed3: 花朵 真 美丽

要搜索的词为两个 "中国" "美丽"
要打分的文档有 9个 词.
1. 假设搜索 "中国"
  则词频应该是 2/9
2. 假设搜索 "美丽"
  则词频应该是 2/9
3. 如果要搜索"中国 美丽"
  则词频为多少? 不应该是4/9?吧, 感觉好像不对阿.

phyeas 2010-05-13
TF=词出现次数/总词数
IDF=log 总文章数/出现该词的文章数
phyeas 2010-05-13
所以打分的话应该是
第一个文档 “中国”得分是0.0528,美丽的得分是0
第二个文档  “中国”的得分与第一个一样,也是0.0528,美丽的得分是0.143
第三个则是  “中国”为0, ”美丽"的得分是0.143
排序应该是field2>field3>field1
phyeas 2010-05-13
3大于1的主要原因是“美丽”的IDF比“中国”高
wgdwyh 2010-05-13
phyeas 写道
3大于1的主要原因是“美丽”的IDF比“中国”高

“美丽”的IDF比“中国”高?  为什么同样都出现了两次 而"美丽"的idf比"中国"的高阿?
phyeas 2010-05-13
啊,那是我算错了,不好意思,我以为出现一次,没看到
phyeas 2010-05-13
那这样的话field3和field1的得分应该一样
wgdwyh 2010-05-13
phyeas 写道
那这样的话field3和field1的得分应该一样

恩,太谢谢了呵呵. 
Global site tag (gtag.js) - Google Analytics