在 R 中使用 LDA 对新文本进行分类
Classifying new text using LDA in R
我第一次尝试使用 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 中的文档进行分类吗?如果是,如何?如果不是,那么为这种未来分类创建模型的最佳方法是什么?
您可以使用 topicmodels::posterior()
函数来查找 AssociatedPress_test
对象中每个新文档的 "top topic"。下面是一个显示如何完成此操作的片段。
# 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
我第一次尝试使用 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 中的文档进行分类吗?如果是,如何?如果不是,那么为这种未来分类创建模型的最佳方法是什么?
您可以使用 topicmodels::posterior()
函数来查找 AssociatedPress_test
对象中每个新文档的 "top topic"。下面是一个显示如何完成此操作的片段。
# 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