Des chiffres, des chiffres, toujours des chiffres ? Eh non, pas que ! La science des données passe également par l’analyse de contenus textuels : une spécialisation appelée « fouille de texte » (si vous êtes d’humeur franco-française), mais plus connue sous le nom de « text-mining ».
Aujourd’hui, premier volet de notre série de billets sur le text-mining.
Sommaire
Le text-mining, qu’est-ce que c’est ?
Discipline liée au data mining (vous l’auriez deviné), le text-mining regroupe l’ensemble des méthodes qui permettent d’analyser un texte avec des méthodes statistiques. L’objectif ? Faire émerger du sens d’une suite de mots : livres, discours, tweets… Et tout commence par « quels sont les mots le plus utilisés », pour se diriger, à terme, vers des questions bien plus complexes.
Car oui, vaste sujet que celui du text-mining : on entre par la porte de l’analyse fréquentielle, et l’on navigue jusqu’à l’intelligence artificielle. Cependant, puisqu’il faut bien commencer quelque part, commençons par une introduction au text-mining avec R. Dans ce billet, nous vous présenterons deux méthodes : la méthode « classique », avec le package tm, et la méthode du tidy text-mining, inspirée des travaux d’Hadley Wickham (eh oui, encore lui !).
Première étape, donc : installer les packages, et trouver un texte à fouiller. Pour notre corpus, nous utiliserons le package gutenbergr, qui permet de télécharger le contenu d’un livre accessible sur le Projet Gutenberg. Penchons-nous, à tout hasard, sur le livre : « The philosophy of mathematics« .
Text-mining, la méthode « classique »
Pourquoi parle-t-on de méthode classique ? C’est très simple : parce que tm est le package de text-mining historique : sa première version a été publiée sur le CRAN le 13 janvier 2007… il y a donc dix ans. tidytext, de son côté, date d’avril 2016.
Nous l’avions dit plus haut, ce billet se concentrera sur la première étape du text-mining : analyser la fréquence d’apparition des mots dans notre ouvrage. Un processus qui demande une première phase de transformation des données :
– d’abord en transformant notre texte en corpus,
– en le débarrassant du superflu grâce à la fonction tm_map,
– en transformant notre corpus en Term-Document Matrix,
– puis enfin en data.frame.
Nous voici donc avec un premier data.frame contenant une liste de fréquence d’apparition des mots dans le texte. Ce qui donne, si nous le visualisons avec ggplot :
Tidy text-mining
Approche plus récente popularisée par Julia Silge et David Robinson, la méthode du tidy text-mining étend la philosophie des tidy data d’Hadley Wickham, et l’applique à l’analyse textuelle. Voici donc la version « new school » de l’analyse de fréquence d’un texte :
Comment choisir ?
Bonne question… Et sur ce point, vous vous confronterez à deux écoles : celle des adeptes/habitués des méthodes classiques, et l’école de l’ordocosme. Si l’on s’attarde sur les résultats, on constate également une différence de volume : le nettoyage par le package tm conserve 517 unités, là où tidytext en conserve 407… ce qui n’est pas sans changer le contenu des 25 mots les plus récurrents : on remarque par exemple que tm conserve two et three, là où ils disparaissent avec notre seconde méthode. Un paramètre qui dépend notamment de la liste de « mots-vides » contenue dans chaque package.
Le point fort de la méthode tidytext ? Tout d’abord : beaucoup moins de lignes de code. Ensuite, un package qui a été pensé pour fonctionner avec tous les autres outils du tidyverse, notamment tidyr et dplyr. Maintenant, ne vous reste qu’à choisir votre camps… et peut-être que nos prochains billets vous aideront à trancher 😉 !
[…] un package croisant lui aussi NLP et philosophie tidyverse. Mais vous le connaissiez, on vous en a déjà parlé […]
[…] avec une méthode basique d’analyse fréquentiste, en comparant {tidytext} et {tm} dans notre premier billet. Nous avons poursuivi avec les n-grammes dans notre second numéro. Suite des hostilités […]