2017-07-18 2 views
2

Voici le code que j'utilise pour créer des bi-grammes avec liste de fréquences:R: Obtention unique terme Fréquences au lieu de bigrammes

library(tm) 
library(RWeka) 
#data <- myData[,2] 


tdm.generate <- function(string, ng){ 

    # tutorial on rweka - http://tm.r-forge.r-project.org/faq.html 

    corpus <- Corpus(VectorSource(string)) # create corpus for TM processing 
    corpus <- tm_map(corpus, content_transformer(tolower)) 
    corpus <- tm_map(corpus, removeNumbers) 
    corpus <- tm_map(corpus, removePunctuation) 
    corpus <- tm_map(corpus, stripWhitespace) 
    # corpus <- tm_map(corpus, removeWords, stopwords("english")) 
    options(mc.cores=1) # http://stackoverflow.com/questions/17703553/bigrams-instead-of-single-words-in-termdocument-matrix-using-r-and-rweka/20251039#20251039 
    BigramTokenizer <- function(x) NGramTokenizer(x, Weka_control(min = ng, max = ng)) # create n-grams 
    tdm <- TermDocumentMatrix(corpus, control = list(tokenize = BigramTokenizer)) # create tdm from n-grams 
    tdm 
} 



source("GenerateTDM.R") # generatetdm function in appendix 
tdm <- tdm.generate("The book The book The greatest The book",2) 

tdm.matrix <- as.matrix(tdm) 
topwords <- rowSums(tdm.matrix) 
topwords <- as.numeric(topwords) 
hist(topwords, breaks = 10) 


tdm.matrix <- as.matrix(tdm) 
topwords <- rowSums(tdm.matrix) 
head(sort(topwords, decreasing = TRUE)) 

Le résultat du code ci-dessus est:

the  book greatest 
4  3  1 

lieu , Je cherche le résultat où les bi-grammes sont montrés comme:

"the book" "book the" 
    3   2 

Ce qui doit être changé dans le code ci-dessus pour obtenir le sortie comme ci-dessus?

Répondre

1

Vous devez utiliser VCorpus au lieu de Corpus, j'avais le même problème que vous pourriez vérifier plus de détails here