R LDAvis为每个主题定义文档

时间:2015-08-24 13:58:49

标签: r text-mining lda topic-modeling

这是关于LDA和R中的LDAvis应用程序的问题。由于这是我第一次使用这个软件包,我将不胜感激任何有助于我研究的帮助。

我希望能够根据概率查看每个主题定义的文档。我正在使用调查数据,我正在查看评论部分并将其中每个都定义为文档。

我将使用cpsievert的“电影评论主题模型”示例,因为这与我的代码非常相似。完整代码可在以下链接中找到:访问

http://cpsievert.github.io/LDAvis/reviews/reviews.html

我已经到了使用LDA模型拟合模型的阶段,基于以下代码:

set.seed(123)
fit <- lda.collapsed.gibbs.sampler(documents = documents, K = K, vocab = vocab, 
                               num.iterations = G, alpha = alpha, 
                               eta = eta, initial = NULL, burnin = 0,
                               compute.log.likelihood = TRUE)

然后使用LDAvis创建交互式html,使用以下代码:

json <- createJSON(phi = MovieReviews$phi, 
               theta = MovieReviews$theta, 
               doc.length = MovieReviews$doc.length, 
               vocab = MovieReviews$vocab, 
               term.frequency = MovieReviews$term.frequency)

现在基于交互式html我已经根据频率术语定义了主题。电影评论有一个例子,可以通过以下链接找到:

http://cpsievert.github.io/LDAvis/reviews/vis/#topic=7&lambda=0.6&term=

此主题可以定义为电影评论的喜剧。

因此,如果在此示例中“topic7”被称为喜剧,您如何查看最有可能由此主题定义的评论?

我想知道,如何根据topic7定义文档,然后能够查看它们,比如使用:

View(MovieReviwes$Topic7)

如果这个问题广泛且冗长,我道歉,但如果有人可以通过我在链接中给出的示例来回答它,这将有很大帮助。提前谢谢。

1 个答案:

答案 0 :(得分:1)

我认为您可能无法完全理解lda的作用以及它们的工作原理。 lda模型将生成 k 主题的列表,然后告诉您哪些主题被分配给哪些主题以及它们各自分配给各个主题的概率。听起来你真正要做的就是执行文档/主题分类而不是单词/主题分类,如果是这种情况,则lda包不能满足您的需求。

如果你想要一个基于lda对象的真正脏的文档分类方法,我想你可以只返回分配给它的字数最多的主题名称每个文件,虽然我想象如果存在关系,你会遇到问题(关系的概率随着 k 的增加和文件数量的增加而增加)。

编辑:按要求快速而肮脏的方式:

sums <- fit$document_sums
sums <- t(sums)
sums <- as.data.frame(sums)
topics <- colnames(sums)[max.col(sums,ties.method="first")]
topics <- t(topics)
sums$topics <- topics