2017-03-05 3 views
1

J'essaye de faire 2 matrices de document-terme pour un corpus, un avec unigrams et un avec bigrams. Cependant, la matrice bigram est actuellement juste identique à la matrice unigram, et je ne sais pas pourquoi.Matrice de document-terme dans R-bigram tokenizer ne fonctionne pas

Le code:

docs<-Corpus(DirSource("data", recursive=TRUE)) 

# Get the document term matrices 
BigramTokenizer <- function(x) NGramTokenizer(x, Weka_control(min = 2, max = 2)) 
dtm_unigram <- DocumentTermMatrix(docs, control = list(tokenize="words", 
    removePunctuation = TRUE, 
    stopwords = stopwords("english"), 
    stemming = TRUE)) 
dtm_bigram <- DocumentTermMatrix(docs, control = list(tokenize = BigramTokenizer, 
    removePunctuation = TRUE, 
    stopwords = stopwords("english"), 
    stemming = TRUE)) 

inspect(dtm_unigram) 
inspect(dtm_bigram) 

J'ai essayé également d'utiliser ngram (x, n = 2) de l'emballage ngram comme tokenizer, mais cela ne fonctionne pas non plus. Comment réparer la tokenization bigram?

+0

J'ai aussi ce problème, donc si vous avez trouvé la réponse s'il vous plaît faites le moi savoir. –

+0

Bit en retard sur la réponse, désolé - mais j'ai eu ce travail en utilisant VCorpus au lieu de Corpus. – filaments

Répondre

0

L'option tokenizer ne semble pas fonctionner avec Corpus (SimpleCorpus). L'utilisation de VCorpus a résolu le problème.

+0

Pourquoi 'VCorpus' sur' Corpus'? Il y a un autre problème de SO connexe [ici] (https://stackoverflow.com/questions/42757183/creating-n-grams-with-tm-rweka-works-with-vcorpus-but-not-corpus) mais il n'y en a pas. Cela semble être une explication satisfaisante. – hongsy