bigrammes au lieu de mots simples dans la matrice de document en utilisant R et Rweka
J'ai trouvé un moyen d'utiliser bigrams au lieu de simples pions dans un terme-document de la matrice. La solution a été posée sur stackoverflow ici: findAssocs de plusieurs termes dans R
L'idée va quelque chose comme ceci:
library(tm)
library(RWeka)
data(crude)
#Tokenizer for n-grams and passed on to the term-document matrix constructor
BigramTokenizer <- function(x) NGramTokenizer(x, Weka_control(min = 2, max = 2))
txtTdmBi <- TermDocumentMatrix(crude, control = list(tokenize = BigramTokenizer))
Cependant la dernière ligne me donne l'erreur:
Error in rep(seq_along(x), sapply(tflist, length)) :
invalid 'times' argument
In addition: Warning message:
In is.na(x) : is.na() applied to non-(list or vector) of type 'NULL'
Si je supprime le générateur de jetons à partir de la dernière ligne, ça crée régulièrement tdm, donc je suppose que le problème est quelque part dans le BigramTokenizer la fonction, même si c'est le même exemple que le Weka site donne ici: http://tm.r-forge.r-project.org/faq.html#Bigrams.
source d'informationauteur ds10 | 2013-07-17
Vous devez vous connecter pour publier un commentaire.
Inspiré par Anthony commentaire, j'ai trouvé que vous pouvez spécifier le nombre de threads que le
parallel
bibliothèque utilise par défaut (le spécifier avant d'appeler laNgramTokenizer
):Depuis le
NGramTokenizer
semble accrocher sur leparallel::mclapply
appel, en modifiant le nombre de threads semble fonctionner autour d'elle.Semble qu'il y a des problèmes à l'aide RWeka avec parallèle paquet. J'ai trouvé solution de rechange ici.
De sorte que votre générateur de jetons devrait ressembler à