[英]How to plot a document topic distribution in structural topic modeling R-package?
如果我使用python Sklearn进行LDA主题建模,则可以使用transform函数获取LDA结果的“文档主题分布”,如下所示:
document_topic_distribution = lda_model.transform(document_term_matrix)
现在,我还尝试了R结构主题模型(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" )
但是我没有发现如何从该对象中获得所需的分布。 该文档并没有真正帮助我。
正如emilliman5所指出的那样,您的stm_model
提供了对模型基础参数的访问,如文档所示。
实际上, theta
参数是
“按主题数划分的文档数”主题比例矩阵。
这需要一些语言上的解析:它是一个N_DOCS
x N_TOPICS
矩阵,即,它具有N_DOCS
行,每个文档一个,以及N_TOPICS
列,每个主题一个。 值是主题比例,即,如果stm_model[1, ] == c(.3, .2, .5)
,则意味着文档1为主题30的1%,主题2的20%和主题3的50%。
要找出哪个主题主导文档,您必须找到最大值的(列!)索引,该索引可以通过例如使用MARGIN=1
调用apply
来检索,该索引基本上说“逐行执行”; which.max
只是返回最大值的索引:
apply(stm_model$theta, MARGIN=1, FUN=which.max)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.