我正在尝试使用 tm
对 R 中的大数据进行文本挖掘.
我经常遇到内存问题(例如 can not allocation vector of size....
)并使用已建立的方法来解决这些问题,例如
memory.limit()
达到最大值 gc()
但是,当尝试运行
Corpus
时在包含一百万个左右文本字段的向量上,我遇到了与平常略有不同的内存错误,我不确定如何解决该问题。错误是:> ds <- Corpus(DataframeSource(dfs))
Error: memory exhausted (limit reached?)
我可以(也应该)运行
Corpus
在来自该源数据帧的行块上递增,然后组合结果?有没有更有效的方法来运行它?会产生这个错误的数据大小取决于运行它的计算机,但是如果你拿内置的
crude
数据集并复制文档直到它足够大,然后您可以复制错误。更新
我一直在尝试合并较小的语料库,即
test1 <- dfs[1:10000,]
test2 <- dfs[10001:20000,]
ds.1 <- Corpus(DataframeSource(test1))
ds.2 <- Corpus(DataframeSource(test2))
虽然我没有成功,但我确实发现了
tm_combine
这是 supposed to solve this exact problem .唯一的问题是,出于某种原因,我的 R 3.1.1 的 64 位版本带有最新版本的 tm
找不到函数 tm_combine
.也许它出于某种原因从包中删除了?我正在调查...> require(tm)
> ds.12 <- tm_combine(ds.1,ds.2)
Error: could not find function "tm_combine"
最佳答案
不知道是不是tm_combine
已被弃用或为什么在 tm
中找不到它命名空间,但我确实通过使用 Corpus
找到了解决方案在较小的数据帧块上然后组合它们。
This StackOverflow 帖子有一个简单的方法来做到这一点,而无需 tm_combine
:
test1 <- dfs[1:100000,]
test2 <- dfs[100001:200000,]
ds.1 <- Corpus(DataframeSource(test1))
ds.2 <- Corpus(DataframeSource(test2))
#ds.12 <- tm_combine(ds.1,ds.2) ##Error: could not find function "tm_combine"
ds.12 <- c(ds.1,ds.2)
这给了你:
ds.12
<<VCorpus (documents: 200000, metadata (corpus/indexed): 0/0)>>
很抱歉在问之前没有自己弄清楚这一点。我尝试了其他组合对象的方法,但失败了。
关于r - 在 R 中使用 tm 的语料库功能处理大数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25533594/