Documentation:
install.packages(R.temis)
install.packages(dplyr) # ou (tidyverse)
install.packages(tibble) # ou (tidyverse)
Concernant le choix du corpus, nous avons sélectionné les voeux prononcés par François Hollande de 2013 à 2017. Les textes retranscrits dans des fichiers de type texte (.txt) et placé dans un seul dossier nommé dossier_de_texte.
corpus1 <- import_corpus("dossier_de_texte", format="txt", language ="fr")
corpus<-split_documents(corpus1, 5, preserveMetadata = TRUE)
- 1
- Importation des textes avec la fonction import_corpus
- 2
- Découpage en unités textuelles de 5 paragraphes pour un meilleur rendu
Les stop words (ou mots vides) sont des mots très courants d’une langue comme les prépositions, les articles, les pronoms, etc., qui sont souvent omis lors de l’analyse car en général ils ne portent pas de sens important pour la compréhension globale du texte. La fonction build_dtm
est utilisée pour construire une matrice de termes-document (ou tableau lexical) à partir d’un corpus de textes. La matrice de termes-document (ou Tableau Lexical) est une représentation quantitative d’un corpus de textes, où chaque colonne représente un terme et chaque ligne représente un document. Ici les documents sont les unités textuelles (composées de 5) paragraphes.
On choisit de supprimer les mots vides.
On passe maintenant à la création du tableau lexical (dtm) sans mots outils et avec les mots d’au moins 1 lettre.
dtm <-build_dtm(corpus, remove_stopwords = T, min_length = 1)
frequent_terms(dtm)
Global occ. Global %
france 66 1.9446081
a 54 1.5910430
plus 48 1.4142605
année 33 0.9723041
être 29 0.8544490
aussi 28 0.8249853
pays 24 0.7071302
tous 24 0.7071302
tout 24 0.7071302
contre 19 0.5598114
compatriotes 18 0.5303477
faire 18 0.5303477
doit 17 0.5008839
face 16 0.4714202
toutes 16 0.4714202
chers 15 0.4419564
veux 15 0.4419564
europe 14 0.4124926
comme 13 0.3830289
emploi 13 0.3830289
monde 13 0.3830289
confiance 12 0.3535651
parce 12 0.3535651
république 12 0.3535651
ceux 11 0.3241014
- On crée le tableau lexical avec la fonction
build_dtm
- Calcul des occurrences des mots dans le corpus de textes
Le mot france est prononcé 66 fois dans l’ensemble des 5 discours et représente 1,95% des occurences totales.
On va maintenant affiner l’analyse.
On aimerait aussi retirer les mots a et plus et rassembler sous un même mot les termes tout, toutes et tous en tous.tes à titre d’exemple.
On crée le dictionnaire qui affiche les mots initiaux et les racines des mots (Term). Il va servir à lemmatiser le corpus.
La lemmatisation consiste à remplacer les mots initiaux par des termes: la racine des mots ou une forme personnalisée (comme c’est le cas ici)
dic <-dictionary(dtm)
dic2 = dic %>%
rownames_to_column(var="word") %>%
mutate(Term = word)
row.names(dic2) <- dic2$word
# Remplacer les mots spécifiés par tous.tes
dic2$Term[dic2$word == "toutes"] <- "tous.tes"
dic2$Term[dic2$word == "tout"] <- "tous.tes"
dic2$Term[dic2$word == "tous"] <- "tous.tes"
dtmlem <-combine_terms(dtm, dic2)
mots_a_retirer <- c("a", "plus")
dtm2<-dtmlem[, !colnames(dtmlem) %in% mots_a_retirer]
frequent_terms(dtm2)
- 1
- Création d’un dictionnaire de mot.
- 2
- Remplacer les mots spécifiés par tous.tes.
- 3
- Lemmatisation.
- 4
- Suppression de mots dans le tableau lexical.
Global occ. Global %
france 66 2.0048603
tous.tes 64 1.9441069
année 33 1.0024301
être 29 0.8809235
aussi 28 0.8505468
pays 24 0.7290401
contre 19 0.5771567
compatriotes 18 0.5467801
faire 18 0.5467801
doit 17 0.5164034
face 16 0.4860267
chers 15 0.4556501
veux 15 0.4556501
europe 14 0.4252734
comme 13 0.3948967
emploi 13 0.3948967
monde 13 0.3948967
confiance 12 0.3645200
parce 12 0.3645200
république 12 0.3645200
ceux 11 0.3341434
entre 11 0.3341434
entreprises 11 0.3341434
là 11 0.3341434
soir 11 0.3341434
On voit que les occurences du “tous.tes” (64) correspondent bien à la somme des occurences de tout (24), tous(24) et toutes(16).
On passe à l’affichage du Nuage de mot
Ce graphique permet de visualiser les mots les plus occurents d’un corpus de textes.
50 mots maximum - au moins un mot
<-word_cloud(dtm2, color= 'black', min.freq=1,n =50)
cloudtitle(main = ""2013-2017: mots les plus fréquents dans les discours de F.Hollande")
La taille de la police est proportionelle à l’occurence du mot: France (66), année (33) et entreprise (11).
Et pour finir, l’affichage d’un graphe de mots
La fonction terms_graph
du package R.temis permet de générer un réseau de mots qui est affiché dans une fenêtre interactive igraph. Les termes ou mots sont représentés par des sommets (ou nœuds) du graphe, les liens représentent les cooccurrences entre les mots les plus fréquents. Leur placement dans l’espace graphique est déterminé par un algorithme d’énergie.
graphique d'analyse des co-occurrences
Tree<-terms_graph(dtm2, min_occ = 10, interactive = T,
vertex.size = 0.01, vertex.color = "lightblue",
label.cex = 0.1)