计算非 gensim 主题模型的连贯性
Calculate coherence for non-gensim topic model
我已经建立了一个主题模型,其中:
- 输入:标记化列表列表
- 输出:一个m x t矩阵(每个单元格表示单词i的概率出现在主题 k).
- 输出:一个k x n矩阵(每个单元格表示主题k的概率在文档 j).
为了找到最佳主题数,我想计算模型的一致性。然而,我只知道 Gensim
的 Coherencemodel
,它似乎需要一个 Gensim 模型作为输入。
是否还有其他 packages/implementations 可用于计算计算主题模型的连贯性?或者,如果确实可以在不输入 LDA 模型的情况下使用 Coherencemodel
,有人可以告诉我该怎么做吗?
实际上,您可以使用 Gensim 包来做到这一点。
input_data = 包含标记化文本的列表
topics = 每个主题前 N 个词的列表
import gensim.corpora as corpora
from gensim.models.coherencemodel import CoherenceModel
id2word = corpora.Dictionary(input_data)
corpus = [id2word.doc2bow(text) for text in input_data]
cm = CoherenceModel(topics=topics,texts = input_data,corpus=corpus, dictionary=id2word, coherence='c_v')
coherence = cm.get_coherence()
我已经建立了一个主题模型,其中:
- 输入:标记化列表列表
- 输出:一个m x t矩阵(每个单元格表示单词i的概率出现在主题 k).
- 输出:一个k x n矩阵(每个单元格表示主题k的概率在文档 j).
为了找到最佳主题数,我想计算模型的一致性。然而,我只知道 Gensim
的 Coherencemodel
,它似乎需要一个 Gensim 模型作为输入。
是否还有其他 packages/implementations 可用于计算计算主题模型的连贯性?或者,如果确实可以在不输入 LDA 模型的情况下使用 Coherencemodel
,有人可以告诉我该怎么做吗?
实际上,您可以使用 Gensim 包来做到这一点。
input_data = 包含标记化文本的列表
topics = 每个主题前 N 个词的列表
import gensim.corpora as corpora
from gensim.models.coherencemodel import CoherenceModel
id2word = corpora.Dictionary(input_data)
corpus = [id2word.doc2bow(text) for text in input_data]
cm = CoherenceModel(topics=topics,texts = input_data,corpus=corpus, dictionary=id2word, coherence='c_v')
coherence = cm.get_coherence()