编辑: 我正在阅读包含60个文档的索引....
int numDocs = fReader.numDocs();
while(termEnum.next())
{
Term term = termEnum.term();
double df = fReader.docFreq(term);
TermDocs termDocs = indexReader.termDocs(term);
//HERE is what i mean when i say tfidf is per document,
while(termDocs.next())
{
double tf = termDocs.freq();
// Calculate tfidf.......
}
termDocs.close();
}
所以,我会得到这个术语的tfidf,但对于我们循环的每个文档。我不需要这些结果:
tfidf(term1,doc1);
tfidf(term1,doc2);
tfidf(term1,doc3);
...........等等。
我需要在集合中使用这个术语的一些重要性。通过直觉,它会像“if term”term1“在5个文档中有良好的tfidf然后它是重要的”
但是,当然,更聪明的事情:)
谢谢!!!
答案 0 :(得分:1)
答案 1 :(得分:0)
您可以尝试使用Luke打开索引,它会为您提供排名靠前的字词。
答案 2 :(得分:0)
答案 3 :(得分:0)
contrib /文件夹有一个类,用于生成最常用术语的列表:http://svn.apache.org/repos/asf/lucene/dev/trunk/lucene/contrib/misc/src/java/org/apache/lucene/misc/HighFreqTerms.java
如果您正在寻找语义特征提取,则可以查看http://project.carrot2.org/