Vous êtes sur la page 1sur 12

TP6 R : Compte

Rendue
FSDM/KMOUT-Achraf

TALN

Wisd

2019/2020
Exercice

#Question 1 :
 Exécutez le code ci-dessus et essayez de le comprendre.

1) Extraction du contenu d'une liste de pages

# ----------- Les bibliothèques library(tm) library(tm.plugin.webmining)


library(NLP)
library(tm)
library(tm.plugin.webmining)
library(SnowballC)
library(XML)

# Path
# Windows
setwd("d:/TextMining/TP3_R")
getwd()
# ----------- Mettre des pages wiki dans un corpus ------------
#Une longue procédure pour avoir une liste d'articles dans un string # ATTENION aux
noms des pages, utilisez des URL (URlEncoded)
url_start <- "http://edutechwiki.unige.ch/fmediawiki/api.php?action=parse&page="
url_end <- "&format=xml"
titles <- c("1066", "Activate", "Alice", "Argument_Wars", "CeeBot_4", "Chevron",
"Cité_romaine", "Citéjob-négo", "Cyberbudget", "Darfur_is_dying", "E-psych", "Elude"
"Energy_City", "Envers_et_contre_tout", "Eonautes", "FacteurAcademy", "Foodforce"
"Get_the_glass", "Glucifer", "Halte_aux_catastrophes", "Happy_Night", "I-progress",
"ICE-D", "InfinITy", "Ivy%E2%80%99s_Meadow", "J%27apprends_J%27entreprends",
"KROBOT", "Mon_entretien_d%27embauche", "MySQLgame", "Oiligarchy",
"Orbitrunner","Petits_Détectives", "Phun", "Play_the_news", "Real_Lives", "RobotProg
Nb :
 Pour installer le package « tm » il va falloir installer le package
« NLP ».
 Dans les titres ; KROBOT va générer une erreur. danc il faut qu’il va
être supprimer de la liste des titres.
# un vecteur qui contient 12 strings vides ("")
article_list <- character(length(titles))
# on remplace par les URLs ci-dessus
for (i in 1:length(titles)) {
article_list[i] <- (paste (url_start,titles[i],url_end, sep=""))
#Résultat :

# On construit le corpus en utilisant un reader fait par nous et


# Cette fonction extrait juste l'élément XML "text" (voir l'API des mediawiki)
readMWXML <-readXML (
spec = list (content = list ("node", "//text"),
heading = list ("attribute", "//parse/@title")),
doc =PlainTextDocument()
)
# Attention : Casse (notamment sous Ubuntu) si les URLs ne sont pas correctement
encodés wiki.source <-VCorpus (
URISource(article_list,encoding="UTF8"),
readerControl=list(reader=readMWXML, language
)
# On change les "id" (titres à la place d'URLs illisibles)
for (j in seq.int (wiki.source)) {
meta(wiki.source[[j]],"id") <- titles[j]
}
# Ajouter une balise html autour du tout
2) Nettoyage du texte :

# Mettre tout en minuscules


wiki.cl1 <- tm_map(corpus, content_transformer(tolower))

# Tuer les balises


wiki.cl2 <- tm_map(wiki.cl1, content_transformer(extractHTMLStrip))

# kill_chars est une fonction pour nettoyage custom


(kill_chars <- content_transformer (function(x, pattern) gsub(pattern, " ", x)))
tm_map (wiki.cl2, kill_chars, "\u2019")
tm_map (wiki.cl2, kill_chars,"'")
tm_map (wiki.cl2, kill_chars,"[«»”“\"]")
tm_map (wiki.cl2, kill_chars,"\\[modifier\\]")

# enlever les ponctuations qui restent


wiki.cl3 <- tm_map (wiki.cl2, removePunctuation, preserve_intra_word_dashes

# Tuer les mots fréquents (stop words)


wiki.essence <- tm_map (wiki.cl3, removeWords, stopwords("french"))

# Extraire les racines. La bibliothèque SnowballC doit être installée.


getStemLanguages()
wiki.racines <- tm_map (wiki.essence, stemDocument, language="french")

# Enlever des blancs s'il en reste


wiki.racines <- tm_map (wiki.racines, stripWhitespace)

# Le corpus final nettoyé

#Résultat :
#Question 2 :
 Générez le nuage de mots du corpus final.

#Réponse :
Le nuage de mots dans R nécessite les packages suivants (tm, SnowballC,
wordcloud, RColorBrewer ) on les packages « tm » et « SnowballC » sont
déjà installer, alors il nous reste « wordcloud, RColorBrewer ».

# Installer
Install.packages(‘’wordcloud’’)
On va utiliser la fonction wordcloud() qui prend les arguments suivants :
corpus1 :de type corpus.
scale :pour la taille des mots.
min.freq :pour le plus petit fréquence des mots à ajouter dans le nuage.
max.words :le max des mots à mettre dans le nuage.
colors :les couleurs des mots dans le nuage.

#Résultat :
Maintenant pour avoir un put de style, je vais changer les paramètre de
quelque arguments de la fonction wordcloud(), puis ajouter l’argument
max.words ; pour avoir dans le nuage juste les 100 mots les plus important.

#Résultat :
#Question 3 :

 Tracer le graphe de 10 mots les plus utilisés dans le corpus.

#Réponse :
Pour tracer le graphe de 10 mots les plus utilisés on est besoin du package
« ggplots »

#1. Definir le document terme matrix:


term_matrix <- DocumentTermMatrix(corpus1)

#2. Supprimer les termes mois fréquents (sparse terms):


term_matrix <- removeSparseTerms(term_matrix,0.2)

#3. Chercher les 10 mots les plus fréquentes :


top_words <- (colSums(as.matrix(term_matrix)))
##sort
#Résultat : top_words <- sort(top_words, decreasing = TRUE)
Voila les 10 plus utiliser dans le corpus.
frequent_words <- as.data.frame(frequent_words)
frequent_words <- as.data.frame(frequent_words)
frequent_words <- data.frame((row.names(frequent_words)),frequent_words)
colnames(frequent_words) <- c("terme","frequence")
row.names(frequent_words) <- c()
#4. Dessiner le graphe des 10 mots les plus utilisés :
plot <- ggplot(frequent_words, aes(terme, frequence))

#Résultat :

Les bars sont tracés dans l’ordre alphabétique des mots.

#Question 4 :

 Tracer le graphe de 10 mots les moins utilisés dans le corpus.


#Réponse :
Même chose, même code précédant en va juste à la place d’effectuer une trie
descendant en va trier ascendant, pour avoir les mots les moins utilisés dans le
corpus en top de la liste., puis en va les dessiner dans un graphe.

#1. Chercher les 10 mots moins fréquents :


low_words <- (colSums(as.matrix(term_matrix)))
##sort
low_words <- sort(low_words, decreasing = TRUE)
#Résultat :

Voilà les 10 moins utiliser dans le corpus.


frequent_words <- as.data.frame(frequent_words)

frequent_words <- as.data.frame(frequent_words)

frequent_words <- data.frame((row.names(frequent_words)),frequent_words)

colnames(frequent_words) <- c("terme","frequence")

row.names(frequent_words) <- c()

#2. Dessiner le graphe des 10 mots les plus utilisés :


plot <- ggplot(frequent_words, aes(terme, frequence))
#Résultat :

Les bars sont tracés dans l’ordre alphabétique des mots.


#Question 5 :

  Créer la matrice termes-documents et la matrice documents- termes.

#Réponse :
Matrice termes-documents  :

#Résultat :
word freq
jeu jeu 1096
joueur joueur 559
modifi modifi 557
code code 553
point point 373
logiciel logiciel 349
plus plus 323
peut peut 320
princip princip 216
contenu contenu 192
pã©dagogiqu pã©dagogiqu 181
diffã©rent diffã©rent 179
fait fait 172
â«â â«â 169
doit doit 161
tout tout 160
fair fair 156
.
.
.
.

Matrice documents  termes :

mdt <- DocumentTermMatrix(corpus1)


#Résultat

Ref :
*http://edutechwiki.unige.ch/fr/Tutoriel_tm_text_mining_package#Analyse_typologique
_hi.C3.A9rarchique

*http://edutechwiki.unige.ch/fr/Tutoriel_tm_text_mining_package#Matrices_documents
-termes_et_analyses_de_fr.C3.A9quences

Merci,
J’espère que mon travail était au niveau de vos attentes.

Vous aimerez peut-être aussi