我正在按照《R中的文本挖掘:一种整洁的方法》一书第6章中介绍的步骤进行操作。请参阅:https://www.tidytextmining.com/topicmodeling.html
#import libraries
library(topicmodels)
library(tidytext)
#access dataset
data("AssociatedPress")
# set a seed so that the output of the model is predictable
ap_lda <- LDA(AssociatedPress, k = 2, control = list(seed = 1234))
#tidy model object
ap_topics <- tidy(ap_lda, matrix = "beta")
在终端中给我以下错误:
Error: No tidy method for objects of class LDA_VEM
与此同时,我应该得到的是:
## # A tibble: 20,946 x 3
## topic term beta
## <int> <chr> <dbl>
## 1 1 aaron 1.69e-12
## 2 2 aaron 3.90e- 5
## 3 1 abandon 2.65e- 5
## 4 2 abandon 3.99e- 5
## 5 1 abandoned 1.39e- 4
## 6 2 abandoned 5.88e- 5
## 7 1 abandoning 2.45e-33
## 8 2 abandoning 2.34e- 5
## 9 1 abbott 2.13e- 6
## 10 2 abbott 2.97e- 5
## # ... with 20,936 more rows
为什么我看到的是这个错误而不是期望的结果?
你不是第一个遇到这个问题的人,但它很难重现。事实上,我个人从未能够重现这个错误。然而,我知道这是一个真正的问题,因为。。。如果你想看到其他人也在挣扎,请在这里或这里或这里查看。
据我所知,这很可能是topicmodels包中的一个错误,与S4注册有关。通过不在会话之间保存.RData
,并且在打开工作时始终从新的R会话开始,可以避免遇到这种情况。
您需要首先整理AssociatedPress数据。像这样:
#if(!require("topicmodels")) install.packages("topicmodels")
#install.packages("topicmodels")
library(topicmodels)
data("AssociatedPress",package="topicmodels")
AssociatedPress
#Getting the Terms
terms<-Terms(AssociatedPress)
head(terms)
#tidyig with the tidy function
ap_tidy<-tidy(AssociatedPress)
然后:
ap_lda<-LDA(AssociatedPress,k=2,control=list(seed=1234))
ap_topics<-tidy(ap_lda,matrix="beta")
head(ap_topics)
哪个给出:
topic term beta
<int> <chr> <dbl>
1 1 aaron 1.69e-12
2 2 aaron 3.90e- 5
3 1 abandon 2.65e- 5
4 2 abandon 3.99e- 5
5 1 abandoned 1.39e- 4
6 2 abandoned 5.88e- 5