2011-09-19 80 views
28

我剛剛閱讀了一篇關於如何將MALLET用於主題建模的迷人文章,但是我找不到任何在線比較MALLET與NLTK的任何內容,而我已經有了一些經驗。MALLET vs NLTK中的主題建模

它們之間的主要區別是什麼? MALLET是一個更「完整」的資源嗎(例如,有更多的工具和算法)?或者回答這些前兩個問題的一些好的文章在哪裏?

+1

不能回答這個問題,但NLTK包含一個木槌接口,所以你可以串聯試用它們。 – alexis

+2

如果您已經熟悉Python,只需使用「gensim,爲人類進行主題建模」。 – Radim

+0

@Radim; P是'gensim'是我親自使用/用於Python的用戶友好的主題建模模塊之一。它應該是「gensim,單純的凡人話題建模」=) – alvas

回答

23

這並不是說一個人比另一個人更完整,而更多的是一個人擁有某些東西,而另一個人則不然,反之亦然。這也是一個目標受衆和目的的問題。

Mallet是一個基於Java的機器學習工具包,旨在爲各種自然語言處理任務提供強大且快速的實現。

NLTK使用Python構建,並附帶了很多額外的東西,如WordNet等語料庫。 NLTK更多地針對學習NLP的人,因此更多地被用作學習平臺,可能更少用作工程解決方案。

在我看來,兩者之間的主要區別在於NLTK更適合作爲對機器學習和NLP感興趣的人的學習資源,因爲它附帶了大量文檔,示例,語料庫等。

Mallet更多地針對在該領域工作並且已經知道他們想要做什麼的研究人員和從業人員。與NLTK廣泛收集的一般NLP材料相比,它的文檔較少(儘管它有很好的例子,並且API有詳細的文檔)。

UPDATE: 好描述這些將是槌文檔和例子在http://mallet.cs.umass.edu/文章 - 側邊欄可以鏈接到序列標記,主題建模等

和NLTK NLTK的書Natural Language Processing with Python是一個很好的介紹既NLTK和NLP。

UPDATE

我最近發現sklearn Python庫。這是針對更普遍的機器學習,而不是直接用於NLP,但也可以用於此。它帶有非常多的建模工具,大部分似乎都依賴於NumPy,所以它應該非常快。我已經使用了它很多,可以說它的編寫和記錄非常好,並且有一個活躍的開發者社區推動它(至少在2013年5月)。

更新2

我現在還一直在使用木槌一段時間(特別是錘API),可以說,如果你在整合槌到另一個項目規劃,你應該很熟悉Java並準備花大量時間調試幾乎完全沒有文檔的代碼庫。

如果你想要做的就是使用mallet命令行工具,那很好,使用API​​需要很多挖掘木槌代碼本身,並且通常還修復一些錯誤。被警告的木槌帶有關於API的最少文檔。

+0

「它帶有...」錯字? – Trindaz

+0

哦,沒關係,重新編輯文本:) –

+1

@Trindaz請看上面的更新。 –

2

現在的問題是你是用Python還是Java(或者上面沒有)工作。由於您可以使用Java輕鬆訪問它的API,因此Mallet對於Java(因此是Clojure和Scala)而言非常有用。 Mallet也有一個很好的命令行界面,所以你可以在應用程序之外使用它。

出於與Python相同的原因,NLTK非常適合Python,並且您不需要執行任何Jython瘋狂操作就可以讓它們在一起玩。如果您使用python,Gensim只需添加一個值得檢查的Mallet包裝器。現在,它基本上是一個簡單的alpha函數,但它可能會做你所需要的。

+1

如果您使用的是gensim,那麼您可以使用'gensim.models.ldamodel.LdaModel'中的在線lda版本,而不是使用mallet,除非您真的想使用槌子實現的Gibbs採樣品種。 –

+1

@MattiLyra ...槌球LDA實現參數優化。在大多數情況下,這會極大地提高學習模型的質量。如果你不需要一個在線算法(即:你不需要繼續添加文檔和改進模型),我會選擇木槌。我沒有比較收斂速度,但是mallet也有一個多核估計器,如果你有硬件,估計器會加快速度。 – drevicko

1

我不熟悉NLTK的主題建模工具包,所以我不會去比較它。 Github中的Mallet源包含多種算法(其中一些算法在「發佈」版本中不可用)。據我所知,有

  • SimpleLDA(LDA有倒塌吉布斯採樣)
  • ParallelTopicModel(LDA是多核作品)
  • HierarchicalLDA
  • LabeledLDA(半監督方法LDA)
  • 彈珠機分配與LDA。
  • WeightedTopicModel

它還具有

  • 一對夫婦,在LDA模型的幫助診斷類。 (TopicModelDiagnostics.java)
  • 能夠對經過訓練的LDA模型進行序列化和反序列化。

總的來說,它是一個很好的工具包,用於使用平易近人的開源許可證(CPL)來試驗主題模型。