Gensim:如何从保存的lda模型中加载语料库



当我保存我的LdaModellda_model.save('model')时,它保存了4个文件:

  1. model
  2. model.expElogbeta.npy
  3. model.id2word
  4. model.state

我想使用pyLDAvis.gensim来可视化主题,这似乎需要模型、语料库和词典。我能够加载模型和字典:

lda_model = LdaModel.load('model')
dict = corpora.Dictionary.load('model.id2word')

有可能加载语料库吗?怎样

在这里分享这个,因为我也花了一段时间才找到答案。请注意,dict不是字典的有效名称,我们使用lda_dict

# text array is a list of lists containing text you are analysing
# eg. text_array = [['volume', 'eventually', 'metric', 'rally'], ...]
# lda_dict is a gensim.corpora.Dictionary object
bow_corpus = [lda_dict.doc2bow(doc) for doc in text_array]

Jireh回答正确,但可能会混淆如何加载所有以前的LDA文件。我不知道gensim为什么保存*.state和*.npy文件(我很感激评论中的见解(。要重用以前的LDA模型,请将*.model和*.id2单词文件与原始语料库一起加载。

例如,如果我在"docs"列中有一个文档的数据帧,那么您将再次加载该数据帧,因为您需要它来重新创建语料库。

import pandas as pd
from gensim import corpora, models
from gensim.corpora.dictionary import Dictionary
from pyLDAvis import gensim_models
df = pd.read_csv('your_file.csv')
texts = df['docs'].values

您按照如下方式加载先前创建的词典:

dictionary = corpora.Dictionary.load('your_file.id2word')

然后从字典和你的原始文本中创建语料库(从上面的数据框架['docs']创建(:

corpus = [dictionary.doc2bow(text) for text in texts]

先前创建的LDA模型通过gensim:加载

lda_model = gensim.models.ldamodel.LdaModel.load('your_file.model')

然后将这些对象输入到您的pyLDAvis实例中:

lda_viz = pyLDAvis.gensim_models.prepare(lda_model, corpus, dictionary)

如果不使用.id2字文件,可能会遇到形状不正确的问题(IndexError(。我在运行LDA多核时遇到过这种情况,所以我使用.id2单词,而不是从语料库中重新创建词典。

在gensim-python代码中,他们说忽略expElogbeta和state文件。可以加载语料库,语料库是一组包含2个数字的列表。加载它会很复杂,我建议从原始文本数据加载语料库,并使用id2word

最新更新