【问题标题】:R LDAvis defining documents for each topicR LDAvis 为每个主题定义文档
【发布时间】:2015-08-24 13:58:48
【问题描述】:

这是一个关于 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)

如果这个问题宽泛而冗长,我深表歉意,但如果有人可以通过使用我在链接中给出的示例来回答它,这将有很大帮助。提前致谢。

【问题讨论】:

  • 您是否希望在 HTML 界面之外查看它们?
  • 是的,如果我可以在 R 中查看它作为主题中的文档。
  • 所以 topic7 会过滤掉文档 [7] ....funny..... jokes...[1009] ......woody....hilarious 等等

标签: r text-mining lda topic-modeling


【解决方案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

【讨论】:

  • 我想要做的是将主题与另一个变量进行比较,所以如果它是一个单词/主题分类就可以了。我的数据集是留下 cmets 的手机/手机调查数据,它们通常只有几句话,我想将其与 1-5 星评级进行比较,这是总体满意度。所以我知道主题是基于 LDAvis html 中使用的单词,但是如何提取该主题并将其与变量进行比较。这可能吗?感谢您提前提供帮助。
  • @Ace,您需要主题字数统计吗?概率?您需要长格式(行 = 文档,列 = 主题)还是宽格式(正好相反)?
  • 我认为这是描述它的最佳方式,如果我有两列的 csv 文件,一列有电影评论,另一列有 1-5 星评级。我想知道有多少颗星,或者如果可能的话,它会根据主题获得 1 颗星的概率。就像 topic7 是喜剧一样,如果它是喜剧,有多少人会获得 1 星评级(或者可能显示这是一个图表)。就主题字数而言,我知道fit$topics 会给我每个文档的字数。再次感谢您的帮助
  • @Ace,听起来您仍然希望将电影评论分类为单个主题(类型),而不是分析评论中单个词的词/主题分类。为此,您需要按照我在原始答案中的说明执行文档分类。
  • 您建议对评论部分的调查数据进行文档分类的最佳方法是什么。最好使用 R.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-24
  • 1970-01-01
  • 1970-01-01
  • 2020-09-22
  • 1970-01-01
  • 2016-06-20
相关资源
最近更新 更多