| Packages | Fonctions |
|---|---|
| prefixer | prefixer |
| R.temis | import_corpus |
| R.temis | build_dtm |
| R.temis | frequent_terms |
| R.temis | combine_terms |
| R.temis | word_cloud |
Pour illustrer ce propos, nous reprennons le script de la fiche de Coralie Cottet Générer des graphes de mot avec R.temis. Nous allons ajouter un prefixe à chaque fonction utilisée pour générer un nuage de mots.
Documentation :
RStudio Addins sont des extensions pour l’environnement de développement intégré (IDE) RStudio
prefixer: Shiny Gadget to interactively prefix function in a script
Séminaire R à l’Usage des Sciences Sociales, Esquisse, moins tu sais coder plus tu vas rigoler
Installation des packages :
install.packages("remotes")
install.packages("R.temis")
install.packages("dyplyr")Fichiers à utilisés :
Les voeux du président Hollande pour les années 2013 à 2017.
Chaque discours correspond à un fichier texte et ces 5 discours sont placés dans un dossier unique appelé dossier_de_textes
Le script d’origine
Code
## Appel des packages
library(R.temis)
library(tidyverse)
## Statistiques textuelles
## Création du tableau lexical associé au corpus des discours
# Importation des textes avec la fonction `import_corpus`
corpusv <- import_corpus("datas/dossier_de_textes", format="txt", language ="fr")
# Création du tableau lexical associé
# On ne garde pas les mots-outils et on garde aussi les mots de 1 seule lettre
dtm <-build_dtm(corpusv, remove_stopwords = T, min_length = 1)
dtm
# On obtient un *tableau lexical* de 5 unités de texte (les voeux) et 1575 mots différents ...
## Afficher les occurrences des mots du corpus
# Calcul des occurrences des mots
frequent_terms(dtm)
# On remarque que les mots `tous`, `tout` et `toutes` sont très fréquents et qu ils sont employés dans des contextes similaires. On souhaite alors les associer à un terme unique : `tous.tes` (opération de `lemmatisation`)
#### Personalisation du lexique
# Création du dictionnaire/lexique associé au tableau lexical
dic <-dictionary(dtm)
# On crée une nouvelle table `dic2` en créant une première colonne appelée `word` avec l'intitulé des lignes du tableau et en remplaçant le contenu de la colonne cette première colonne ... C'est un lemmatiseur !
dic2 = dic %>%
rownames_to_column(var="word") %>%
mutate(Term = word)
row.names(dic2) <- dic2$word
# On peut alors remplacer les mots de la colonne Term par l'intitulé souhaité. Ici tout.tes
dic2$Term[dic2$word == "toutes"] <- "tous.tes"
dic2$Term[dic2$word == "tout"] <- "tous.tes"
dic2$Term[dic2$word == "tous"] <- "tous.tes"
# Lemmatisation à l'aide du lemmatiseur personnalisé
dtmlem <-combine_terms(dtm, dic2)
# Ensemble de mots à retirer
mots_a_retirer <- c("a", "plus")
# Suppression de mots dans le tableau lexical
dtm2<-dtmlem[, !colnames(dtmlem) %in% mots_a_retirer]
# Nouvelles fréquences des mots associés au corpus
frequent_terms(dtm2)
### Affichage du nuage de mots
cloud<-word_cloud(dtm2, color= 'black', min.freq=1,n =50)
title(main = "Mots les plus fréquents dans les discours de F. Hollande entre 2013 et 2017")Ajouter le nom des packages aux fonctions avec prefixer
Installer le package prefixer à partir de GitHub
L’addin prefix est disponible sur la forge logicielle de dreamRs
install.packages("remotes")
install_github("dreamRs/prefixer")Celui-ci permet d’ouvrir une interface qui propose pour chaque fonction du script de lui ajouter un préfixe composé du nom de la fonction suivi de ::
Prefixer le script
A la fin du script R, on charge le package prefixer puis on ouvre l’interface avec la commande prefixer()
## Appel du package
library(prefixer)
## Ouverture de l'interface RShiny
prefixer()Dans le cas de notre script:
#cloud<-word_cloud(dtm2, color= 'black', min.freq=1,n =50)
#title(main = "Mots les plus fréquents dans les discours de F. Hollande entre 2013 et 2017")
library(prefixer)
prefixer()Utiliser la fenêtre shiny permettant de choisir le préfixe
Seulement pour le format html
Résultat: le script est enrichi
## Statistiques textuelles
## Création du tableau lexical associé au corpus des discours
# Importation des textes avec la fonction `import_corpus`
corpusv <- R.temis::import_corpus("datas/dossier_de_textes", format="txt", language ="fr")
# Création du tableau lexical associé
# On ne garde pas les mots-outils et on garde aussi les mots de 1 seule lettre
dtm <-R.temis::build_dtm(corpusv, remove_stopwords = T, min_length = 1)
dtm
# On obtient un *tableau lexical* de 5 unités de texte (les voeux) et 1575 mots différents ...
## Afficher les occurrences des mots du corpus
# Calcul des occurrences des mots
R.temis::frequent_terms(dtm)
# On remarque que les mots `tous`, `tout` et `toutes` sont très fréquents et qu ils sont employés dans des contextes similaires. On souhaite alors les associer à un terme unique : `tous.tes` (opération de `lemmatisation`)
#### Personalisation du lexique
# Création du dictionnaire/lexique associé au tableau lexical
dic <-R.temis::dictionary(dtm)
# On crée une nouvelle table `dic2` en créant une première colonne appelée `word` avec l'intitulé des lignes du tableau et en remplaçant le contenu de la colonne cette première colonne ... C'est un lemmatiseur !
dic2 = dic %>%
tibble::rownames_to_column(var="word") %>%
dplyr::mutate(Term = stringr::word)
row.names(dic2) <- dic2$word
# On peut alors remplacer les mots de la colonne Term par l'intitulé souhaité. Ici tout.tes
dic2$Term[dic2$word == "toutes"] <- "tous.tes"
dic2$Term[dic2$word == "tout"] <- "tous.tes"
dic2$Term[dic2$word == "tous"] <- "tous.tes"
# Lemmatisation à l'aide du lemmatiseur personnalisé
dtmlem <-R.temis::combine_terms(dtm, dic2)
# Ensemble de mots à retirer
mots_a_retirer <- c("a", "plus")
# Suppression de mots dans le tableau lexical
dtm2<-dtmlem[, !colnames(dtmlem) %in% mots_a_retirer]
# Nouvelles fréquences des mots associés au corpus
R.temis::frequent_terms(dtm2)
### Affichage du nuage de mots
cloud<-R.temis::word_cloud(dtm2, color= 'black', min.freq=1,n =50)
title(main = "Mots les plus fréquents dans les discours de F. Hollande entre 2013 et 2017")
