前言:写小论文用到lda主题模型,需要得到所有的文档-主题分布。现有的只是为文档输出前几个概率大的主题
代码:
import numpy as np
from gensim.models import LdaModel
#训练lda模型
lda = LdaModel(corpus=corpus, id2word=dictionary, num_topics=size_lda ,minimum_probability=0)
"""start:文档-主题分布矩阵,使用DocumentTopicMatrix[][]存储"""
DocumentTopicMatrix = np.zeros([len(doc), size_lda])#存储文档-主题分布,len(doc)就是文档的总个数
#存储文档-主题分布矩阵
for id in range(len(corpus)):
doc_top = lda.get_document_topics(corpus[id], per_word_topics=False)
m = 0
for x in doc_top:
DocumentTopicMatrix[id][m] = x[1]
m += 1
#保存文档-主题分布矩阵
np.savetxt("allData\DocumentTopicMatrix.txt",DocumentTopicMatrix)
print("文档-主题分布矩阵保存成功")
"""end:文档-主题分布矩阵,使用DocumentTopicMatrix[][]存储"""
minimum_probability是概率低于此阈值的主题将被过滤掉。默认是0.01,设置为0则表示不丢弃任何主题。