CommencerCommencer gratuitement

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

Afficher le cours

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 tokenizer comme ci-dessus qui génère des bigrammes de 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 cet exemple de code.

# Make tokenizer function 
___ <- function(x) {
  ___(___, ___(___, ___))
}

# Create unigram_dtm
___ <- ___(___)

# Create bigram_dtm
___ <- ___(
  ___,
  ___
)

# Print unigram_dtm
___

# Print bigram_dtm
___
Modifier et exécuter le code