J'utilise le TM suivant + Code RWeka pour extraire dans les textes ngrams les plus fréquents:façon Performant pour extraire les plus fréquentes ngrams utilisant R
library("RWeka")
library("tm")
text <- c('I am good person','I am bad person','You are great','You are more great','todo learn english','He is ok')
BigramTokenizer <- function(x) NGramTokenizer(x,Weka_control(min=2,max=2))
corpus <- Corpus(VectorSource(text))
tdm <- TermDocumentMatrix(corpus,control = list(tokenize = BigramTokenizer))
DF <- data.frame(inspect(tdm))
DF$sums <- DF$X1+DF$X2+DF$X3+DF$X4+DF$X5+DF$X6
MostFreqNgrams <- rownames(head(DF[with(DF,order(-sums)),]))
Il fonctionne bien, mais si les données est bien plus ? Y a-t-il un moyen de calcul plus efficace? De plus, si les variables sont plus (ex: 100), comment puis-je écrire la ligne de code DF$sums
? Bien sûr il y a quelque chose de plus élégant que le followin:
DF$sums <- DF$X1+DF$X2+DF$X3+DF$X4+DF$X5+DF$X6+...+DF$X99+DF$X100
Merci
EDIT: Je me demande s'il y a un moyen d'extraire les ngrams les plus fréquents de tdm
TermDocumentMatrix et après créer une trame de données avec les valeurs. Ce que je fais est de créer un dataframe avec tous les ngrams et après prendre les valeurs les plus fréquentes qui ne semblent pas être le meilleur choix.
Vous pouvez utiliser 'Reduce ('+', DF)' ou 'rowSums (DF)' – akrun
Relié, éventuellement dupliqué: [Extraction NGram efficace avec CPU et mémoire avec R] (http://stackoverflow.com/questions/31424687/cpu-et-memory-efficient-ngram-extraction-avec-r) – smci