识别LDA模型的一致性值时出错

时间:2017-09-18 14:58:51

标签: python gensim lda

我尝试运行LDA模型n将LDA对象传递给get_coherence()它显示错误

x.get_coherence()

*** TypeError:diags()至少需要2个参数(给定2个)

我的代码: -

iModel = models.ldamodel.LdaModel(corpus=corpus, id2word=dictionary, 
num_topics=i, passes=10)

ldalist.append(iModel)

x = CoherenceModel(model=iModel, texts=tokenizedTexts, dictionary=dictionary, 
coherence=coherence)

cohValue = x.get_coherence()

2 个答案:

答案 0 :(得分:1)

u_mass一致性可以在没有原始文本的情况下计算。

文本只是“未矢量化”的语料库。

您可以将语料库转换为这样的单词列表列表,然后才能将其用于连贯性:

texts = [[dictionary[word_id] for word_id, freq in doc] for doc in corpus]

然后建立连贯模型并获得结果:

u_mass = models.CoherenceModel(model=topic_model, corpus=corpus, dictionary=dictionary, coherence='u_mass')
u_mass_coh = u_mass.get_coherence()

c_v = models.CoherenceModel(model=topic_model, texts=texts, corpus=corpus, dictionary=dictionary, coherence='c_v')
c_v_coh = c_v.get_coherence()

c_uci = models.CoherenceModel(model=topic_model, texts=texts, corpus=corpus, dictionary=dictionary, coherence='c_uci')
c_uci_coh = c_uci.get_coherence()

c_npmi = models.CoherenceModel(model=topic_model, texts=texts, corpus=corpus, dictionary=dictionary, coherence='c_npmi')
c_npmi_coh = c_npmi.get_coherence() 

答案 1 :(得分:0)

您可以将代码放入main()函数,然后使用:

if __name__ == '__main__':
 main()

这对我有用。