CommencezCommencez gratuitement

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

Voir le cours

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 tokenizer comme ci-dessus qui produit des bigrammes (2 mots).
  • Créez unigram_dtm en appelant DocumentTermMatrix() sur text_corp sans utiliser la fonction tokenizer().
  • Créez bigram_dtm avec DocumentTermMatrix() sur text_corp en utilisant la fonction tokenizer() que vous venez de définir.
  • Examinez unigram_dtm et bigram_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
___
Modifier et exécuter le code