問題文: いくつかのドキュメント (20k ドキュメント) があります。トピック モデリングを適用して類似のドキュメントを見つけ、それらの類似のドキュメントを分析して、それらが互いにどのように異なっているかを見つける必要があります。Q: これを達成するためのトピック モデリング パッケージを提案してくれる人はいますか? Mallet と Gensim Python を調べています。どちらが私の要件に最も適しているかわかりません。
どんな助けでも大歓迎です。
問題文: いくつかのドキュメント (20k ドキュメント) があります。トピック モデリングを適用して類似のドキュメントを見つけ、それらの類似のドキュメントを分析して、それらが互いにどのように異なっているかを見つける必要があります。Q: これを達成するためのトピック モデリング パッケージを提案してくれる人はいますか? Mallet と Gensim Python を調べています。どちらが私の要件に最も適しているかわかりません。
どんな助けでも大歓迎です。
Gensim Python はわかりませんが、MALLET が解決策になる可能性があります。Java の専門知識があれば、それほど難しくはありません。
データを使用して を作成し、モデルcc.mallet.types.InstanceList
を適合させます。cc.mallet.topics.SimpleLDA
次に、それぞれcc.mallet.types.Instance
(インスタンスはドキュメントです) について、相互の発散メトリックを計算しますInstance
。このためには、 each 内の各トピックの確率を計算する必要がありますがInstance
、これは少し注意が必要です。には、とそのを保持SimpleLDA
するArrayList<TopicAssignment> data
オブジェクトがあります。Aには、各単語のトピック割り当てを保持すると呼ばれるが含まれています。各トピックのカウントを取得するには、これをループする必要があります。次に、ドキュメント j のトピック i の確率は単純に (ドキュメント j のトピック i に割り当てられた単語数) / (ドキュメント j の合計単語数) です。これらの確率を保存し、それらを使用して、選択した発散メトリック (たとえば、KL 発散) を計算します。Instances
cc.mallet.topics.TopicAssignment
TopicAssignment
cc.mallet.types.LabelSequence
topicSequence
Mallet は、探索が非常に簡単なツールです。Mallet の JAVA 実装を使用する代わりに、http: //mallet.cs.umass.edu/download.phpで入手できるバイナリ ファイルを直接実行できます。ドキュメント内のトピック配布などのファイルを生成するためのコードも必要ありません。train-topics オプションを使用して mallet でトピックをトレーニングしているときに、mallet がこのディストリビューションを書き込むファイルを指定できます。
ダウンロード後、mallet --help と入力するだけで、mallet を使用して実行できる多くのことのリストを取得できます。それらは自明であり、非常に理解しやすいです。