是否可以用LDA的Mallet实现绘制pyLDAvis?我对LDA_Model没有任何问题,但是当我使用Mallet时,我得到:
'LdaMallet' object has no attribute 'inference'
我的代码 :
pyLDAvis.enable_notebook()
vis = pyLDAvis.gensim.prepare(mallet_model, corpus, id2word)
vis
运行此行以在 pyLDAvis 之前将木槌模型的类转换为 LdaModel
[编辑]:编辑代码以改用 gensim 中的内置函数。我刚刚尝试过,但无法在转换后的木槌模型上使用 pyLDAvis 获得有意义的结果;主题似乎包含随机术语。以前有人遇到过吗?
import gensim
model = gensim.models.wrappers.ldamallet.malletmodel2ldamodel(mallet_model)
从下面的链接得到这个,请浏览它,第 565 - 590 行
https://github.com/RaRe-Technologies/gensim/blob/develop/gensim/models/wrappers/ldamallet.py#L359
我希望我有所帮助。
from gensim.models.ldamodel import LdaModel
def convertldaGenToldaMallet(mallet_model):
model_gensim = LdaModel(
id2word=mallet_model.id2word, num_topics=mallet_model.num_topics,
alpha=mallet_model.alpha, eta=0,
)
model_gensim.state.sstats[...] = mallet_model.wordtopics
model_gensim.sync_state()
return model_gensim
我发现这篇博文很有帮助,直接使用MALLET生成的状态文件,该状态文件也是使用Gensim的Mallet包装器生成的。