Modifier les n-grammes
Jusqu’ici, nous n’avons créé des TDM et DTM qu’à partir de mots isolés. Par défaut, ils sont construits avec des unigrammes, mais vous pouvez aussi cibler des jetons contenant deux mots ou plus. Cela permet d’extraire des expressions utiles qui apportent des informations supplémentaires ou de meilleurs attributs prédictifs pour un algorithme de Machine Learning.
La fonction ci-dessous utilise le package RWeka pour créer des trigrammes (trois mots) : min et max sont tous deux fixés à 3.
tokenizer <- function(x) {
NGramTokenizer(x, Weka_control(min = 3, max = 3))
}
La fonction tokenizer() ainsi personnalisée peut ensuite être passée aux fonctions TermDocumentMatrix ou DocumentTermMatrix comme paramètre supplémentaire :
tdm <- TermDocumentMatrix(
corpus,
control = list(tokenize = tokenizer)
)
Cet exercice fait partie du cours
Text mining avec sac de mots en R
Instructions
Un corpus a été prétraité comme précédemment à partir des tweets sur le chardonnay. L’objet résultant text_corp est disponible dans votre espace de travail.
- Créez une fonction
tokenizercomme ci-dessus qui génère des bigrammes de 2 mots. - Créez
unigram_dtmen appelantDocumentTermMatrix()surtext_corpsans utiliser la fonctiontokenizer(). - Créez
bigram_dtmavecDocumentTermMatrix()surtext_corpen utilisant la fonctiontokenizer()que vous venez de définir. - Examinez
unigram_dtmetbigram_dtm. Lequel contient le plus de termes ?
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# Make tokenizer function
___ <- function(x) {
___(___, ___(___, ___))
}
# Create unigram_dtm
___ <- ___(___)
# Create bigram_dtm
___ <- ___(
___,
___
)
# Print unigram_dtm
___
# Print bigram_dtm
___