web-dev-qa-db-ja.com

大きな用語の行の合計-ドキュメントマトリックス/ simple_triplet_matrix ?? {tmパッケージ}

したがって、非常に大きな用語ドキュメントマトリックスがあります。

> 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)

各項のrowSum(頻度)を取得するにはどうすればよいですか?私は試した:

> 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

明らかに、私はremoveSparseTermsについて知っています:

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

これはサイズを少し縮小します:

> 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)

しかし、それでも行列関連の関数を適用することはできません。

> 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

このオブジェクトの単純な行の合計を取得するにはどうすればよいですか??ありがとう!!

17
Ray

OK、もう少しグーグルした後、私はslamパッケージに出くわしました。

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

どちらが機能しますか。

22
Ray

コメントの1つで@badpandaがほのめかしているように、slamにはrow_sumsおよびcol_sumsスパース配列の関数:

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

おもう:

 rowSums(as.matrix(ph.DTM))

同様に機能します。

3
Tyler Rinker