처리하고자하는 6 백만 개의 메시지 6GB 데이터 세트 - 내 목표는 내 데이터 집합에 대한 문서 용어 매트릭스를 만드는 것이지만 일부 사전 처리 (HTML을 제거해야합니다. 태그, 형태소 분석, 중지 단어 제거 등)을 먼저 수행하십시오.큰 텍스트 파일 처리 R
library(data.table)
library(tm)
wordStem2 <- function(strings){
sapply(lapply(strsplit(stripWhitespace(strings), " "), wordStem), function(x) paste(x, collapse=" "))
}
load("data/train.RData")
sampletrainDT <- as.data.table(train)
rm(train)
setkey(sampletrainDT, Id)
object.size(sampletrainDT) # 5,632,195,744 bytes
gc()
sampletrainDT[, Body := tolower(Body)]
object.size(sampletrainDT) # 5,631,997,712 bytes, but rsession usage is at 12 GB. gc doesn't help.
gc()
sampletrainDT[, Body := gsub("<(.|\n)*?>", " ", Body)] # remove HTML tags
sampletrainDT[, Body := gsub("\n", " ", Body)] # remove \n
sampletrainDT[, Body := removePunctuation(Body)]
sampletrainDT[, Body := removeNumbers(Body)]
sampletrainDT[, Body := removeWords(Body, stopwords("english"))]
sampletrainDT[, Body := stripWhitespace(Body)]
sampletrainDT[, Body := wordStem2(Body)]
LS를 각 라인에서 :
이ls()
[1] "sampletrainDT" "wordStem2"
sampletrainDT
의 각 행은 하나의 메시지이며, 주요 열이 Body
입니다 여기
내가 현재 모두이 일을 시도하고 방법이다. 다른 사람은 docid 등과 같은 메타 데이터를 포함합니다.
데이터의 하위 집합 (10 %)으로 작업 할 때 꽤 빨리 실행되지만 (10 %) 전체 데이터 집합을 사용하면 완료되지 않습니다. 이 줄에 RAM이 없기 때문에 sampletrainDT[, Body := gsub("<(.|\n)*?>", " ", Body)] # remove HTML tags
. 줄 사이에 gc()를 실행해도 상황이 개선되지 않는 것 같습니다.
나는 인터넷 검색을 며칠 동안 보냈지 만 아직 좋은 해결책을 찾을 수 없었으므로이 분야에 많은 경험이있는 사람들의 의견을 듣고 싶습니다. - 파이썬 (사용하기 어려운 한 번, 과정에서 덩어리
- FF 또는 bigmemory : 여기에 내가 고려하고 몇 가지 옵션이 있습니다 ?) TM 라이브러리에서
- PCorpus는
- 지도-감소 - 메모리 친화적 인 방법으로 로컬 그러나 희망 할
- 는 R은 이것을위한 도구가 아닙니다?
나는 EC2에서 큰 기계를 사용하는 대신 하나의 기계 (16GB 노트북)에서 실행하고 싶습니다. 6GB의 데이터가 제대로 수행되면 극복 할 수없는 것처럼 보입니다!
나는 당신이 모든 RAM을 필요로한다는 것을 매우 이상하게 여기고 있습니다 ... 나는 매일 5/10 수백만 행의 16G 노트북 파일을 처리합니다. 파일 스냅을 보낼 수 있습니까? – statquant
@statquant 내 데이터 프레임의 처음 100 행. https://dl.dropboxusercontent.com/u/25747565/temp.RData – mchangun
또는 다른 언어/스크립트를 사용하여 데이터를 정리 한 다음 분석을 위해 R을 사용할 수 있습니다. – Fernando