2013-06-02 6 views
3

를 추출 할 의무 용어 주파수를 설정하는 방법을, 나는 용어 ​​문서 행렬을 가지고있다 :R의 TM : 거대한 DocumentTermMatrix는 R의 TM를 사용하여 새 DTM

문서 기간 매트릭스 (16,977 용어, 29414 개 문서)

비/부족한 항목 : 499,006,478분의 355,000 희소성 100 % 최대한 학기 길이 : 7 가중 (TF) 추가 분석

는 I에서만 2425.

이라는 용어 개수를 제한 할 수있어 장기 주파수

예를 들어 주파수가 20 이상인 용어를 포함하여 새로운 dtm을 생성하려면 어떻게해야합니까?

매트릭스가 크기 때문에 기존의 as.matrix 메소드를 적용 할 수 없습니다.

감사합니다.

답변

4

이와 비슷한 기능이 작동 할 수 있습니다 ... DTM을 슬램 패키지의 함수를 사용하여 간단한 트리플렛 행렬로 인덱싱하면 밀도가있는 행렬로 변환하지 않아도됩니다.

library(slam) 
library(tm) 
data(crude) 
dtm1 <- DocumentTermMatrix(crude) 


# Find the total occurances of each word in all docs 
colTotals <- col_sums(dtm1) 

# keep only words that occur >20 times in all docs 
dtm2 <- dtm1[,which(colTotals > 20)] 

> dtm1 
A document-term matrix (20 documents, 1266 terms) 

Non-/sparse entries: 2255/23065 
Sparsity   : 91% 
Maximal term length: 17 
Weighting   : term frequency (tf) 

> dtm2 
A document-term matrix (20 documents, 12 terms) 

Non-/sparse entries: 174/66 
Sparsity   : 28% 
Maximal term length: 6 
Weighting   : term frequency (tf) 

데이터에서 작동하고 질문에 답변합니까?

+0

이봐 요, 메커니즘에서 꽤 흥미 롭습니다. 매트릭스 계산이 작업을 수행하지 않고 mem가 부족한 이유는 무엇입니까?하지만 삼중 항 행렬에서는 가능합니까? 다시 한 번 감사의 말씀을드립니다. – YangJ

+0

스파 스 매트릭스 형식 (간단한 트리플릿과 같은)에는 0이 저장되지 않습니다. 0이 아닌 값과 그 인덱스 (행 num, col num)를 저장하므로 원한다면 매트릭스를 다시 팽창시킬 수 있습니다. – Ben