在R中使用LDA对新文本进行分类

4

我第一次尝试使用R进行主题建模。因此,这可能是一个非常愚蠢的问题,但我被卡住了,谷歌也没有给出明确的答案。

在给定文本语料库的情况下,我使用LDA函数识别语料库中的不同主题。一旦模型已经拟合,如何将该模型应用于新批处理的文档,以将它们分类为已发现的主题之一?

示例代码:

data("AssociatedPress", package = "topicmodels")

n <- nrow(AssociatedPress)
train_data <- sample(1:n,0.75*n,replace = FALSE)
AssociatedPress_train <- AssociatedPress[(train_data),]
AssociatedPress_test <- AssociatedPress[!(train_data),]

ap_lda <- LDA(AssociatedPress_train, k = 5, control = list(seed = 1234))

现在,我可以使用已配备的模型ap_lda对AssociatedPress_test中的文档进行分类吗?如果可以,应该如何操作?如果不行,那么创建这样未来分类模型的最佳方法是什么?
1个回答

5
您可以使用topicmodels::posterior()函数来找到AssociatedPress_test对象中每个新文档的“顶级主题”。以下是一个代码片段,展示了如何实现此功能。
# code provided in quesiton------------------------------------------
library(tm)
data("AssociatedPress", package = "topicmodels")

n <- nrow(AssociatedPress)
train_data <- sample(1:n, 0.75*n, replace = FALSE)
AssociatedPress_train <- AssociatedPress[ train_data, ]
AssociatedPress_test  <- AssociatedPress[-train_data, ]

ap_lda <- topicmodels::LDA(AssociatedPress_train, k = 5, 
                           control = list(seed = 1234))
#--------------------------------------------------------------------

#posterior probabilities of topics for each document & terms
post_probs <- topicmodels::posterior(ap_lda, AssociatedPress_test)

#classify documents by finding topic with max prob per doc
top_topic_per_doc <- apply(post$topics, 1, which.max)

head(top_topic_per_doc)

#OUTPUT
# [1] 4 2 4 2 2 2

谢谢。我应该更仔细地阅读文档。 - Abhishek Sourabh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接