gensim.interfaces.TransformedCorpus - 如何使用?

问题描述 投票:2回答:2

我在Latent Dirichlet Allocation的世界里相对较新。我能够按照Wikipedia教程生成LDA模型,并且我能够使用自己的文档生成LDA模型。我现在的步骤是尝试了解如何使用previus生成的模型对看不见的文档进行分类。我正在保存我的“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 < - >术语字典并将此标记化文档转换为“文档 - 术语矩阵”

但是当我运行new_topics = new_lda[corpus]时,我收到了一个'gensim.interfaces.TransformedCorpus对象,位于0x7f0ecfa69d50'

我怎样才能从中提取主题?

我已经试过了

`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?

谢谢。

gensim lda
2个回答
5
投票

我遇到了同样的问题。此代码将解决您的问题:

new_topics = new_lda[corpus]

for topic in new_topics:

      print(topic)

这将为您提供表格元组列表(主题编号,概率)


1
投票

来自RaRe Technologies人员编写的'Topics_and_Transformation.ipynb'教程:

在调用corpus_transformed = model[corpus]时转换整个语料库意味着将结果存储在主存中,这与gensim的内存独立性目标相矛盾。

如果您将多次迭代转换的corpus_transformed,并且转换成本高昂,请先将生成的语料库序列化为磁盘并继续使用它。

希望能帮助到你。

© www.soinside.com 2019 - 2024. All rights reserved.