当我这样训练我的lda模型时:
我希望能够获得每个文档在所有num_topics下的完整主题分布。也就是说,在这种情况下,我希望每个文档都有50个主题对分布做出贡献,而且我想要能够访问所有50个主题的贡献。如果严格遵循LDA的数学原理,这就是LDA应该做的输出。但是,gensim只会输出超过一定阈值的主题,如这里所示。例如,如果我尝试
dictionary = corpora.Dictionary(data)
corpus = [dictionary.doc2bow(doc) for doc in data]
num_cores = multiprocessing.cpu_count()
num_topics = 50
lda = LdaMulticore(corpus, num_topics=num_topics, id2word=dictionary,
workers=num_cores, alpha=1e-5, eta=5e-1)
我希望能够获得每个文档在所有num_topics下的完整主题分布。也就是说,在这种情况下,我希望每个文档都有50个主题对分布做出贡献,而且我想要能够访问所有50个主题的贡献。如果严格遵循LDA的数学原理,这就是LDA应该做的输出。但是,gensim只会输出超过一定阈值的主题,如这里所示。例如,如果我尝试
lda[corpus[89]]
>>> [(2, 0.38951721864890398), (9, 0.15438596408262636), (37, 0.45607443684895665)]
这个问题是关于只显示对文档89有最大贡献的3个主题。我已经尝试了上面链接中提供的解决方案,但对我没有用。我仍然得到相同的输出:
theta, _ = lda.inference(corpus)
theta /= theta.sum(axis=1)[:, None]
生成相同的输出,即每个文档仅有2、3个主题。
我的问题是如何更改此阈值,以便我可以访问每个文档的完整主题分布?我如何访问完整的主题分布,无论主题对文档的贡献多么微不足道?我想要完整的分布的原因是为了能够在文档之间的KL相似度搜索中执行操作。
提前致谢