<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Super Statisticienne &#187; Wordcloud</title>
	<atom:link href="https://superstatisticienne.fr/tag/wordcloud/feed/" rel="self" type="application/rss+xml" />
	<link>https://superstatisticienne.fr</link>
	<description>Statistiques, R et paillettes...</description>
	<lastBuildDate>Sat, 19 Nov 2016 14:52:42 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>Wordcloud avec R</title>
		<link>https://superstatisticienne.fr/wordcloud-avec-r/</link>
		<comments>https://superstatisticienne.fr/wordcloud-avec-r/#comments</comments>
		<pubDate>Sun, 29 Nov 2015 15:30:43 +0000</pubDate>
		<dc:creator><![CDATA[superstatisticienne]]></dc:creator>
				<category><![CDATA[DataViz]]></category>
		<category><![CDATA[R]]></category>
		<category><![CDATA[DataVisualisation]]></category>
		<category><![CDATA[Text-mining]]></category>
		<category><![CDATA[Wordcloud]]></category>

		<guid isPermaLink="false">http://superstatisticienne.fr/?p=506</guid>
		<description><![CDATA[Un wordcloud (ou nuage de mots-clés / nuage de tags) est une répresentation visuelle de mots dont la taille est proportionelle à la fréquence de ce mot dans un texte donné. Exemple : Avec R, il est assez facile de réaliser des wordcloud plutôt chouettes (je vous l&#8217;ai déjà dit, R c&#8217;est bien ;) ), [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Un <span style="color: #923887;"><strong>wordcloud</strong></span> (ou nuage de mots-clés / nuage de tags) est une répresentation visuelle de mots dont la taille est proportionelle à la fréquence de ce mot dans un texte donné.</p>
<p><u>Exemple</u> :</p>
<p><a href="http://superstatisticienne.fr/wp-content/uploads/2015/11/exWordcloud.png"><img src="http://superstatisticienne.fr/wp-content/uploads/2015/11/exWordcloud.png" alt="exemple_wordcloud" width="600" height="550" class="alignnone size-full wp-image-509" /></a></p>
<p>Avec R, il est assez facile de réaliser des wordcloud plutôt chouettes (je vous l&rsquo;ai déjà dit, <a href="http://superstatisticienne.fr/r-cest-bien/" title="r-cest-bien" target="_blank">R c&rsquo;est bien</a> ;) ), je vais donc vous montrer comment, avec un petit exemple en relation avec l&rsquo;actualité.</p>
<p><span id="more-506"></span></p>
<p>&nbsp;</p>
<p><span style="color: #923887;"><strong>- Charger les données -</strong></span></p>
<p></p><pre class="crayon-plain-tag">Texte <- readLines("HommageNationalHollande-27112015.txt", encoding = "utf-8")</pre><p> </p>
<p>> Il s&rsquo;agit du texte complet de l&rsquo;hommage aux victimes des attentats du 13 novembre 2015, fait par le président François Hollande le 27 novembre (disponible sur internet).</p>
<p>&nbsp;<br />
<span style="color: #923887;"><strong>- Charger les packages -</strong></span></p>
<p></p><pre class="crayon-plain-tag">library(tm)  # ce package propose un ensemble de fonctions facilitant le traitement de donnees textuelles
library(wordcloud)  # ce package permet la creation de wordcloud</pre><p> </p>
<p>&nbsp;<br />
<span style="color: #923887;"><strong>- Travail sur les données -</strong></span></p>
<p></p><pre class="crayon-plain-tag">text_corpus <- Corpus(VectorSource(Texte))
text_corpus <- tm_map(text_corpus, content_transformer(tolower))
text_corpus <- tm_map(text_corpus, removePunctuation)
text_corpus <- tm_map(text_corpus, function(x)removeWords(x,stopwords(kind = "fr")))</pre><p> </p>
<p>> <u>Explications</u> :</p>
<p>&#8211; La 1ère instruction permet de transformer le texte &laquo;&nbsp;brut&nbsp;&raquo; en un élément de classe &laquo;&nbsp;corpus&nbsp;&raquo; (classe du package &laquo;&nbsp;tm&nbsp;&raquo;), sur lequel un ensemble de fonctions de traitement de texte pourront être directement appliquées.<br />
&#8211; La 2nde instruction permet de transformer toutes les lettres majuscules en lettres minuscules (afin par exemple que &laquo;&nbsp;Hommes&nbsp;&raquo; et &laquo;&nbsp;hommes&nbsp;&raquo; soient traités pareil).<br />
&#8211; La 3ème instruction permet de supprimer automatiquement tous les caractères de ponctuations.<br />
&#8211; La dernière instruction permet de supprimer automatiquement une grande partie des mots &laquo;&nbsp;de base&nbsp;&raquo; d&rsquo;une langue donnée (ici le français avec l&rsquo;instruction : <em>kind = &laquo;&nbsp;fr&nbsp;&raquo;</em>, par défaut il s&rsquo;agit de l&rsquo;anglais), tels que par exemple : le, la, les, de, des, à, où, &#8230;</p>
<p>&nbsp;<br />
<span style="color: #923887;"><strong>- Wordcloud -</strong></span></p>
<p></p><pre class="crayon-plain-tag">set.seed(123456)  # permet de "fixer un graine" pour l'alea, afin de pouvoir regenerer plusieurs fois le meme wordcloud

wordcloud(text_corpus, max.words = 200, colors = brewer.pal(8, "Dark2"),  rot.per=0)</pre><p> </p>
<p><a href="http://superstatisticienne.fr/wp-content/uploads/2015/11/Wordcloud1.png"><img src="http://superstatisticienne.fr/wp-content/uploads/2015/11/Wordcloud1.png" alt="wordcloud1" width="642" height="382" class="alignnone size-full wp-image-518" /></a></p>
<p><u>Remarque</u> : On voit ici qu&rsquo;il reste encore certains mots qui ne sont pas particulièrement utiles pour ce wordcloud visant à mettre en valeurs les &laquo;&nbsp;grands thèmes&nbsp;&raquo; de ce discours d&rsquo;hommage. On va donc tenter d&rsquo;en supprimer quelques-uns pour voir si on obtient quelque chose de mieux.</p>
<p>&nbsp;<br />
<span style="color: #923887;"><strong>- Wordcloud : version 2 -</strong></span></p>
<p></p><pre class="crayon-plain-tag">text_corpus2 <- tm_map(text_corpus, function(x)removeWords(x,c("quils", "cestadire", "tout", "dun", "cest", "etaient", "etre", "parce", "ete", "sais")))  # n'importe quelle liste de mots peut egalement etre passee en argument de la fonction "removeWords"

set.seed(123456)
wordcloud(text_corpus2, max.words = 200, colors = brewer.pal(8, "Dark2"),  rot.per=0)</pre><p> </p>
<p><a href="http://superstatisticienne.fr/wp-content/uploads/2015/11/Wordcloud2.png"><img src="http://superstatisticienne.fr/wp-content/uploads/2015/11/Wordcloud2.png" alt="wordcloud2" width="642" height="382" class="alignnone size-full wp-image-519" /></a></p>
<p>> Ce wordcloud pourrait encore être retravaillé mais il est assez intéressant, notamment si on se concentre sur les mots apparaissant en bleu : <em>hommes</em>, <em>femmes</em>, <em>tous</em>, <em>comme</em>, <em>meme</em>, <em>nation</em>, retranscrivant bien le message général d&rsquo;unité et d&rsquo;égalité de ce discours.</p>
<p>&nbsp;<br />
<span style="color: #923887;"><strong>- Enregistrer son wordcloud dans un fichier externe -</strong></span></p>
<p></p><pre class="crayon-plain-tag">png("monwordcloud.png")
wordcloud(text_corpus2, max.words = 200, colors = brewer.pal(8, "Dark2"),  rot.per=0)
dev.off()</pre><p> </p>
<p>> Fonctionne aussi en remplaçant &laquo;&nbsp;png&nbsp;&raquo; par &laquo;&nbsp;jpeg&nbsp;&raquo;, &laquo;&nbsp;pdf&nbsp;&raquo;, &#8230;</p>
<p>&nbsp;<br />
<span style="color: #923887;"><strong>- Pour aller plus loin : personnalisation du wordcloud -</strong></span></p>
<p>La fonction &laquo;&nbsp;wordcloud&nbsp;&raquo; du package éponyme possède un certain nombre de paramètres permettant de personnaliser ses wordcloud :</p>
<ul>
<li>Tailles maxi et mini des mots affichés :<br />
<pre class="crayon-plain-tag">scale = c(4,0.5)</pre>
</li>
<li>Fréquence à partir de laquelle un mot sera retenu :<br />
<pre class="crayon-plain-tag">min.freq = 3</pre>
</li>
<li>Nombre maximum de mots à afficher :<br />
<pre class="crayon-plain-tag">max.words = Inf</pre>
</li>
<li>Affichage des mots dans un ordre aléatoire :<br />
<pre class="crayon-plain-tag">random.order = TRUE</pre>
</li>
<li>Choix de couleur de mot aléatoire :<br />
<pre class="crayon-plain-tag">random.color = FALSE</pre>
</li>
<li>Proportion de mots tournés à 90 degrés :<br />
<pre class="crayon-plain-tag">rot.per = 0.1</pre>
</li>
<li>Couleur des mots (du moins au plus fréquent) :<br />
<pre class="crayon-plain-tag">colors = "black"</pre>
</li>
<li>Autres paramètres pour le style des mots : type de police, taille des caractères, &#8230;</li>
</ul>
<p><u>Exemple</u> :</p>
<p></p><pre class="crayon-plain-tag">set.seed(123456)
wordcloud(text_corpus, max.words = 200, scale = c(5,0.2), colors = brewer.pal(8, "Paired"), vfont = c("gothic english","plain"), rot.per = 0.3)</pre><p> </p>
<p><a href="http://superstatisticienne.fr/wp-content/uploads/2015/11/Wordcloud3.png"><img src="http://superstatisticienne.fr/wp-content/uploads/2015/11/Wordcloud3.png" alt="wordcloud3" width="605" height="362" class="alignnone size-full wp-image-532" /></a></p>
<p><u>Remarque</u> : Pour le choix des couleurs, il est possible d&rsquo;obtenir facilement des dégradés (ou palettes) &laquo;&nbsp;tout prêts&nbsp;&raquo; grâce au package &laquo;&nbsp;<strong>RColorBrewer</strong>&nbsp;&raquo; (installé avec le package &laquo;&nbsp;wordcloud&nbsp;&raquo;) et à la fonction &laquo;&nbsp;<em>brewer.pal</em>&nbsp;&raquo; utilisée ici dans les exemples.<br />
Ci-dessous les différentes palettes de couleurs disponibles :<br />
<a href="http://superstatisticienne.fr/wp-content/uploads/2015/11/RColorBrewer.png"><img src="http://superstatisticienne.fr/wp-content/uploads/2015/11/RColorBrewer.png" alt="RColorBrewer" width="1366" height="651" class="alignnone size-full wp-image-534" /></a><br />
<span style="color: #923887;"><strong><em>Et vous, avez-vous des exemples de wordcloud particulièrement réussis à partager ?</em></strong></span></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>https://superstatisticienne.fr/wordcloud-avec-r/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
