使用预定主题分布初始化Gensim LDA模型

在确定新文档的主题时,我们可以使gensim lda模型使用预定主题分布吗?

例如:

import gensim
texts=[['a','a','a'],['b','b','b'],['c','c','c']]
d = gensim.corpora.Dictionary(texts)
bow = [d.doc2bow(doc) for doc in texts]
import numpy as np
user_topics=np.array([[1,0],[0,1,1]])
model = gensim.models.LdaModel(corpus=bow,id2word=d,num_topics=3,random_state=1,eta=user_topics)
model.get_topics()

返回

array([[0.9728407,0.01204113,0.01511812],[0.01140388,0.9742677,0.01432837],[0.02468761,0.00788806,0.9674243 ]],dtype=float32)

model.get_topics()是否可以返回与'eta'相同的分布?

[[1,1]]

cbfdhtrhyt 回答:使用预定主题分布初始化Gensim LDA模型

这是一个有趣的问题,因为先验(η)等于后验(β)仅在可能性为常数时才会发生,并且这里的可能性看起来像是常数,即每个主题(在先)将只产生一个字。

但是,一个实际的问题是,我们使用对数似然来拟合LDA(请参见algorithm 1),因此之前的零将被平滑。另外,您可能希望检查gensim.models.LdaModel中的其他参数,因为在实现过程中还涉及许多其他阈值。

结果是,您只会看到β逼近,但不等于η,并且具有更多数据(例如,代替3个“ a”,尝试300个“ a”),它将更接近。

本文链接:https://www.f2er.com/3051159.html

大家都在问