2013-06-27 2 views
4

последние части кода:Gensim: Как сохранить выпущенные темы модели LDA в читаемом формате (csv, txt и т. Д.)?

lda = LdaModel(corpus=corpus,id2word=dictionary, num_topics=2) 
print lda 

Баш выход:

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

вы пробовали регулярное выражение? я столкнулся с тем же и заметил, что каждый элемент действует как строка. – user3314418

ответ

2

вам просто нужно использовать 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

Вы можете использовать модуль pickle.

import pickle 
# your code 
pickle.dump(lda,open(filename,'w')) 
# you may load it back again 
lda_copy = pickle.load(file(filename)) 
+1

Обратите внимание, что 'pickle' обычно пишет текстовый файл, который, хотя и читаемый, может быть не понятен. – Nik

+0

argh. да, я только что видел результаты. знаете ли вы о том, как просто нарисовать темы из пакета, так что получившийся текстовый файл будет проще скраб? –

+0

Извините, я не знаю такого способа. – Nik

13

Вот как сохранить модель для 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)])