2017-07-25 2 views
1

私は、このようなgensim LDAを使用してドキュメントの完全なトピック配布を取得するにはどうすればよいですか?

dictionary = corpora.Dictionary(data) 
corpus = [dictionary.doc2bow(doc) for doc in data] 
num_cores = multiprocessing.cpu_count() 
num_topics = 50 
lda = LdaMulticore(corpus, num_topics=num_topics, id2word=dictionary, 
workers=num_cores, alpha=1e-5, eta=5e-1) 

としての私のLDAモデルを訓練するとき、私はそれぞれ、すべての文書のすべてのnum_topicsの完全なトピック分布を取得したいです。つまり、この特定のケースでは、各文書に配布に寄与する50のトピックがあります。 50のトピックすべてにアクセスできます。この出力はLDAの数学に厳密に従えばLDAがすべきことです。しかし、gensimは、hereのように特定のしきい値を超えるトピックのみを出力します。例えば、私はしかし、これは私のために動作しません、上記のリンクで解決策を試してみました89を文書化するのが最も貢献だけで3トピックを示し

lda[corpus[89]] 
>>> [(2, 0.38951721864890398), (9, 0.15438596408262636), (37, 0.45607443684895665)] 

をしようとした場合。私はまだ同じ出力を得る:

theta, _ = lda.inference(corpus) 
theta /= theta.sum(axis=1)[:, None] 

出力は、1文書につき2,3つの同じ出力しか出ない。

私の質問は、私は文書のFULLトピック分布にアクセスすることができますので、私はこのしきい値を変更するにはどうすればよいのですか?どのようにトピックの文書への寄与が重要ではないにしても、どのようにして完全なトピックの配布にアクセスできますか?私が完全配布を望む理由は、文書の配布の間にKL similarityの検索を実行できるからです。事前

答えて

0

おかげで誰もがまだ答えたように見えるdoes notの、ので、私はgensim documentationを与えることができる最高のとしてこれを試してみてお答えします。

lda = LdaMulticore(corpus=corpus, num_topics=num_topics, id2word=dictionary, workers=num_cores, alpha=1e-5, eta=5e-1, 
       minimum_probability=0.0) 

lda[corpus[233]] 
>>> [(0, 5.8821799358842424e-07), 
(1, 5.8821799358842424e-07), 
(2, 5.8821799358842424e-07), 
(3, 5.8821799358842424e-07), 
(4, 5.8821799358842424e-07), 
(5, 5.8821799358842424e-07), 
(6, 5.8821799358842424e-07), 
(7, 5.8821799358842424e-07), 
(8, 5.8821799358842424e-07), 
(9, 5.8821799358842424e-07), 
(10, 5.8821799358842424e-07), 
(11, 5.8821799358842424e-07), 
(12, 5.8821799358842424e-07), 
(13, 5.8821799358842424e-07), 
(14, 5.8821799358842424e-07), 
(15, 5.8821799358842424e-07), 
(16, 5.8821799358842424e-07), 
(17, 5.8821799358842424e-07), 
(18, 5.8821799358842424e-07), 
(19, 5.8821799358842424e-07), 
(20, 5.8821799358842424e-07), 
(21, 5.8821799358842424e-07), 
(22, 5.8821799358842424e-07), 
(23, 5.8821799358842424e-07), 
(24, 5.8821799358842424e-07), 
(25, 5.8821799358842424e-07), 
(26, 5.8821799358842424e-07), 
(27, 0.99997117731831464), 
(28, 5.8821799358842424e-07), 
(29, 5.8821799358842424e-07), 
(30, 5.8821799358842424e-07), 
(31, 5.8821799358842424e-07), 
(32, 5.8821799358842424e-07), 
(33, 5.8821799358842424e-07), 
(34, 5.8821799358842424e-07), 
(35, 5.8821799358842424e-07), 
(36, 5.8821799358842424e-07), 
(37, 5.8821799358842424e-07), 
(38, 5.8821799358842424e-07), 
(39, 5.8821799358842424e-07), 
(40, 5.8821799358842424e-07), 
(41, 5.8821799358842424e-07), 
(42, 5.8821799358842424e-07), 
(43, 5.8821799358842424e-07), 
(44, 5.8821799358842424e-07), 
(45, 5.8821799358842424e-07), 
(46, 5.8821799358842424e-07), 
(47, 5.8821799358842424e-07), 
(48, 5.8821799358842424e-07), 
(49, 5.8821799358842424e-07)] 

は、あなたが望む結果を得るためにモデルを訓練するときminimum_probability 0.0にパラメータを設定する必要がありそうです

関連する問題