2017-11-02 1511 views
0

崩壊したGibbsサンプリングを使用してLDAトピックモデルを最適化しようとしています。私は、トピックkの数を最適化するために、Rでldatuningパッケージを使用している:Gibbsサンプリングとburnin + thinオプションを使用したLDAトピックモデルのPython実装?

controls_tm <- list(
    burnin = 1000, 
    iter = 4000, 
    thin = 500, 
    nstart = 5, 
    seed = 0:4, 
    best = TRUE 
) 

    num_cores <- max(parallel::detectCores() - 1, 1) 

    result <- FindTopicsNumber(my_dfm, topics = seq(40, 100, by = 5), metrics = c("Griffiths2004", "CaoJuan2009", "Arun2010", "Deveaud2014"), mc.cores = num_cores, control = controls_tm, verbose = TRUE) 

これは、すべての罰金です。今では、同じ制御で与えられたkについてRでtopicmodelsを実行できますが、27コアのHPCクラスターであっても、モデルごとに実行するには8時間かかります。私はPerlxityを比較するために複数のモデルを実行する必要があるため、同じコントロールで実行できるLDAトピックモデルのPython実装を探しています。これはldatuningを最適化するために使用したものと一致します。

Pythonでライブラリを見てきました.Gibbsを使用しており、モデルあたり1時間で<が必要です。しかし、私が知る限り、私はそれを燃え尽き、または薄いパラメータに渡すことはできません。

私もsklearn.decomposition.LatentDirichletAllocation見てきましたが、それは代わりにギブスの変分ベイズを使用し、それがとにかくバーンインや薄い受け入れるように、それはまた見えません。同じことがgensim(私はそれに精通していないと思う)に行く。

これはPythonには存在しませんか?あるいは、私はPythonでGibbsのサンプリングと必要なパラメータを使ってモデルを実行できるように回避策がありますか?ありがとう!

+0

Pythonで 'method =" Gibss "'のようなパラメータがないことは確かですか? –

+0

@HenryNavarro私はそうは思わないけど、Pythonでメソッドを選択できないのが奇妙だと分かっています。私は何かが足りないと思った。 http://scikit-learn.org/dev/modules/generated/sklearn.decomposition.LatentDirichletAllocation.html – leslieh

答えて

0

オンライントレーニングを使用しないと仮定した場合、gensimのLatent Dirichlet Allocation via Malletを確認しましたか?

このモジュールは、(の最適化バージョン)を使用して、新しい、目に見えない文書のトピック分布のトレーニングコーパスと推論からLDAモデル推定の両方を可能にマレットからギブスサンプリングを崩壊しました。

関連する問題