代码的最后部分:
lda = LdaModel(corpus=corpus,id2word=dictionary, num_topics=2)
print lda
bash输出:
INFO : adding document #0 to Dictionary(0 unique tokens)
INFO : built Dictionary(18 unique tokens) from 5 documents (total 20 corpus positions)
INFO : using serial LDA version on this node
INFO : running online LDA training, 2 topics, 1 passes over the supplied corpus of 5 documents, updating model once every 5 documents
WARNING : too few updates, training might not converge; consider increasing the number of passes to improve accuracy
INFO : PROGRESS: iteration 0, at document #5/5
INFO : 2/5 documents converged within 50 iterations
INFO : topic #0: 0.079*cute + 0.076*broccoli + 0.070*adopted + 0.069*yesterday + 0.069*eat + 0.069*sister + 0.068*kitten + 0.068*kittens + 0.067*bananas + 0.067*chinchillas
INFO : topic #1: 0.082*broccoli + 0.079*cute + 0.071*piece + 0.070*munching + 0.069*spinach + 0.068*hamster + 0.068*ate + 0.067*banana + 0.066*breakfast + 0.066*smoothie
INFO : topic diff=0.470477, rho=1.000000
<gensim.models.ldamodel.LdaModel object at 0x10f1f4050>
所以我想知道我能够将它生成的结果主题保存为可读格式。我已经尝试了.save()
方法,但它总是输出一些不可读的东西。
答案 0 :(得分:17)
以下是如何为gensim LDA保存模型:
from gensim import corpora, models, similarities
# create corpus and dictionary
corpus = ...
dictionary = ...
# train model, this might takes time
model = models.LdaModel.LdaModel(corpus=corpus,id2word=dictionary, num_topics=200,passes=5, alpha='auto')
# save model to disk (no need to use pickle module)
model.save('lda.model')
要打印主题,可以采取以下几种方法:
# later on, load trained model from file
model = models.LdaModel.load('lda.model')
# print all topics
model.show_topics(topics=200, topn=20)
# print topic 28
model.print_topic(109, topn=20)
# another way
for i in range(0, model.num_topics-1):
print model.print_topic(i)
# and another way, only prints top words
for t in range(0, model.num_topics-1):
print 'topic {}: '.format(t) + ', '.join([v[1] for v in model.show_topic(t, 20)])
答案 1 :(得分:3)
您可以使用pickle
模块。
import pickle
# your code
pickle.dump(lda,open(filename,'w'))
# you may load it back again
lda_copy = pickle.load(file(filename))
答案 2 :(得分:3)
您只需要使用lda.show_topics(topics=-1)
或您想要的任意数量的主题(主题= 10,主题= 15,主题= 1000 ....)。我通常只做:
logfile = open('.../yourfile.txt', 'a')
print>>logfile, lda.show_topics(topics=-1, topn=10)
所有这些参数和其他参数都可以在gensim documentation中找到。
答案 3 :(得分:0)
.save()
为您提供模型本身,而不是主题(因此,输出内容不可读)。
使用:
with open('topic_file', 'w') as topic_file:
topics=lda_model.top_topics(corpus)
topic_file.write('\n'.join('%s %s' %topic for topic in topics))
您将获得所有集群的主题的可读文件,以及它们的关联概率。