我是R和文本挖掘的初学者。我已经完成了LDA,现在我希望用LDAvis包可视化我的结果。我已经从github示例(https://ldavis.cpsievert.me/reviews/reviews.html)开始跟踪每个步骤,从可视化'章节。但是,我要么得到错误通知或空页。
我尝试了以下内容:
RedditResults <- list(phi = phi,
theta = theta,
doc.length = doc.length,
vocab = vocab,
term.frequency = term.frequency)
json <- createJSON(phi = RedditResults$phi,
theta = RedditResults$theta,
doc.length = RedditResults$doc.length,
vocab = RedditResults$vocab,
term.frequency = RedditResults$term.frequency)
serVis(json, out.dir = "vis", open.browser = FALSE)
然而,这给了我一个错误显示说:
Error in cat(list(...), file, sep, fill, labels, append) :
argument 1 (type 'closure') cannot be handled by 'cat'
我认为这可能发生了,因为&#39; json&#39;对象具有类&#39;功能&#39;而不是一个字符串,我读取该对象必须在其中执行serVis。因此,我尝试在使用serVis之前通过
转换它RedditResults <- sapply(RedditResults, toJSON)
导致以下错误:
Error in run(timeoutMs) :
Evaluation error: argument must be a character vector of length 1.
我觉得我在某个地方犯了一个非常明显的错误,但经过几天的反复试验后,我无法发现我应该做的不同。
对我来说最奇怪的是,有时它确实有效,但是当我尝试打开html文件时,我只看到一个空白页面。我尝试在多个浏览器中打开它以及打开这些浏览器来显示本地文件。我也尝试使用servr包打开它,但这给了我相同的结果,即错误通知(字符向量长度不等于1)或空页。
希望任何人都能发现我做错了什么。谢谢!
编辑:上面代码所基于的对象/代码:
方便了解:
我知道调用你的术语 - 文档矩阵“DTM”是没有意义的。同时命名您的文档 - 术语矩阵&#39; tdm&#39;,查看缩写。对不起。
phi <- as.matrix(posterior(fit3)$terms)
theta <- as.matrix(posterior(fit3)$topics)
dp <- dim(phi) # should be K x W
dt <- dim(theta) # should be D x K
D <- length(as.matrix(tdm3[, 1])) # number of documents (2812)
doc.length <- colSums(as.matrix(DTM)) #number of tokens in each document
N <- sum(doc.length) # total number of tokens in the data (54,136)
vocab <- colnames(phi)# all terms in the vocab
W <- length(vocab) # number of terms in the vocab (6470)
temp_frequency <- inspect(tdm3)
freq_matrix <- data.frame(ST = colnames(temp_frequency),
Freq = colSums(temp_frequency))
rm(temp_frequency)
term.frequency <- freq_matrix$Freq
doc.list <- as.list(reddit_data_textcleaned, "[[:space:]]+")
get.terms <- function(x) {
index <- match(x, vocab)
index <- index[!is.na(index)]
rbind(as.integer(index - 1), as.integer(rep(1, length(index))))
}
documents <- lapply(doc.list, get.terms)
我认为在创建“get.terms”中会出现问题。和&#39;文件&#39;对象,因为我不知道那里发生了什么。我根据我在这个平台上阅读的类似问题的答案使用了这些方法。此外,&#39; doc.list&#39;对象仍包含我在转换后从数据中删除的空文档&#39; reddit_data_textcleaned&#39;到&#39; tdm3&#39;。但是,上面的代码不适用于文档术语矩阵对象,因此我使用了“reddit_data_textcleaned&#39;而不是&#39; tdm3&#39;。我想我稍后会解决这个问题。