簡體   English   中英

單詞在Lucene索引中的重要性

[英]Word importance in lucene index

嗯,我需要弄清楚在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(term1,doc1);

tfidf(term1,doc2);

tfidf(term1,doc3); ...........等等。
我需要某種程度的衡量該術語在館藏中的重要性。 憑直覺,這就像是“如果術語“ term1”在5個文檔中具有良好的tfidf,那么這很重要”

但是,當然,更聰明的東西:)

謝謝!!!

因此,如果我計算tfidf,它會給我關於單個文檔的單個術語的重要性。

不對。 IDF在整個語料庫中進行全局測量。 IDF的全部目的是提供一個精確的量度您正在尋找的東西-一個術語的“重要性”。

因此,一種簡單的方法是在語料庫中查找最頻繁出現的術語,並按文檔頻率對其進行加權。

您可以嘗試使用Luke打開索引,它為您提供了排名靠前的字詞。

編輯:我仍然沒有得到您想要實現的目標。 較高的TF / IDF值意味着該術語可用於將該文檔與其他文檔集區分開來 ,即:該術語在特定文檔中的使用頻率要比一般文檔集中的使用頻率高。 因此,它在收集背景下“表示”文檔。 這是你想要的嗎?

重新表達您的問題的一種可能方法是,您希望使用很少的高頻項來壓縮集合。 這意味着單詞在集合中出現很多,可以通過采用idf低的單詞來完成。

另一種選擇是,您希望使用一種簡潔的方式在更一般的背景下表示集合,例如更大的集合或整個WWW。 在這種情況下,您要比較集合之間的詞頻,考慮詞類型和集合之間的相互信息 ,或其他特征選擇方法。

如果我仍然想念您的觀點,請這樣說。

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/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM