在潜在的Dirichlet分配领域,我是相对较新的。我能够按照维基百科教程生成一个LDA模型,并且能够用我自己的文档生成一个LDA模型。我现在的步骤是尝试理解如何使用以前生成的模型来分类未见的文档。我把我的"lda_wiki_model“保存在
id2word =gensim.corpora.Dictionary.load_from_text('ptwiki_wordids.txt.bz2')
mm = gensim.corpora.MmCorpus('ptwiki_tfidf.mm')
lda = gensim.models.ldamodel.LdaModel(corpus=mm, id2word=id2word, num_topics=100, update_every=1, chunksize=10000, passes=1)
lda.save('lda_wiki_model.lda')我把同一款车装上:
new_lda = gensim.models.LdaModel.load(path + 'lda_wiki_model.lda') #carrega o modelo我有一个"new_doc.txt",我将我的文档转换为id<->术语字典,并将这个标记化的文档转换为“文档项矩阵”。
但是当我运行'gensim.interfaces.TransformedCorpus时,我在0x7f0ecfa69d50'上接收一个new_topics = new_lda[corpus]对象
我如何从中提取主题?
我已经试过了
`lsa = models.LdaModel(new_topics, id2word=dictionary, num_topics=1, passes=2)
corpus_lda = lsa[new_topics]
print(lsa.print_topics(num_topics=1, num_words=7)和
print(corpus_lda.print_topics(num_topics=1, num_words=7) `
但那些回归的话题与我的新文档无关。我的错误在哪里?我很想念理解什么吗?
**如果使用上面创建的字典和语料库运行一个新模型,我会收到正确的主题,我的重点是:如何重用我的模型?正确地重用那个wiki_model吗?
谢谢。
发布于 2017-09-01 09:53:22
我也面临着同样的问题。此代码将解决您的问题:
new_topics = new_lda[corpus]
for topic in new_topics:
print(topic)这将给出一个表格元组的列表(主题号、概率)。
发布于 2019-04-29 21:15:29
来自由Transformation.ipynb技术人员编写的“RaRe”教程:
调用
corpus_transformed = model[corpus]时转换整个语料库将意味着将结果存储在主内存中,这与gensim的记忆独立性目标相矛盾。 如果要多次迭代转换后的corpus_transformed,并且转换成本很高,那么首先将结果的语料库序列化到磁盘,然后继续使用。
希望能帮上忙。
发布于 2020-11-29 05:43:16
这已经得到了回答,但是这里有一些代码供任何想要将未见文档的分类导出到CSV文件的人使用。
#Access the unseen corpus
corpus_test = [id2word.doc2bow(doc) for doc in data_test_lemmatized]
#Transform into LDA space based on old
lda_unseen = lda_model[corpus_test]
#Print results, export to csv
for topic in lda_unseen:
print(topic)
topic_probability = []
for t in lda_test:
#print(t)
topic_probability.append(t)
results_test = pd.DataFrame(topic_probability,columns=['Topic 1','Topic 2',
'Topic 3','Topic 4',
'Topic 5','Topic n'])
result_test.to_csv('test_results.csv', index=True, header=True)受此帖子启发的代码。
https://stackoverflow.com/questions/45317151
复制相似问题