【问题标题】:Predicting LDA topics for new data预测新数据的 LDA 主题
【发布时间】:2013-04-13 11:10:28
【问题描述】:

看起来这个问题可能已经被问过几次了(hereand here),但还没有回答。我希望这是由于之前提出的问题含糊不清,正如 cmets 所指出的那样。如果我再次提出类似问题而违反协议,我深表歉意,我只是假设这些问题不会有任何新答案。

无论如何,我是潜在狄利克雷分配的新手,并且正在探索将其用作文本数据降维的方法。最终,我想从一个非常大的词袋中提取一组较小的主题,并使用这些主题作为模型中的几个变量来构建一个分类模型。我已经成功地在训练集上运行 LDA,但我遇到的问题是能够预测哪些相同的主题出现在其他一些测试数据集中。我现在正在使用 R 的 topicmodels 包,但如果有其他方法可以使用其他包,我也对此持开放态度。

这是我正在尝试做的一个示例:

library(topicmodels)
data(AssociatedPress)

train <- AssociatedPress[1:100]
test <- AssociatedPress[101:150]

train.lda <- LDA(train,5)
topics(train.lda)

#how can I predict the most likely topic(s) from "train.lda" for each document in "test"?

【问题讨论】:

标签: r lda topic-modeling


【解决方案1】:

在 Ben 出众的文档阅读能力的帮助下,我相信使用后验 () 函数可以做到这一点。

library(topicmodels)
data(AssociatedPress)

train <- AssociatedPress[1:100]
test <- AssociatedPress[101:150]

train.lda <- LDA(train,5)
(train.topics <- topics(train.lda))
#  [1] 4 5 5 1 2 3 1 2 1 2 1 3 2 3 3 2 2 5 3 4 5 3 1 2 3 1 4 4 2 5 3 2 4 5 1 5 4 3 1 3 4 3 2 1 4 2 4 3 1 2 4 3 1 1 4 4 5
# [58] 3 5 3 3 5 3 2 3 4 4 3 4 5 1 2 3 4 3 5 5 3 1 2 5 5 3 1 4 2 3 1 3 2 5 4 5 5 1 1 1 4 4 3

test.topics <- posterior(train.lda,test)
(test.topics <- apply(test.topics$topics, 1, which.max))
#  [1] 3 5 5 5 2 4 5 4 2 2 3 1 3 3 2 4 3 1 5 3 5 3 1 2 2 3 4 1 2 2 4 4 3 3 5 5 5 2 2 5 2 3 2 3 3 5 5 1 2 2

【讨论】:

  • 干得好! test.topics[[2]] 是矩阵,主题为列,新文档为行,单元格值为后验概率。
  • 行 train
猜你喜欢
  • 2015-12-26
  • 2012-09-13
  • 2019-09-25
  • 2012-05-16
  • 1970-01-01
  • 2017-05-07
  • 2014-07-16
  • 2013-04-22
  • 2012-06-25
相关资源
最近更新 更多