Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java lucene索引中的单词重要性_Java_Lucene_Indexing_Keyword_Frequency - Fatal编程技术网

Java lucene索引中的单词重要性

Java lucene索引中的单词重要性,java,lucene,indexing,keyword,frequency,Java,Lucene,Indexing,Keyword,Frequency,嗯,我需要知道在整个文档集合中,在lucene索引中被索引的单词有多重要。我需要提取一些“可表示的词”,让我们说一些常见的概念,可以表示整个集合。或集合“关键字”。我做了全文索引,我使用的唯一字段是文本内容,因为文档的标题大多不可表示(数字、代码等) 编辑: 我正在阅读包含60个文档的索引 int numDocs = fReader.numDocs(); while(termEnum.next()) { Term term = termEnum.term();

嗯,我需要知道在整个文档集合中,在lucene索引中被索引的单词有多重要。我需要提取一些“可表示的词”,让我们说一些常见的概念,可以表示整个集合。或集合“关键字”。我做了全文索引,我使用的唯一字段是文本内容,因为文档的标题大多不可表示(数字、代码等)

编辑: 我正在阅读包含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(条款1,文件1)

tfidf(第1条款,doc2)

tfidf(第1条款,doc3); ……等等。
我需要衡量一下这个术语在集合中的重要性。凭直觉,这类似于“如果术语“term1”在5个文档中具有良好的tfidf,那么它是重要的”

当然,还有更聪明的:)


谢谢你

您可以尝试使用打开索引,它会为您提供排名靠前的术语。

编辑:我仍然不明白您想要实现的目标。 较高的TF/IDF值意味着此术语有助于将此文档与集合的其他部分区分开来,也就是说:此术语在特定文档中的使用频率相对高于集合中的使用频率。因此,它在集合背景下“表示”文档。这是你想要的吗

重新表述问题的一种可能方式是,您希望压缩集合,使用一些高频术语。这意味着在集合中出现很多单词,可以通过采用idf较低的单词来实现

另一种选择是,您需要一些简洁的方式来表示集合,而不是更一般的背景,例如更大的集合或整个WWW。在这种情况下,您要比较集合之间的词频,考虑单词类型和集合之间的关系,或者其他方法。p> 如果我仍然没有领会你的意思,请说出来

所以,若我计算tfidf,它给出了单个项相对于单个文档的重要性

不是真的。IDF是在整个语料库中进行全局测量的。IDF的全部目的是提供一个简单的方法,精确地衡量您所寻找的内容——一个术语的“重要性”


因此,一种简单的方法是在语料库中找到最常出现的术语,并按文档频率对它们进行加权。

contrib/文件夹有一个类来生成最常出现的术语列表:


如果您正在寻找语义特征提取,您可以查看

@Mikos,这些术语是我的算法进行分析所需要的。所以在卢克身上看到他们并没有帮助。我需要实现这一点。不过,我不确定你是否理解我的要求。即使在运行时我不需要这些术语,我认为Luke中的顶级术语也不是我需要的。你知道卢克用什么样的相似函数来检索那些热门词汇吗????如果只是索引中的频率(我认为是),这对我的情况毫无帮助……:/@朱莉娅,你应该进一步说明你的要求。很抱歉,我没有理解,但怀疑也会成为其他人的问题,所以请进一步解释您的商业案例,我会尽力帮助您。:-)@朱莉娅:我编辑了我的答案。希望它更清晰、更中肯。