Ngrams를 사용하는 텍스트 예측 모델을 만들고 있습니다. DTM으로 변환하는 텍스트 문서 (트윗)가 있습니다. DTM은 7.3Mb입니다. 다음 코드를 사용하여 Ngram으로 변환하고 싶습니다.DTM에서 ngram을 생성하는 것이 왜 많은 메모리를 사용합니까?
createNgramTable <- function(x)
{
m <- matrix(nrow = x$ncol, ncol = 2)
m[,1] <- x$dimnames$Terms
m[,2] <- colSums(as.matrix(x))
colnames(m) <- c("ngram", "freq")
m <- m[order(m[,2], decreasing=TRUE),]
return(m)
}
이 코드는 1 열의 된 용어 및 I는 다음 좋은 측정을 위해 정렬 컬럼 2로 발생 횟수와 행렬을 생성한다. 작은 데이터 세트에서 작동하지만 위에 언급 한 DTM에서 실행하면 실패합니다. R은이 기능을 실행해야하는 8Gb 이상의 RAM을 할당하려고합니다. 내가 뭘하고있는 건 그런 추억의 돼지 며 어떻게 그 일을 피할 수 있니? 여기
는 DTM에 대한 str()
입니다 :
List of 6
$ i : int [1:226963] 1 1 1 2 2 2 2 2 2 2 ...
$ j : int [1:226963] 9142 22286 25985 5235 6822 8736 10336 15883
20888 22652 ...
$ v : num [1:226963] 1 1 1 1 1 1 2 1 1 1 ...
$ nrow : int 23601
$ ncol : int 44619
$ dimnames:List of 2
..$ Docs : chr [1:23601] "1" "2" "3" "4" ...
..$ Terms: chr [1:44619] "''iran" "''true" "''when" "'-)" ...
- attr(*, "class")= chr [1:2] "DocumentTermMatrix" "simple_triplet_matrix"
- attr(*, "weighting")= chr [1:2] "term frequency" "tf"
DTM에서 colSums를 수행하는 대신 모든 Docs에서 발생 횟수의 합계를 원할 경우 모든 Docs로 구성된 코퍼스에서 DTM을 만들 수 있습니까? – Lamia
'as.matrix (x)'는 최소 4GB 인 23601x44619의 행렬을 만듭니다. – HubertL