У меня есть база данных SQL с 7 миллионами + записей, каждая запись содержит некоторый текст. Внутри каждой записи я хочу выполнить анализ текста, скажем, подсчет вхождения конкретных слов. Я пробовал функцию R tokenize
в пакете openNLP
, который отлично подходит для небольших файлов, но 7 миллионов записей * между 1-100 словами на запись становятся слишком большими для R, чтобы удерживать их в data.frame
. Я думал об использовании пакетов R bigmemory
или ff
или даже пакета mapReduce
. У вас есть предпочтительный подход или пакет для такого анализа?Каков самый быстрый способ подсчета слов в большом наборе данных с использованием R?
ответ
Возможно, подойдите к нему параллельно. Я использовал parLapply
b/c. Я считаю, что он работает на всех трех ОС.
wc <- function(x) length(unlist(strsplit(x, "\\s+")))
wordcols <- rep("I like icecream alot.", 100000)
library(parallel)
cl <- makeCluster(mc <- getOption("cl.cores", detectCores()))
clusterExport(cl=cl, varlist=c("wc", "wordcols"), envir=environment())
output <- parLapply(cl, wordcols, function(x) {
wc(x)
}
)
stopCluster(cl)
sum(unlist(output))
Почему параллель? Это очень быстро, без параллелизма. 'system.time (o <- sapply (strsplit (wordcols," [] + "), length))' занимает 0,45 секунды на моем ноутбуке. – Arun
На самом деле я хочу рассказать о наличии конкретных слов (обновил мой вопрос). Так что, не нужно ли «wordcols» хранить весь набор данных перед тем, как применить свой метод (что очень интересно, кстати)? Я могу хранить данные в SQL достаточно легко, но чтение его в R через RODBC (что я сейчас делаю) ломается. – ilanman
На стороне SQL можно извлечь и для каждой записи, на len
, а затем применить replace(" yourWord ","")
(с фланговыми пространствами ...) к нему, вычислить снова общую длину строки, а затем взять разницу между этими двумя , Это должно делать свое дело. Мои навыки SQL не так хорошо, что я мог бы здесь легко представить пример, извините за это ...
- 1. Самый быстрый способ удалить дубликаты в большом списке слов?
- 2. Каков самый быстрый способ обновления набора данных в R?
- 3. Каков самый быстрый способ получить частоту фактора в R?
- 4. Самый быстрый способ подсчета ALAssetLibrary?
- 5. Каков самый быстрый способ предварительной обработки данных?
- 6. Каков самый быстрый способ подсчета количества строк в mySQL
- 7. Каков самый быстрый способ подсчета строк в большой строке .NET?
- 8. Каков самый быстрый способ перефразировать?
- 9. Каков самый быстрый способ подсчета строк и слов в текстовом файле в ANSI C?
- 10. Самый быстрый способ подсчета элементов, соответствующих предикату
- 11. Самый быстрый способ подсчета строк в файле
- 12. Каков самый быстрый способ извлечь миниатюру изображения?
- 13. MySQL самый быстрый способ подсчета тысяч строк
- 14. Самый быстрый способ подсчета списка слов в статье с использованием python
- 15. Каков наилучший способ подсчета слов в C?
- 16. Самый быстрый способ найти дублирующее число в большом списке
- 17. Каков самый быстрый способ чтения в большом файле данных текстовых столбцов?
- 18. Каков самый быстрый способ слияния/объединения data.frames в R?
- 19. Каков самый быстрый способ выполнить несколько логических сравнений в R?
- 20. PHP Какой самый быстрый способ подсчета строк?
- 21. Самый быстрый способ подсчета числа вхождений строки
- 22. Каков самый быстрый способ сравнить начало строки?
- 23. Самый быстрый способ подсчета пробела строки
- 24. Каков самый быстрый способ доставки двоичных данных в браузер?
- 25. Java: Каков самый быстрый способ ввода полей с использованием отражения?
- 26. Каков самый быстрый способ поиска в сети?
- 27. Самый быстрый способ сделать подмножество в R
- 28. Функция R diff на большом наборе данных
- 29. Каков самый быстрый способ сравнить патчи массива?
- 30. Самый быстрый способ преобразования данных в список списков в R
подсчитайте количество пробелов + 1? Вероятно, вы могли бы использовать некоторые векторизованные операции, такие как 'gsub', чтобы заменить весь вектор символов на« ", кроме пробелов, а затем подсчитывать с помощью' nchar'? Конечно, это всего лишь метод. Интересно, ваша проблема - это метод или загрузка его в R ... – Arun
Вам нужно просто прочитать весь комплект данных? Почему бы не использовать 'strsplit (...," ")' для каждой отдельной записи? –
@Arun - На самом деле я хочу посчитать наличие определенных слов, а не просто подсчитать количество слов. Обновлен мой вопрос. – ilanman