【发布时间】:2023-01-09 02:53:46
【问题描述】:
我尝试在 R 中制作一个词云,但我的数据集太大(其中有 500.000 条推文) 但我总是得到运行线的错误消息
m <- as.matrix(tdm)
“错误:无法分配大小为 539.7 Gb 的向量”
在 R 中是否有更有效的方法来创建 Wordcloud?
到目前为止,这是我的代码:
corpus <- Corpus(VectorSource(response$Tweet))
##cleaning Data
corpus <- tm_map(corpus,content_transformer(tolower))
corpus <- tm_map(corpus, stripWhitespace)
corpus <- tm_map(corpus, removeWords, stopwords("english"))
corpus <- tm_map(corpus, removePunctuation)
tdm <- TermDocumentMatrix(corpus)
m <- as.matrix(tdm)
v <- sort(rowSums(m),decreasing = TRUE)
d <- data.frame(word = names(v), freq=v)
wordcloud(d$word, d$freq, random.order=FALSE, min.freq = 12, rot.per=0.35,max.words = 150,colors = brewer.pal(8, "Dark2"))
【问题讨论】:
-
您的数据框
d有多大?您是否尝试过减小数据框的大小(例如head(d, n = 150)),而不是使用max.words参数? -
@jrcalabrese 在我的例子中,我没有达到创建“d”的程度。它无法创建我的 TermDocumentMatrix 的“m”。我的语料库有 482794 个元素和 85.4 MB 我不是 100% 确定,但我想这一步很重要,因为矩阵是用词频创建的,如果我只处理头部数据,结果将不一样。
-
啊好的,那么看起来你可能需要使用额外的包(可能是
slam或Matrix); this person 和this person 有同样的问题。 -
@jrcalabrese 非常感谢你向我展示了正确的方向。我不知何故遇到了问题,因为不知何故使用了 Matrix 并且我没有成功使用 slam 但是通过继续搜索这两个包的答案我遇到了稀疏性的主要问题。我只需要添加 tdms <- removeSparseTerms(tdm, 0.99) 来减少稀疏度,我就能够创建词云
标签: r memory-management text-mining word-cloud