在 Python gensim 主题模型中访问字典
Access dictionary in Python gensim topic model
我想看看如何从 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)
?非常感谢您的帮助和回答!
一般方法应该是使用 Dictionary.save
method and read it back for reuse using Dictionary.load
.
将训练模型时创建的字典存储到文件中
只有这样 Dictionary.token2id
才能保持不变,并且可以用于将 ID 映射到单词,反之亦然用于预训练模型。
我想看看如何从 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)
?非常感谢您的帮助和回答!
一般方法应该是使用 Dictionary.save
method and read it back for reuse using Dictionary.load
.
只有这样 Dictionary.token2id
才能保持不变,并且可以用于将 ID 映射到单词,反之亦然用于预训练模型。