首页 > 解决方案 > Python gensim 主题模型中的访问字典

问题描述

我想看看如何从 gensim lda 主题模型访问字典。这在您训练 lda 模型、保存并稍后加载时尤其重要。换句话说,假设 lda_model 是在文档集合上训练的模型。要获得文档主题矩阵,可以执行以下操作或类似https://www.kdnuggets.com/2019/09/overview-topics-extraction-python-latent-dirichlet-allocation.html中解释的操作:

def regTokenize(text):
    # tokenize the text into words
    import re
    WORD = re.compile(r'\w+')
    words = WORD.findall(text)
    return words

from gensim.corpora.dictionary import Dictionary
ttext = [regTokenize(d) for d in text]  
dic = Dictionary(ttext)
ttext = [dic.doc2bow(text) for text in ttext]
ttext = lda_model.get_document_topics(ttext)

但是,训练中的字典lda_model可能与新数据不同,并在最后一行给出错误,例如:

"IndexError: index 41021 is out of bounds for axis 1 with size 41021"

有没有办法(或参数)从受过训练的字典中获取字典lda_model,而不是使用它dic = Dictionary(ttext)?非常感谢您的帮助和回答!

标签: pythondictionarygensimldatopic-modeling

解决方案


一般的方法应该是使用Dictionary.save方法将训练模型时创建的字典存储到文件中,并使用Dictionary.load.

只有这样才能Dictionary.token2id保持不变,并且可以用于将 id 映射到单词,反之亦然,用于预训练模型。


推荐阅读