2014-06-14 17 views
6

Usando il TM-pacchetto RI creare un documento-Term-Matrix:Filtrare le righe/documenti dal documento-Term-Matrix in R

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

whichs risultati in qualcosa di simile:

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 

Ora desidero filtrare questo documento-Term-Matrix in base al numero di occorrenze di alcuni TERM nei documenti. Per esempio. filtra solo i documenti in cui alcuniTerm appare almeno una volta. Cioè doc3 e doc4 qui.

Come posso ottenere questo risultato?

risposta

6

È molto simile a come si sommerebbe una matrice R normale. Ad esempio, per creare una matrice termine documento dall'esempio Reuters set di dati con solo le righe in cui il termine appare "sarebbe" più di una volta:

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 

Una matrice tm termine documento è una semplice matrice tripletta dalla confezione slam così la La documentazione slam aiuta a capire come manipolare i dtms.

+0

Questo lo risolve perfettamente - molte grazie! Anche un buon suggerimento per il pacchetto di slam. – user3316599

1

In alternativa, è possibile utilizzare la funzione removeSparseTerms, che rimuove gli elementi vuoti (consultare la documentazione here).

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