索引的文檔分類我已經歸入與Lucene的一組文檔(領域:內容,類別)。每個文檔都有自己的類別,但其中一些文檔被標記爲未分類。有沒有辦法在java中輕鬆分類這些文檔?如何使用Lucene
回答
分類是機器學習/統計領域的廣泛問題。讀完你的問題後,我覺得你已經使用了一種SQL group by子句(儘管在Lucene中)。如果您希望機器對文檔進行分類,則需要了解機器學習算法,如神經網絡,貝葉斯,SVM等。Java中有這些優秀的庫用於這些任務。爲了這個工作,你將需要特徵(從數據中提取的一組屬性),你可以在其上訓練算法,以便它可以預測你的分類標籤。
有一些Java API良好的(它允許你專注於代碼,而無需瞭解這些算法背後的數學理論,但如果你知道這將是非常有利的,太多的事情)。 Weka很好。我也遇到了Manning的幾本書,它們很好地處理了這些任務。在這裏你去:
第10章集體智慧(分類)在行動:智能Web的算法http://www.manning.com/alag/
第5章(分類):http://www.manning.com/marmanis/
這是絕對精彩的材料(用於Java的人)在分類特別適合那些只是不想深入理論的人(儘管非常重要:)),並且很快需要一個有效的代碼。在行動
集體智慧解決了分類的使用JDM和Weka的問題。所以看看這兩個爲你的任務。
是的,你可以使用相似的查詢,如由MoreLikeThisQuery class對於這樣的事情(假設你有文件爲您Lucene索引一些大的文本字段)來實現。查看底層MoreLikeThis class的javadoc,瞭解它的工作原理。
要打開你的Lucene索引到一個文本分類,你有兩個選擇:
對於任何新文本分類,查詢有至少一個類別中的前10名或50名最相似的文檔,總和這些「鄰居」之間的類別出現次數,並從這些類似文件中挑選前3個頻繁類別(例如)。
或者,您可以通過連接(該類別的文檔的全部或一部分)每個類別一個索引一組新的聚合文檔。然後運行相似性查詢,直接在這些「假」文檔上輸入文本。
第一種策略在機器學習中稱爲k-最近鄰居分類。第二個是破解:)
如果你有很多類別(比如超過1000),第二個選項可能會更好(分類速度更快)。儘管如此,我還沒有進行任何清潔績效評估。
您也可能會發現這個blog post interesting。
如果您想使用Solr,則需要啓用MoreLikeThisHandler並在內容字段上設置termVectors=true
。
python的sunburnt Solr客戶端能夠執行mlt查詢。下面是使用維基百科類的索引,使用Solr的分類原型蟒蛇分類:
https://github.com/ogrisel/pignlproc/blob/master/examples/topic-corpus/categorize.py
由於Lucene的5.2.1,您可以使用indexed documents to classify new documents。開箱即用,Lucene提供了樸素貝葉斯分類器,k-最近鄰分類器(基於MoreLikeThis類)和基於感知器的分類器。
缺點是所有這些類都標有實驗性警告,並記錄有指向維基百科的鏈接。
- 1. 如何使用Lucene和JPA?
- 2. 如何使用lucene搜索文件
- 3. 如何使用Lucene查詢ElasticSearch索引
- 4. 如何使用lucene創建查詢PointRangeQueryBuilder
- 5. 如何使用Lucene的TermVector 4.0
- 6. 如何使用Lucene中的MultiFieldQueryParser?
- 7. 如何使用Lucene查詢CSV字段
- 8. 如何使用lucene的shingleanalyzerwrapper + standardanalyzer + indexreader?
- 9. 如何使用StandardTokenizer從Lucene的5.x.x
- 10. 如何使用SQLite數據庫的Lucene?
- 11. 如何使用Zend Lucene搜索郵編?
- 12. 如何使用jTable實現Lucene TableSearch
- 13. 我如何在cmd中使用Lucene
- 14. 如何在lucene 4.0中使用ngram tokenizer?
- 15. 如何在javascript中使用lucene
- 16. 如何使用Lucene IndexReader查找術語?
- 17. 使用Lucene
- 18. 使用Lucene
- 19. 使用Lucene
- 20. 使用Lucene 2.9 []
- 21. CakePHP的使用Lucene
- 22. 搜索使用Lucene
- 23. 故障使用Lucene
- 24. 使用Katta(Lucene,Hadoop)
- 25. Lucene'加入'如何?
- 26. Lucene如何工作
- 27. 如何在Lucene分析器上使用多個過濾器(Lucene 4.4)
- 28. 如何使lucene不區分大小寫
- 29. 何時使用Lucene/Hibernate搜索
- 30. 使用Lucene的Sitecore索引
當然,我可以從我的索引產生的Lucene提取功能。讓我看看這本書,我會回來;) – orezvani 2012-02-28 08:03:43
我認爲這些ML中的許多問題是,他們產生單標籤分類,它是理想的多標籤分類。我可能是錯的,但Weka很好地實現了這一點。其餘的人看起來並不像他們做的那樣。 – 2013-10-20 19:22:32