LDA模型,获取所有的文档-主题分布(即得到文档对于每个主题的概率分布)并保存

前言:写小论文用到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则表示不丢弃任何主题。

你可能感兴趣的:(NLP,中文数据处理,python,自然语言处理)