MALLETをトピックモデリングにどのように使用できるかについての興味深い記事を読んだばかりですが、MALLETとNLTKを比較したオンラインでは何も見つかりませんでした。これは私がすでに経験したことです。
それらの主な違いは何ですか?MALLETはより「完全な」リソースですか(たとえば、内部にさらに多くのツールとアルゴリズムがあります)?または、これらの最初の2つの質問に答える良い記事はどこにありますか?
一方が他方よりも完全であるということではなく、一方が他方にないものを持っているという問題であり、逆もまた同様です。それはまた、意図された聴衆と目的の問題でもあります。
Mallet は、さまざまな自然言語処理タスクの堅牢で高速な実装を提供することを目的とした、Java ベースの機械学習ツールキットです。
NLTK は Python を使用して構築されており、WordNet などのコーパスなどの多くの追加機能が付属しています。NLTK は、NLP を学習する人々を対象としているため、エンジニアリング ソリューションとしてではなく、学習プラットフォームとして使用されることが多くなっています。
私の意見では、この 2 つの主な違いは、大量のドキュメント、例、コーパスなどが付属しているため、NLTK は機械学習と NLP に関心のある人々のための学習リソースとしてより適切に位置付けられていることです。
Mallet は、その分野で働き、自分が何をしたいのかを既に知っている研究者や実務家を対象としています。NLTK の一般的な NLP の広範なコレクションと比較して、ドキュメントは少なくなります (ただし、良い例があり、API は十分にドキュメント化されています)。
更新: これらを説明する優れた記事は、 http://mallet.cs.umass.edu/の Mallet のドキュメントと例です。サイドバーには、シーケンスのタグ付け、トピック モデリングなどへのリンクがあります。
また、NLTK については、NLTK の書籍であるPython を使用した自然言語処理は、NLTK と NLP の両方の優れた入門書です。
アップデート
最近、sklearn Python ライブラリを見つけました。これは、NLP に直接ではなく、より一般的な機械学習を対象としていますが、NLP にも使用できます。非常に多くのモデリング ツールが用意されており、そのほとんどが NumPy に依存しているように見えるため、かなり高速である必要があります。私はそれをかなり使用してきましたが、非常によく書かれ、文書化されており、アクティブな開発者コミュニティがそれを推進していると言えます (少なくとも 2013 年 5 月現在)。
更新 2
私は現在、しばらくの間 mallet (特に mallet API) を使用しており、mallet を別のプロジェクトに統合することを計画している場合は、Java に精通していて、デバッグに多くの時間を費やす準備ができている必要があります。完全に文書化されていないコード ベース。
mallet のコマンド ライン ツールを使用するだけであれば問題ありません。API を使用するには、mallet のコード自体を掘り下げ、通常はいくつかのバグを修正する必要があります。マレットには、API に関する最小限のドキュメントが付属していることに注意してください。
問題は、Python と Java のどちらで作業しているか (または上記のいずれでもない) です。Mallet は、Java でその API に簡単にアクセスできるため、Java (したがって Clojure と Scala) に適しています。Mallet には優れたコマンドライン インターフェイスもあるため、アプリケーションの外部で使用できます。
Python と同じ理由で、NLTK は Python に最適であり、これらをうまく連携させるために Jython のクレイジーなことをする必要はありません。Python を使用している場合、Gensim はチェックアウトする価値のある Mallet ラッパーを追加しました。現時点では、基本的に最低限のアルファ機能ですが、必要なことは実行できる可能性があります。