Text mining et nuage de mots avec le logiciel R : 5 ?tapes simples ? savoir




Le principe du nuage de mots est bas? sur une m?thode d?analyse de textes qui nous permet de mettre en ?vidence les mots-cl?s les plus fr?quemment utilis?s dans un paragraphe de textes. Le nuage de mots est ?galement appel? word cloud ou tag cloud en anglais. La proc?dure de cr?ation d?un nuage de mots est tr?s simple avec le logiciel R si vous connaissez les diff?rentes ?tapes ? ex?cuter. Le package tm (pour text mining) et le package wordcloud (pour g?n?rer le nuage de mots cl?s) sont disponibles dans R pour nous aider ? analyser des textes et de visualiser rapidement les mots-cl?s en nuage de mots.

L?objectif de ce tutoriel est d?expliquer les diff?rentes ?tapes pour g?n?rer un nuage de mots ? partir du logiciel R.

Nuage de mots, word cloud et text mining, I have a dream speech de Martin luther king

3 raisons pour lesquelles vous devriez utiliser des nuages de mots pour pr?senter vos textes

  1. Le nuage de mots est une m?thode puissante pour l?analyse de textes. Il ajoute de la simplicit? et de la clart?. Les mots-cl?s les plus utilis?s ressortent mieux dans un nuage de mots.
  2. Le nuage de mots est un outil de communication puissant. Il est facile ? comprendre, ? partager et est percutant
  3. Le nuage de mots est visuellement plus agr?able qu?une table de donn?es remplie de textes

Qui utilise les nuages de mots?

  • Les chercheurs: pour la pr?sentation des donn?es qualitatives
  • Les Marketers: pour mettre en ?vidence les besoins et les points d?insatisfaction des clients
  • Les enseignants: pour soutenir des sujets essentiels
  • Les politiciens et les journalistes
  • Les r?seaux sociaux: pour collecter, analyser et partager les sentiments des utilisateurs

Les cinq principales ?tapes de la cr?ation d?un nuage de mots avec le logiciel R

Etape 1: Cr?ez un fichier texte

Dans les exemples suivants, je vais analyser le discours de Martin Luther King (?I have a dream?), mais vous pouvez utiliser n?importe quel autre texte :

  • Copiez et collez le texte dans un fichier texte (par exemple: ml.txt)
  • Enregistrez le fichier

Notez que, le texte doit ?tre enregistr? dans un fichier au format texte simple (.txt) en utilisant votre ?diteur de texte favori.

Etape 2: Installer et charger les packages n?cessaires

Les packages text mining (tm) et wordcloud sont n?cessaires.

Ils peuvent ?tre install?s et charg?s en utilisant le code de R ci-dessous:

# Installer
install.packages("tm")  # pour le text mining
install.packages("SnowballC") # pour le text stemming
install.packages("wordcloud") # g?n?rateur de word-cloud 
install.packages("RColorBrewer") # Palettes de couleurs
# Charger
library("tm")
library("SnowballC")
library("wordcloud")
library("RColorBrewer")

Etape 3 : Exploration de textes

Charger le texte

Le texte peut ?tre charg? en utilisant la fonction Corpus() du package tm. Corpus est une liste de documents (dans notre cas, nous avons juste un seul fichier).

Dans l?exemple ci-dessous, j?ai charg? un fichier .txt disponible sur le site web STHDA. Vous pouvez utiliser n?importe quel fichier de votre ordinateur.

# Lire le fichier texte
filePath <- "http://www.sthda.com/sthda/RDoc/example-files/martin-luther-king-i-have-a-dream-speech.txt"
text <- readLines(filePath)
# Charger les donn?es comme un corpus
docs <- Corpus(VectorSource(text))

La fonction VectorSource() se charge de la cr?ation du corpus de textes (ensemble de vecteurs de textes)

Le contenu du document peut ?tre consult? comme suit:

inspect(docs)

La transformation du texte

La transformation du texte est effectu?e en utilisant la fonction tm_map() pour remplacer, par exemple, des caract?res sp?ciaux non utiles.

Remplacer ?/?, ?@? et ?|? avec un espace

toSpace <- content_transformer(function (x , pattern ) gsub(pattern, " ", x))
docs <- tm_map(docs, toSpace, "/")
docs <- tm_map(docs, toSpace, "@")
docs <- tm_map(docs, toSpace, "\\|")

Nettoyage du texte

La fonction tm_map() est utilis?e pour supprimer les espaces inutiles, pour convertir le texte en minuscules, supprimer les ?mots vides? (stopwords en anglais). Il s?agit des mots tr?s courants dans une langue comme ?le?, ?la?, ?nous?, ?et?, etc.

La valeur de l?information de ces ?mots vides? est proche de z?ro en raison du fait qu?ils sont si communs dans une langue. La suppression de ce genre de mots est utile avant de poursuivre une analyse plus approfondie.

Pour la suppression de ces mots vides, les langues support?es sont: danish, dutch, english, finnish, french, german, hungarian, italian, norwegian, portuguese, russian, spanish et swedish. Le nom des langues est sensible ? la casse.

Je vais aussi vous montrer comment faire pour supprimer votre propre liste de mots du texte.

Vous pouvez ?galement supprimer des chiffres et ponctuations avec les arguments removeNumbers et removePunctuation.

Une autre ?tape importante de pr?paration du texte est de faire du texte stemming. Ce processus consiste ? r?duire les mots ? leurs racines. En d?autres termes, ce processus supprime les suffixes des mots pour les rendre simples et pour obtenir l?origine commune. Par exemple, le text stemming va r?duire les mots ?partir?, ?partant?, ?partons? ? la racine ?partir?.

Notez que le text stemming n?cessite le package ?SnowballC?.

Le code R ci-dessous peut ?tre utilis? pour nettoyer le texte :

# Convertir le texte en minuscule
docs <- tm_map(docs, content_transformer(tolower))
# Supprimer les nombres
docs <- tm_map(docs, removeNumbers)
# Supprimer les mots vides anglais
docs <- tm_map(docs, removeWords, stopwords("english"))
# Supprimer votre propre liste de mots non d?sir?s
docs <- tm_map(docs, removeWords, c("blabla1", "blabla2")) 
# Supprimer les ponctuations
docs <- tm_map(docs, removePunctuation)
# Supprimer les espaces vides suppl?mentaires
docs <- tm_map(docs, stripWhitespace)
# Text stemming
# docs <- tm_map(docs, stemDocument)

Etape 4: Construire la matrice des mots

La matrice des mots (term-documents matrix) est une table contenant la fr?quence des mots. La fonction TermDocumentMatrix() du package text mining peut ?tre utilis?e comme suit :

dtm <- TermDocumentMatrix(docs)
m <- as.matrix(dtm)
v <- sort(rowSums(m),decreasing=TRUE)
d <- data.frame(word = names(v),freq=v)
head(d, 10)
             word freq
will         will   17
freedom   freedom   13
ring         ring   12
day           day   11
dream       dream   11
let           let   11
every       every    9
able         able    8
one           one    8
together together    7

Etape 5: G?n?rer le nuage de mots

L?importance des mots peut ?tre illustr?e par un nuage de mots comme suit:

set.seed(1234)
wordcloud(words = d$word, freq = d$freq, min.freq = 1,
          max.words=200, random.order=FALSE, rot.per=0.35, 
          colors=brewer.pal(8, "Dark2"))

nuage de mots, word cloud ettext mining, I have a dream speech from Martin Luther King

Le nuage de mots ci-dessus montre clairement que les mots ?Will?, ?freedom?, ?dream?, ?day? et ?together? sont les cinq mots les plus importants dans le texte ?I have a dream? de Martin Luther King.

Les arguments de la fonction wordcloud sont :


  • words : les mots ? dessiner
  • freq : la fr?quence des mots
  • min.freq : les mots avec une fr?quence en dessous de min.freq ne seront pas illustr?s
  • max.words : nombre maximum de mots ? dessiner
  • random.order : dessine les mots dans un ordre al?atoire. Si false, ils seront dessin?s par ordre d?croissant de la fr?quence
  • rot.per : la proportion de mots verticaux sur le graphe
  • colors : couleurs des mots du moins au plus fr?quent. Utiliser par exemple, colors =?black? pour une couleur unique.


Allez plus loin

Explorer les mots fr?quents ainsi que leurs associations

Vous pouvez voir les mots les plus fr?quents comme suit. L?exemple, ci-dessous, montre les mots qui sont fr?quents au moins 4 fois dans le texte :

findFreqTerms(dtm, lowfreq = 4)
 [1] "able"     "day"      "dream"    "every"    "faith"    "free"     "freedom"  "let"      "mountain" "nation"  
[11] "one"      "ring"     "shall"    "together" "will"    

Vous pouvez analyser l?association entre les mots (leur corr?lation) en utilisant la fonction findAssocs(). Le code R ci-dessous identifie les mots qui sont le plus fr?quemment associ?s ? ?freedom? dans le texte I have a dream :

findAssocs(dtm, terms = "freedom", corlimit = 0.3)
             freedom
let             0.89
ring            0.86
mississippi     0.34
mountainside    0.34
stone           0.34
every           0.32
mountain        0.32
state           0.32

Table de la fr?quence des mots

head(d, 10)
             word freq
will         will   17
freedom   freedom   13
ring         ring   12
day           day   11
dream       dream   11
let           let   11
every       every    9
able         able    8
one           one    8
together together    7

Dessiner la fr?quence des mots

La fr?quence des 10 premiers mots est montr? ci-dessous :

barplot(d[1:10,]$freq, las = 2, names.arg = d[1:10,]$word,
        col ="lightblue", main ="Most frequent words",
        ylab = "Word frequencies")

word cloud and text mining

Infos

Cette analyse a ?t? r?alis?e avec le logiciel R (ver. 3.1.0).


Enjoyed this article? I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Twitter, Facebook or Linked In.

Show me some love with the like buttons below... Thank you and please don't forget to share and comment below!!
Avez vous aimé cet article? Je vous serais très reconnaissant si vous aidiez à sa diffusion en l'envoyant par courriel à un ami ou en le partageant sur Twitter, Facebook ou Linked In.

Montrez-moi un peu d'amour avec les like ci-dessous ... Merci et n'oubliez pas, s'il vous plaît, de partager et de commenter ci-dessous!





Cette page a été vue 27367 fois
Licence - Pas d?Utilisation Commerciale - Partage dans les M?mes Conditions
Licence Creative Commons