Premiers pas en text-mining avec R – Partie 2

Seconde partie de notre série sur le text-mining avec R. Dans ce volet : nettoyer un corpus par racinisation.

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

La lemmatisation

Dans une langue, un mot peut prendre plusieurs formes : singulier ou pluriel, féminin ou masculin, conjugaison pour les verbes, etc. Toutes ces déclinaisons ont pour base une unité lexicale unique et autonome, que la linguistique nomme lemme. Ainsi, un lemme correspond à la plus petite unité lexicale faisant sens, qui est souvent l’équivalent de la plus petite unité pouvant constituer une entrée dans le dictionnaire.

Technique liée au text-mining, la lemmatisation d’un un corpus consiste à regrouper les déclinaisons d’un lemme au sein de la même entrée dans votre base de données. En d’autres termes, le processus de lemmatisation fait correspondre nettoyait et nettoyant au sein d’une même unité : nettoyer. Ce type de manipulation vous permet de gagner en pertinence : vous n’analyserez pas ces deux mots comme deux unités distinctes, mais comme une seule unité.

Lemmatisation ou racinisation ?

À l’inverse d’un lemme, la racine d’un mot n’est pas unité qui fait sens par elle même, ce n’est pas un mot réel. En effet, la racine est dépouillée de ses préfixes et suffixes, ainsi que de toutes ses déclinaisons, la rendant inutilisable en tant que telle. Également liée au text-mining, la racinisation consiste donc à nettoyer son corpus en regroupant l’ensemble des déclinaisons autour d’une même racine.

Choisir entre ces deux techniques ?

Chacun de ces processus de nettoyage  présente ses avantages et ses inconvénients. Le point fort de la racinisation étant la simplicité de mise en place — la lemmatisation demande un dictionnaire complexe liant les différentes formes d’un mot (par exemple, suis est et sommes sont liés au sein de la même entrée être), là où la racinisation est moins complexe, utilisant une série prédéfinie de préfixes et suffixes qui sont tronqués sur les mots du corpus (mais qui, potentiellement, ne fera pas correspondre suis et est).

Ainsi, dans le cadre de notre série sur l’introduction au text-mining avec R, nous nous contenterons d’aborder la technique la plus facile d’accès, celle de racinisation, ou stemming dans la langue de Shakespeare.

Racinisation avec R : quelques lignes de code

Souvenez-vous de notre première partie sur le text-mining. Le stemming intervient durant la seconde étape, celle de nettoyage de corpustoutes les commandes à la suite interviennent après la dernière ligne de commande de l’étape 2 de notre premier volet sur le text-mining.

Le code :

Racinisation

wordStem(books_tidy$word, language = "french")
# La liste des langages supportés est disponible avec 
# la fonction getStemLanguages()

Quel bénéfice pour le text-mining ?

Afin d’estimer le gain d’une racinisation, analysons la taille des deux corpus, l’un avant processus de tri, le second après. Malheureusement, le stemming ne fonctionnant

library("SnowballC")
library("tidyverse")
library("proustr")
library("tidytext")
books_tidy <- proust_books() %>%
   mutate(text = stringr::str_replace_all(.$text, "’", " ")) %>% 
   unnest_tokens(word, text) %>%
   count(word, sort = TRUE)
nrow(books_tidy)
[1] 39672

stem <- wordStem(books_tidy$word, language = "french")
length(unique(stem))
[1] 16917

Ainsi, lorsque l’on compare les deux data.frame, nous constatons une diminution de plus de moitié de la taille de notre corpus — ce qui nous permet de réduire la marge de bruit en appliquant cette première étape de nettoyage de texte.

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

Rédigé par: Colin FAY

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

Une réponse sur “Premiers pas en text-mining avec R – Partie 2”

Les commentaires sont fermés.