Я использую пакет Gensim для моделирования тем. Идея состоит в том, чтобы понять, какие темы указаны в тегах flickr. До сих пор я использую этот код (документ - это теги):
texts = [[word for word in document.split(";") if word not in stoplist] for document in documents]
dictionary = corpora.Dictionary(texts)
corpus = [dictionary.doc2bow(text) for text in texts]
lda = ldamodel.LdaModel(corpus, id2word=dictionary, alpha = 0.1, num_topics=10)
topic = []
for f in lda.print_topics(num_topics=4, num_words=10):
topic_number = f[0]
keywords = f[1]
keywords = keywords.split(" + ")
keywords_update = {}
for ii in keywords:
ii = str(ii)
keyword = ii[6:]
probab = ii[0:5]
probab = float(probab)
if probab > 0.02:
keywords_update.update({keyword:probab})
topic.append(keywords_update)
print topic
По сути, я обучаю LDA работе со всеми своими документами, а затем печатаю 10 наиболее вероятных слов для каждой темы. Это правильно? Или мне нужно обучить данные в какой-то части документов, а затем использовать corpus_lda = lda [corpus], чтобы применить обученную модель к невидимым документам? Если при каждом запуске модели результаты будут разными, значит ли это, что количество тем неверное? Как лучше всего оценить результаты?
lda[corpus]
. Чтобы узнать, какие слова наиболее связаны с каждой темой, вы можете вывести 10 наиболее вероятных слов для каждой темы. См. здесь, где описаны другие функции, которые могут помочь вам распечатать эти вещи. - person interpolack   schedule 12.03.2016