2013-06-02 66 views
3

基於R TM長期頻率,我有一個術語文檔矩陣:[R TM:巨大DocumentTermMatrix,如何設置綁定到提取新的DTM

文檔長期矩陣(16977項,29414個文檔)

非/稀疏條目:499006478分之355000 稀疏:100% 最大術語長度:7 加權:術語頻率(TF)

對於進一步的分析,練到限制項數只有2425

如何通過包含freq超過20以上的術語來生成新的dtm?

由於矩陣很大,所以傳統方法as.matrix無法應用。

謝謝!

回答

4

像這樣的東西可能會工作...使用slam包中的函數將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

嘿,它確實工作,對機制很感興趣,爲什麼矩陣計算不會完成這項工作,用盡內存,但在三重矩陣中它可以?再次感謝您採納您的答案。 – YangJ

+0

稀疏矩陣格式(如簡單三元組)不存儲零。它只是存儲非零值和它們的索引(row num,col num),所以如果你想要「重新充氣」矩陣 – Ben

相關問題