2010-05-06 86 views
12

我試圖實現一種樸素的貝葉斯方法來找到給定的文檔或單詞流的主題。是否有樸素貝葉斯方法,我可能會查找這個?樸素貝葉斯主題檢測使用「Bag of Words」方法

此外,我正在努力改善我的字典,因爲我一直沿。最初,我有一堆映射到主題(硬編碼)的單詞。取決於除已映射之外的單詞的出現。根據這些詞的出現,我想將它們添加到映射中,從而改進和學習映射到主題的新單詞。並且還改變了單詞的概率。

我應該如何去做這件事?我的方法是正確的嗎?

哪種編程語言最適合實現?

回答

26

現有樸素貝葉斯的實現

你可能會更好只是使用,使用樸素貝葉斯支持文檔分類現有的包之一,例如:

Python的 - 要做到這一點使用基於Python的Natural Language Toolkit (NLTK),請參閱免費的NLTK book中的Document Classification部分。

紅寶石 - 如果Ruby是更多你的事情,你可以使用Classifier寶石。以下是檢測 whether Family Guy quotes are funny or not-funny的示例代碼。

Perl - Perl有Algorithm::NaiveBayes模塊,在包synopsis中包含示例用法片段。

C# - C#程序員可以使用nBayes。該項目的主頁有簡單的垃圾郵件/非垃圾郵件分類器的示例代碼。

的Java - Java的鄉親有Classifier4J。你可以看到一個訓練和得分代碼片段here

自舉分類從關鍵詞

這聽起來像你想開始與一組被已知線索對某些議題,然後使用這些關鍵字來bootstrap a classifier關鍵字。

這是一個相當聰明的想法。看一下McCallum和Nigam(1999)的論文Text Classication by Bootstrapping with Keywords, EM and Shrinkage。通過遵循這種方法,他們能夠使用自舉的樸素貝葉斯分類器將分類準確率從僅通過使用硬編碼關鍵字獲得的45%提高到66%。對於他們的數據,後者接近人類達成一致的程度,因爲人們在72%的時間內就文件標籤彼此達成了一致。

+1

C#開發人員也可以使用[Accord Framework.NET](http://accord-framework.net/)。樸素貝葉斯文檔[這裏](http://accord-framework.net/docs/html/N_Accord_MachineLearning_Bayes.htm) – 2014-12-09 22:11:09