una suma matriz filas columnas r text-mining

suma de filas y columnas de una matriz en c++



Suma de fila para matriz de documento de término grande/simple_triplet_matrix ??{paquete tm} (3)

Así que tengo una matriz de documentos a largo plazo muy grande:

> class(ph.DTM) [1] "TermDocumentMatrix" "simple_triplet_matrix" > ph.DTM A term-document matrix (109996 terms, 262811 documents) Non-/sparse entries: 3705693/28904453063 Sparsity : 100% Maximal term length: 191 Weighting : term frequency (tf)

¿Cómo obtengo la rowSum (frecuencia) de cada término? Lo intenté:

> apply(ph.DTM, 1, sum) Error in vector(typeof(x$v), nr * nc) : vector size cannot be NA In addition: Warning message: In nr * nc : NAs produced by integer overflow

Obviamente, yo sé acerca de removeSparseTerms :

ph.DTM2 <- removeSparseTerms(ph.DTM, 0.99999)

Lo que reduce un poco el tamaño:

> ph.DTM2 A term-document matrix (28842 terms, 262811 documents) Non-/sparse entries: 3612620/7576382242 Sparsity : 100% Maximal term length: 24 Weighting : term frequency (tf)

Pero todavía no puedo aplicarle ninguna función relacionada con la matriz:

> as.matrix(ph.DTM2) Error in vector(typeof(x$v), nr * nc) : vector size cannot be NA In addition: Warning message: In nr * nc : NAs produced by integer overflow

¿Cómo puedo obtener una simple suma de filas en este objeto? ¡¡Gracias!!


Bien, después de un poco más de Google, encontré el paquete slam , que permite:

ph.DTM3 <- rollup(ph.DTM, 2, na.rm=TRUE, FUN = sum)

Que funciona


Como lo alude @badpanda en uno de los comentarios, slam ahora tiene las funciones row_sums y col_sums para arreglos dispersos:

slam::row_sums(dtm, na.rm = T) slam::col_sums(tdm, na.rm = T)


Yo creo que:

rowSums(as.matrix(ph.DTM))

Funcionaría igual de bien.