2012-07-16 23 views
7

Tôi có một termDocumentMatrix tạo bằng cách sử dụng gói tm trong R.R gói tm tạo ma trận của Nmost thuật ngữ thường xuyên

Tôi đang cố gắng để tạo ra một ma trận/dataframe đó có 50 thuật ngữ thường xuyên xảy ra nhất.

Khi tôi cố gắng chuyển đổi sang một ma trận Tôi nhận được lỗi này:

> ap.m <- as.matrix(mydata.dtm) 
Error: cannot allocate vector of size 2.0 Gb 

Vì vậy, tôi đã cố gắng chuyển sang ma trận thưa thớt sử dụng gói Matrix:

> A <- as(mydata.dtm, "sparseMatrix") 
Error in as(from, "CsparseMatrix") : 
    no method or default for coercing "TermDocumentMatrix" to "CsparseMatrix" 
> B <- Matrix(mydata.dtm, sparse = TRUE) 
Error in asMethod(object) : invalid class 'NA' to dup_mMatrix_as_geMatrix 

tôi đã cố gắng truy cập vào các phần khác nhau của tdm sử dụng:

> freqy1 <- data.frame(term1 = findFreqTerms(mydata.dtm, lowfreq=165)) 
> mydata.dtm[mydata.dtm$ Terms %in% freqy1$term1,] 
Error in seq_len(nr) : argument must be coercible to non-negative integer 

Dưới đây là một số thông tin khác:

> str(mydata.dtm) 
List of 6 
$ i  : int [1:430206] 377 468 725 3067 3906 4150 4393 5188 5793 6665 ... 
$ j  : int [1:430206] 1 1 1 1 1 1 1 1 1 1 ... 
$ v  : num [1:430206] 1 1 1 1 1 1 1 1 2 3 ... 
$ nrow : int 15643 
$ ncol : int 17207 
$ dimnames:List of 2 
    ..$ Terms: chr [1:15643] "000" "0mm" "100" "1000" ... 
    ..$ Docs : chr [1:17207] "1" "2" "3" "4" ... 
- attr(*, "class")= chr [1:2] "TermDocumentMatrix" "simple_triplet_matrix" 
- attr(*, "Weighting")= chr [1:2] "term frequency" "tf" 
> mydata.dtm 
A term-document matrix (15643 terms, 17207 documents) 

Non-/sparse entries: 430206/268738895 
Sparsity   : 100% 
Maximal term length: 54 
Weighting   : term frequency (tf) 

đầu ra lý tưởng của tôi là một cái gì đó như thế này:

term  frequency 
the   2123 
and   2095 
able   883 
...   ... 

Bất kỳ lời đề nghị?

Trả lời

9

Ma trận thuật ngữ tài liệu trong tm đã được tạo thành ma trận thưa thớt. Ở đây, mydata.tdm$imydata.tdm$j là các vectơ của các chỉ mục của ma trận và mydata.tdm$v là vectơ liên quan của các tần số. Vì vậy mà bạn có thể tạo ra một ma trận thưa thớt viết:

sparseMatrix(i=mydata.tdm$i, j=mydata.tdm$j, x=mydata.tdm$v) 

Sau đó, bạn có thể sử dụng rowSums và liên kết các hàng, bạn quan tâm, với các điều khoản, họ đại diện cho, với $Terms.

+0

HTH: term.freq <- rowSums (as.matrix (TDM)) term.freq <- tập hợp con (term.freq, term.freq> = 50) tdm_matrix <- as.matrix (TDM) tfMatrix <- tdm_matrix [tên (term.freq),] – aloplop85

Các vấn đề liên quan