如何在结构主题建模 R 包中绘制文档主题分布?
How to plot a document topic distribution in structural topic modeling R-package?
如果我使用 python Sklearn 进行 LDA 主题建模,我可以使用转换函数来获得 "document topic distribution" LDA 结果,如下所示:
document_topic_distribution = lda_model.transform(document_term_matrix)
现在我也尝试了 R structural topic models (stm) 包,我想得到相同的。 stm 包中有没有函数,可以产生同样的东西(文档主题分布)?
我创建的 stm 对象如下:
stm_model <- stm(documents = out$documents, vocab = out$vocab,
K = number_of_topics, data = out$meta,
max.em.its = 75, init.type = "Spectral" )
但我没有找到如何从这个对象中获得所需的分布。 documentation 也没有真正帮助我。
正如 emilliman5 指出的那样,您的 stm_model
提供了对模型基础参数的访问,如 in the documentation 所示。
的确,theta
参数是一个
Number of Documents by Number of Topics matrix of topic proportions.
这需要一些语言解析:它是一个 N_DOCS
× N_TOPICS
的矩阵,即它有 N_DOCS
行,每个文档一个,N_TOPICS
列,一个每个主题。这些值是主题比例,即如果 stm_model[1, ] == c(.3, .2, .5)
,则意味着文档 1 是 30% 的主题 1、20% 的主题 2 和 50% 的主题 3。
要找出哪个主题主导文档,您必须找到最大值的(列!)索引,可以检索该索引,例如通过用 MARGIN=1
调用 apply
,基本上就是 "do this row-wise"; which.max
简单地 returns 最大值的索引:
apply(stm_model$theta, MARGIN=1, FUN=which.max)
如果我使用 python Sklearn 进行 LDA 主题建模,我可以使用转换函数来获得 "document topic distribution" LDA 结果,如下所示:
document_topic_distribution = lda_model.transform(document_term_matrix)
现在我也尝试了 R structural topic models (stm) 包,我想得到相同的。 stm 包中有没有函数,可以产生同样的东西(文档主题分布)? 我创建的 stm 对象如下:
stm_model <- stm(documents = out$documents, vocab = out$vocab,
K = number_of_topics, data = out$meta,
max.em.its = 75, init.type = "Spectral" )
但我没有找到如何从这个对象中获得所需的分布。 documentation 也没有真正帮助我。
正如 emilliman5 指出的那样,您的 stm_model
提供了对模型基础参数的访问,如 in the documentation 所示。
的确,theta
参数是一个
Number of Documents by Number of Topics matrix of topic proportions.
这需要一些语言解析:它是一个 N_DOCS
× N_TOPICS
的矩阵,即它有 N_DOCS
行,每个文档一个,N_TOPICS
列,一个每个主题。这些值是主题比例,即如果 stm_model[1, ] == c(.3, .2, .5)
,则意味着文档 1 是 30% 的主题 1、20% 的主题 2 和 50% 的主题 3。
要找出哪个主题主导文档,您必须找到最大值的(列!)索引,可以检索该索引,例如通过用 MARGIN=1
调用 apply
,基本上就是 "do this row-wise"; which.max
简单地 returns 最大值的索引:
apply(stm_model$theta, MARGIN=1, FUN=which.max)