2014-06-14 60 views
6

使用TM封裝在RI創建文檔,期限矩陣:過濾行/ R中的文件,術語矩陣文件

dtm <- DocumentTermMatrix(cor, control = list(dictionary=c("someTerm"))) 

偉馳的結果是這樣的:

A document-term matrix (291 documents, 1 terms) 

Non-/sparse entries: 48/243 
Sparsity   : 84% 
Maximal term length: 8 
Weighting   : term frequency (tf) 

        Terms 
Docs    someTerm 
doc1      0 
doc2      0 
doc3      7 
doc4      22 
doc5      0 

現在我想根據文檔中someTerm的出現次數過濾這個Document-Term-Matrix。例如。只濾出someTerm至少出現一次的文檔。即doc3和doc4在這裏。

我該如何做到這一點?

回答

6

這與您將如何子集規則R矩陣非常相似。例如,爲了創建從例如路透社數據集僅行,其中「會」出現的術語一次以上文檔詞矩陣:

reut21578 <- system.file("texts", "crude", package = "tm") 

reuters <- VCorpus(DirSource(reut21578), 
    readerControl = list(reader = readReut21578XMLasPlain)) 

dtm <- DocumentTermMatrix(reuters) 
v <- as.vector(dtm[,"would"]>1) 
dtm2 <- dtm[v, ] 

> inspect(dtm2[, "would"]) 
A document-term matrix (3 documents, 1 terms) 

Non-/sparse entries: 3/0 
Sparsity   : 0% 
Maximal term length: 5 
Weighting   : term frequency (tf) 

    Terms 
Docs would 
    246  2 
    489  2 
    502  2 

tm文檔術語基質從包slam所以一個簡單的三重態基質文檔有助於理解如何操作dtms。

+0

這完美地解決了很多 - 非常感謝!對大滿貫賽也是一個很好的暗示。 – user3316599

1

或者,您可以使用removeSparseTerms函數刪除空元素(查看文檔here)。

dtm <- removeSparseTerms(dtm, 0.1) # This makes a matrix that is 10% empty space, maximum