Modifier les n-grammes
Jusqu'ici, nous n'avons créé des TDM et DTM qu'à partir de mots seuls. Par défaut, on les construit avec des unigrammes, mais vous pouvez aussi cibler des jetons de deux mots ou plus. Cela peut aider à extraire des expressions utiles qui mènent à des constats supplémentaires ou fournissent de meilleurs attributs prédictifs pour un algorithme de Machine Learning.
La fonction ci-dessous utilise le paquet RWeka pour créer des trigrammes (groupes de trois mots) : min et max sont tous deux à 3.
tokenizer <- function(x) {
NGramTokenizer(x, Weka_control(min = 3, max = 3))
}
La fonction personnalisée tokenizer() peut ensuite être transmise aux fonctions TermDocumentMatrix ou DocumentTermMatrix comme paramètre additionnel :
tdm <- TermDocumentMatrix(
corpus,
control = list(tokenize = tokenizer)
)
Cette activité fait partie du cours
Extraction de texte avec sac de mots en R
Instructions de l’exercice
Un corpus a été prétraité comme auparavant à 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 produit des bigrammes (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 ce code d’exemple.
# Make tokenizer function
___ <- function(x) {
___(___, ___(___, ___))
}
# Create unigram_dtm
___ <- ___(___)
# Create bigram_dtm
___ <- ___(
___,
___
)
# Print unigram_dtm
___
# Print bigram_dtm
___