Я пытаюсь выполнять анализ больших данных в R с помощью tm
.
Я часто сталкиваюсь с проблемами памяти (например, can not allocation vector of size....
) и использую установленные методы устранения этих проблем, такие как
- используя 64-битный R
- пробовать разные ОС (Windows, Linux, Solaris и т.д.)
- установка
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
, который должен решать именно эту проблему. проблема. Единственная загвоздка в том, что по какой-то причине моя 64-битная сборка R 3.1.1 с новейшей версией tm
не может найти функцию tm_combine
. Может быть, он был удален из пакета по какой-то причине? Я расследую...
> require(tm)
> ds.12 <- tm_combine(ds.1,ds.2)
Error: could not find function "tm_combine"
Corpus
в среде. - person Hack-R   schedule 27.08.2014