恳请大家将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的得分应该一样
恩,太谢谢了呵呵. |