Premiers pas en text-mining avec R – Partie 4

4e volet de notre série sur le text-mining avec R. Dans ce billet, visualisation des termes fréquemment associés.

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

Code complet

Retrouvez le code complet sur notre Github

Découvrir les termes associés, pourquoi ?

Jusqu'ici, nous avons vu comment visualiser les termes les plus fréquents (par diagramme en barres ainsi que par nuage de mots), ainsi que des techniques de nettoyage de corpus.

Afin d'aller plus loin dans le mining de notre texte, nous nous concentrerons dans ce billet sur l'étude des relations entre les différents mots d'un corpus. Cette technique vous permettra de faire émerger de l'information autrement inaccessible via les manipulations de texte expliquées jusqu'ici : nous nous intéressons ici à un niveau supérieur — les relations entre termes. En d'autres termes, quels sont les termes fréquemment associés à une thématique définie ?

Obtenir le TermDocumentMatrix utilisé dans notre série

Le calcul d'association, réalisé par le package tm, s'effectue sur un TermDocumentMatrix, dans R.

Pour rappel, nous travaillons sur le texte de Proust, avec le package {proustr}. 

findAssocs, créer un vecteur de termes associés

La fonction findAssocs(), disponible dans le package tm, vous permet de retrouver les termes fréquemment associés à un autre. Cette fonction prend trois arguments :
- x : un TermDocumentMatrix
- terms : un ou plusieurs termes sources
- corlimit : un vecteur numérique, comprenant une limite minimum (comprise entre 0 et 1) de corrélation entre le(s) terme(s) de terms et les autres éléments du corpus.

Notre texte d'exemple comptant une large variété de termes, la limite de corrélation minimum est faible — nous l'avons ici fixée à 0.05.

Afin d'obtenir un dataframe contenant les termes liés :

library("wordcloud")
library("tidyverse")
library("proustr")
library("tidytext")
library("qdapTools")
library("tm")
corpus <- proust_books() %>%
   mutate(text = stringr::str_replace_all(.$text, "’", " ")) %>% 
   .$text %>% 
   VectorSource()%>%
   VCorpus()%>%
   tm_map(content_transformer(tolower))%>%
   tm_map(stripWhitespace) %>%
   tm_map(removeNumbers)%>%
   tm_map(removePunctuation)%>%
   tm_map(removeWords, stopwords("french"))%>%
   TermDocumentMatrix()
associations <- findAssocs(corpus, "temps", corlimit = 0.05) %>% 
   list_vect2df() %>%
   data.frame()
names(associations) <- c("source", "terme", "corr")
associations <- arrange(associations, desc(corr))

Visualiser les termes les plus associés

Afin de visualiser les termes les plus corrélés avec king et queen dans notre corpus, nous dressons un barplot avec ggplot, en suivant le code suivant :

ggplot(associations[1:10,], aes(x = terme, y = corr)) + 
   geom_bar(stat="identity") + 
   coord_flip()+
   xlab("Terme") + 
   ylab("Corrélation") + 
   theme_minimal()

tm avec R correlation

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.