Premiers pas en text-mining avec R – Partie 3

Troisième partie de notre séquence sur le text mining avec R. Dans ce billet : créer un nuage de mots.

Note — Ce billet fait partie d'une série de billets sur le text-mining avec R. Nous vous invitons à les consulter dans l'ordre :
- Premiers pas en text-mining avec R – Partie 1
- Premiers pas en text-mining avec R – Partie 2
Premiers pas en text-mining avec R – Partie 3
- Premiers pas en text-mining avec R - Partie 4

Un nuage de mots, pour quoi faire ?

Également appelé "Wordcloud", un nuage de mots permet de représenter visuellement les mots les plus récurrents dans un corpus. Comment ? Leur fréquence est proportionnelle à leur taille dans le nuage : concrètement, plus un mot est présent dans le texte analysé, plus sa place dans le nuage est importante. Des couleurs différentes sont également utilisées pour identifier les entrées du corpus.

Le point fort de cette visualisation : elle est facilement comprise par l’œil humain, qui saisit en quelques secondes les termes centraux.

Nettoyer le corpus

Afin d’obtenir un nuage de mots de qualité, il est indispensable de se séparer des mots peu abondants — en effet, un corpus comme celui que nous analysons dans cette suite de billets compte 39 114 mots dans sa version filtrée... Pourtant, sur tous ces mots, seulement 741 entrées sont citées plus de 100 fois...

Autant de mots peu abondants, utiles pour d’autres analyses, mais qui viendront ici nuire à la lisibilité globale du nuage. Qui plus est, pour éviter à votre laptop de tourner à plein régime lors de la construction d’un nuage de plus de 12 000 entrées, n’ayez pas peur de vous séparer des mots superflus !

Obtenir un nuage de mots avec R

Créer le nuage de mots :

Lors de la création du nuage de mot, R vous permet de nettoyer directement votre corpus en assignant une valeur à deux arguments de wordcloud() :
– min.freq = x : les mots avec une fréquence inférieure à x ne seront pas représentés dans le nuage
– max.words = y : le nuage ne comptera pas plus de y mots

Lequel choisir ? La réponse dépend des situations d’analyse. Pour le premier, vous devrez avoir une idée des fréquences moyennes de votre corpus, là où la seconde vous permet de sélectionner un nombre de ligne, indépendamment de votre connaissance effective des fréquences.

Le code :

Pour les nuages de mots, vous aurez besoin du package wordcloud.

library("wordcloud")
library("tidyverse")
library("proustr")
library("tidytext")
books_tidy <- proust_books() %>%
   mutate(text = stringr::str_replace_all(.$text, "’", " ")) %>% 
   unnest_tokens(word, text) %>%
   filter(!word %in% stopwords_iso$fr) %>%
   count(word, sort = TRUE)
wordcloud(books_tidy$word, books_tidy$n, max.words=100, rot.per=FALSE, colors= c("#973232", "#1E5B5B", "#6D8D2F", "#287928"))

Racinisation pour le nuage ?

Nous avions vu dans le second billet comment effectuer une racinisation sur un corpus avec R. Comme nous le notions alors, cette méthode permet de tronquer les préfixes et suffixes des mots afin de les regrouper autour de leur racine, pour un gain de 50 % sur la base globale. Cependant, à des fins de visualisation, ce processus donne un résultat moins lisible, les racines n’étant pas des mots "réels".

Code complet

Retrouvez le code complet sur notre Github

En lire plus :

Text Mining With R: A Tidy Approach
Text Mining: A Guidebook for the Social Sciences
Mining Text Data
Text Mining
Mastering Text Mining with R
Text Mining in Practice With R
Text Mining: From Ontology Learning to Automated Text Processing Applications
Text Mining: Classification, Clustering, and Applications
Phrase Mining from Massive Text and Its Applications
Text Mining: Applications and Theory

Colin FAY

Rédigé par: Colin FAY

Créateur et rédacteur en chef de Data Bzh.

Une pensée sur “Premiers pas en text-mining avec R – Partie 3”

Les commentaires sont fermés.