Commit bb9f0ec0 authored by Laurence Farhi's avatar Laurence Farhi

Journal de bord de ARnad pour exemple Module2 exo4

parent 73a90f74
Date,Keyword
2011-02-08,R
2011-02-08,Blog
2011-02-08,WP8
2011-02-08,WP8
2011-02-08,WP8
2011-02-17,WP0
2011-02-23,WP0
2011-04-05,Workload
2011-05-17,Workload
2011-05-23,WP8
2011-05-25,GameTheory
2011-05-30,BOINC
2011-06-06,WP4
2011-06-15,Workload
2011-06-20,Gradient
2011-06-29,SG
2011-07-07,WP7
2011-07-25,WP4
2011-08-16,BOINC
2011-08-16,BOINC
2011-10-13,WP0
2011-10-14,Workload
2011-11-30,Blog
2011-11-30,SG
2012-01-09,WP1
2012-01-20,Blog
2012-01-20,SG
2012-01-23,Blog
2012-01-23,WP8
2012-01-23,WP4
2012-01-24,Blog
2012-01-24,WP4
2012-01-24,WP0
2012-01-26,WP6
2012-01-26,Blog
2012-01-27,Blog
2012-01-27,WP4
2012-02-10,WP7
2012-02-13,WP4
2012-03-01,WP4
2012-03-05,git
2012-03-07,WP7
2012-03-15,WP4
2012-03-16,BOINC
2012-03-20,WP7
2012-03-20,OrgMode
2012-03-28,noexport
2012-03-29,WP4
2012-04-19,WP4
2012-05-09,WP4
2012-05-09,autotuning
2012-05-10,WP4
2012-05-13,WP6
2012-05-22,WP3
2012-05-24,WP3
2012-05-29,WP3
2012-06-07,WP7
2012-06-08,WP7
2012-06-13,WP0
2012-06-19,WP7
2012-06-27,BOINC
2012-08-06,R
2012-08-08,Epistemology
2012-08-09,Epistemology
2012-08-11,OrgMode
2012-08-20,WP4
2012-09-04,WP7
2012-09-10,WP4
2012-09-11,WP3
2012-09-13,WP3
2012-09-14,WP4
2012-09-24,Blog
2012-09-27,BOINC
2012-09-28,BOINC
2012-10-16,R
2012-11-07,WP7
2012-11-18,Argonne
2012-11-18,autotuning
2012-11-19,Argonne
2012-12-18,Argonne
2012-12-18,Argonne
2013-01-03,Argonne
2013-01-09,WP4
2013-01-11,WP4
2013-01-17,WP0
2013-01-17,WP4
2013-01-22,WP4
2013-01-24,OrgMode
2013-01-24,git
2013-01-29,WP3
2013-01-31,WP4
2013-02-01,WP0
2013-02-05,WP3
2013-02-05,WP7
2013-02-05,WP3
2013-02-11,R
2013-02-11,WP4
2013-03-05,WP4
2013-03-06,SG
2013-03-12,WP4
2013-03-14,Blog
2013-03-17,OrgMode
2013-03-18,WP3
2013-03-18,WP3
2013-03-19,Epistemology
2013-03-20,OrgMode
2013-03-21,WP3
2013-03-22,WP4
2013-03-26,WP8
2013-03-28,WP4
2013-04-02,WP8
2013-04-03,Blog
2013-04-17,WP4
2013-05-07,WP8
2013-05-14,WP4
2013-05-15,WP3
2013-05-21,WP4
2013-05-21,R
2013-05-21,R
2013-06-26,Blog
2013-06-26,WP4
2013-07-02,GameTheory
2013-07-04,WP4
2013-07-05,WP7
2013-07-10,Blog
2013-08-13,WP4
2013-09-03,WP4
2013-09-24,WP4
2013-09-25,BOINC
2013-09-27,BOINC
2013-09-30,BOINC
2013-10-01,BOINC
2013-10-02,BOINC
2013-10-09,WP4
2013-10-10,WP4
2013-10-10,WP4
2013-10-23,WP7
2013-11-17,WP8
2013-11-18,WP4
2013-11-18,WP4
2013-11-19,WP4
2013-11-20,R
2013-11-25,Argonne
2013-11-26,R
2013-11-27,Argonne
2013-11-27,Argonne
2013-12-06,WP4
2013-12-11,Argonne
2013-12-12,Argonne
2014-01-16,WP4
2014-01-16,Argonne
2014-01-30,Argonne
2014-02-14,Argonne
2014-06-23,WP8
2014-07-02,OrgMode
2014-08-26,autotuning
2014-09-04,GameTheory
2014-09-09,WP4
2014-09-16,WP8
2014-09-19,INRIA
2014-09-22,R
2014-10-20,WP7
2014-10-29,WP4
2014-11-10,WP4
2014-11-16,WP4
2014-11-17,WP4
2014-11-18,WP8
2014-11-24,Argonne
2014-12-09,WP8
2014-12-16,WP8
2015-01-07,R
2015-01-22,LIG
2015-01-23,WP1
2015-02-04,Stats
2015-02-05,WP4
2015-02-06,LIG
2015-02-18,WP4
2015-02-25,Teaching
2015-02-25,Vulgarization
2015-02-26,WP7
2015-02-26,WP7
2015-03-05,WP4
2015-03-10,WP7
2015-03-12,Vulgarization
2015-03-16,WP7
2015-03-20,LIG
2015-03-24,Teaching
2015-03-26,WP7
2015-03-31,WP7
2015-04-01,LIG
2015-04-02,OrgMode
2015-04-02,WP7
2015-04-06,Teaching
2015-04-11,WP4
2015-04-24,WP7
2015-04-30,WP7
2015-04-30,WP7
2015-05-07,LIG
2015-05-13,WP7
2015-05-19,WP8
2015-05-20,WP8
2015-05-21,WP8
2015-05-28,WP7
2015-06-12,WP4
2015-06-17,WP4
2015-06-18,LIG
2015-06-29,Argonne
2015-07-01,R
2015-07-22,WP4
2015-07-22,WP8
2015-07-24,Teaching
2015-07-24,Teaching
2015-07-31,R
2015-08-09,WP7
2015-08-09,WP7
2015-08-25,WP8
2015-08-26,R
2015-09-02,Stats
2015-09-04,WP7
2015-09-14,WP7
2015-09-21,WP4
2015-09-21,HOME
2015-09-23,WP4
2015-09-23,HOME
2015-10-01,POLARIS
2015-10-05,WP4
2015-10-09,HOME
2015-10-14,WP8
2015-10-26,WP4
2015-11-03,Teaching
2015-11-09,WP4
2015-11-09,WP7
2015-11-10,HOME
2015-11-12,LIG
2015-11-16,LIG
2015-11-16,LIG
2015-11-17,WP4
2015-11-18,HOME
2015-11-19,LIG
2015-11-27,POLARIS
2015-12-03,WP8
2015-12-03,R
2015-12-07,WP4
2015-12-09,POLARIS
2015-12-10,POLARIS
2015-12-10,GameTheory
2015-12-16,Teaching
2015-12-17,POLARIS
2015-12-22,Python
2015-12-23,HOME
2016-01-06,LIG
2016-01-06,WP7
2016-01-06,POLARIS
2016-01-06,HOME
2016-01-06,POLARIS
2016-01-11,Python
2016-01-11,R
2016-01-12,WP8
2016-01-13,Teaching
2016-01-15,WP8
2016-01-19,WP4
2016-01-19,Europe
2016-01-20,autotuning
2016-01-21,POLARIS
2016-01-22,INRIA
2016-01-25,WP7
2016-01-26,R
2016-01-26,POLARIS
2016-01-26,Teaching
2016-01-26,Teaching
2016-01-27,LIG
2016-01-27,WP4
2016-01-28,Europe
2016-01-29,WP4
2016-02-01,POLARIS
2016-02-04,SG
2016-02-08,LIG
2016-02-08,LIG
2016-02-25,Python
2016-03-02,autotuning
2016-03-04,INRIA
2016-03-07,git
2016-03-07,OrgMode
2016-03-10,POLARIS
2016-03-10,Python
2016-03-14,LIG
2016-03-15,LIG
2016-03-17,git
2016-03-17,HOME
2016-03-21,WP4
2016-03-21,R
2016-03-24,POLARIS
2016-03-24,GameTheory
2016-03-28,OrgMode
2016-03-29,WP4
2016-03-29,Europe
2016-03-29,OrgMode
2016-03-29,git
2016-03-29,OrgMode
2016-03-31,git
2016-04-01,POLARIS
2016-04-07,Stats
2016-04-07,POLARIS
2016-04-08,Stats
2016-04-11,LIG
2016-04-13,R
2016-04-15,Stats
2016-04-25,Teaching
2016-04-28,POLARIS
2016-04-28,POLARIS
2016-04-29,SG
2016-04-29,INRIA
2016-05-02,LIG
2016-05-02,WP4
2016-05-04,LIG
2016-05-10,SG
2016-05-10,Seminar
2016-05-11,WP4
2016-05-12,POLARIS
2016-05-12,WP4
2016-05-19,WP4
2016-05-25,POLARIS
2016-05-27,INRIA
2016-05-30,LIG
2016-05-30,INRIA
2016-05-30,R
2016-06-01,HOME
2016-06-02,POLARIS
2016-06-03,Stats
2016-06-06,LIG
2016-06-08,LIG
2016-06-16,POLARIS
2016-06-17,R
2016-06-22,POLARIS
2016-06-22,Europe
2016-06-27,WP4
2016-06-27,autotuning
2016-06-28,WP4
2016-06-28,autotuning
2016-06-28,HACSPECIS
2016-06-29,WP4
2016-06-29,Europe
2016-06-29,WP7
2016-07-08,WP8
2016-07-11,Europe
2016-07-19,twitter
2016-07-19,R
2016-07-19,R
2016-07-20,Teaching
2016-07-20,WP4
2016-07-21,twitter
2016-07-25,LaTeX
2016-07-27,git
2016-08-25,HACSPECIS
2016-08-31,HACSPECIS
2016-09-02,Europe
2016-09-08,POLARIS
2016-09-08,INRIA
2016-09-08,INRIA
2016-09-12,POLARIS
2016-09-22,POLARIS
2016-09-22,HOME
2016-09-28,Europe
2016-09-29,POLARIS
2016-10-04,Europe
2016-10-10,LIG
2016-10-12,POLARIS
2016-11-10,BULL
2016-11-13,BULL
2016-11-15,BULL
2016-11-15,BULL
2016-11-18,INRIA
2016-11-21,git
2016-11-23,git
2016-11-23,WP7
2016-11-24,POLARIS
2016-12-05,POLARIS
2016-12-08,LIG
2016-12-14,Orange
2016-12-15,POLARIS
2016-12-16,R
2016-12-16,INRIA
2016-12-16,Vulgarization
2017-01-09,R
2017-01-12,POLARIS
2017-01-13,Europe
2017-01-16,LIG
2017-01-19,POLARIS
2017-01-19,POLARIS
2017-01-19,Teaching
2017-01-20,POLARIS
2017-01-20,INRIA
2017-01-24,HACSPECIS
2017-01-26,Teaching
2017-01-26,POLARIS
2017-01-26,POLARIS
2017-01-30,Europe
2017-02-01,WP4
2017-02-01,Europe
2017-02-02,Europe
2017-02-03,POLARIS
2017-02-08,WP4
2017-02-08,Teaching
2017-02-09,Seminar
2017-02-09,POLARIS
2017-02-13,LIG
2017-02-15,POLARIS
2017-02-16,POLARIS
2017-02-17,INRIA
2017-03-01,Seminar
2017-03-03,Seminar
2017-03-07,Seminar
2017-03-07,Teaching
2017-03-08,Teaching
2017-03-09,WP4
2017-03-13,LIG
2017-03-13,noexport
2017-03-13,noexport
2017-03-13,Teaching
2017-03-16,POLARIS
2017-03-16,POLARIS
2017-03-20,Teaching
2017-03-23,Seminar
2017-03-23,POLARIS
2017-03-23,noexport
2017-03-24,INRIA
2017-03-28,Seminar
2017-04-02,Teaching
2017-04-04,Teaching
2017-04-06,POLARIS
2017-04-06,Europe
2017-04-06,POLARIS
2017-04-06,Seminar
2017-04-07,Teaching
2017-04-27,POLARIS
2017-05-02,R
2017-05-05,INRIA
2017-05-10,POLARIS
2017-05-11,POLARIS
2017-05-11,POLARIS
2017-05-12,Teaching
2017-05-15,LIG
2017-05-22,INRIA
2017-06-07,noexport
2017-06-08,LIG
2017-06-09,INRIA
2017-06-12,LIG
2017-06-14,INRIA
2017-06-15,INRIA
2017-06-16,INRIA
2017-06-20,Teaching
2017-06-21,Teaching
2017-06-22,WP8
2017-06-23,Teaching
2017-06-27,R
2017-06-27,R
2017-06-27,POLARIS
2017-06-27,Seminar
2017-07-03,R
2017-07-06,SG
2017-07-06,PF
2017-07-11,Teaching
2017-07-24,Vulgarization
2017-07-26,Europe
2017-09-01,R
2017-09-01,WP8
2017-09-04,Seminar
2017-09-05,Teaching
2017-09-06,Teaching
2017-09-08,INRIA
2017-09-18,LIG
2017-09-28,POLARIS
2017-09-28,POLARIS
2017-10-03,Teaching
2017-10-06,INRIA
2017-10-06,OrgMode
2017-10-09,LIG
2017-10-16,HACSPECIS
2017-10-18,WP8
2017-10-25,HACSPECIS
2017-10-25,HACSPECIS
2017-10-26,Seminar
2017-10-27,R
2017-11-06,POLARIS
2017-11-07,OrgMode
2017-11-10,INRIA
2017-11-13,LIG
2017-11-24,R
2017-11-24,R
2017-11-24,R
2017-11-24,R
2017-11-29,LIG
2017-12-07,Europe
2017-12-07,WP8
2017-12-07,R
2017-12-07,Seminar
2017-12-08,Teaching
2017-12-08,INRIA
2017-12-08,WP7
2017-12-08,WP7
2017-12-11,Teaching
2017-12-11,LIG
2017-12-11,R
2017-12-11,Python
2017-12-11,R
2017-12-12,R
2017-12-12,R
2017-12-12,R
2017-12-12,R
2017-12-12,Europe
2017-12-14,Seminar
2017-12-15,R
2017-12-15,Seminar
2017-12-15,Teaching
2017-12-18,Teaching
2017-12-18,Seminar
2017-12-19,LIG
2017-12-21,Seminar
2018-01-08,Teaching
2018-01-11,Seminar
2018-01-11,Teaching
2018-01-15,Teaching
2018-01-17,HACSPECIS
2018-01-18,Seminar
2018-01-18,Stats
2018-01-22,R
2018-01-23,R
2018-02-06,R
2018-02-06,R
2018-02-06,POLARIS
2018-02-28,INRIA
2018-03-01,Seminar
2018-03-02,HACSPECIS
2018-03-02,HACSPECIS
2018-03-06,POLARIS
2018-03-08,Seminar
2018-03-08,HOME
2018-03-09,INRIA
2018-03-19,Europe
2018-03-22,R
2018-03-22,Seminar
2018-04-04,Python
2018-04-04,Python
2018-04-05,LIG
2018-04-05,Seminar
2018-04-26,POLARIS
2018-04-26,Seminar
2018-04-27,INRIA
2018-05-02,HOME
2018-05-03,INRIA
2018-05-03,Seminar
2018-05-03,Teaching
2018-05-04,OrgMode
2018-05-08,Seminar
2018-05-14,LIG
2018-05-15,Seminar
2018-05-17,POLARIS
2018-05-30,INRIA
2018-05-31,LIG
2018-06-01,INRIA
2018-06-07,Seminar
2018-06-08,Seminar
2018-06-11,LIG
2018-06-12,R
2018-06-22,WP4
2018-06-26,INRIA
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
<head>
<title>Analyse des mots-clés de mon journal</title>
<!-- 2018-06-29 Fri 11:21 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="generator" content="Org-mode" />
<meta name="author" content="Laurence Farhi" />
<style type="text/css">
<!--/*--><![CDATA[/*><!--*/
.title { text-align: center; }
.todo { font-family: monospace; color: red; }
.done { color: green; }
.tag { background-color: #eee; font-family: monospace;
padding: 2px; font-size: 80%; font-weight: normal; }
.timestamp { color: #bebebe; }
.timestamp-kwd { color: #5f9ea0; }
.right { margin-left: auto; margin-right: 0px; text-align: right; }
.left { margin-left: 0px; margin-right: auto; text-align: left; }
.center { margin-left: auto; margin-right: auto; text-align: center; }
.underline { text-decoration: underline; }
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
p.verse { margin-left: 3%; }
pre {
border: 1px solid #ccc;
box-shadow: 3px 3px 3px #eee;
padding: 8pt;
font-family: monospace;
overflow: auto;
margin: 1.2em;
}
pre.src {
position: relative;
overflow: visible;
padding-top: 1.2em;
}
pre.src:before {
display: none;
position: absolute;
background-color: white;
top: -10px;
right: 10px;
padding: 3px;
border: 1px solid black;
}
pre.src:hover:before { display: inline;}
pre.src-sh:before { content: 'sh'; }
pre.src-bash:before { content: 'sh'; }
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
pre.src-R:before { content: 'R'; }
pre.src-perl:before { content: 'Perl'; }
pre.src-java:before { content: 'Java'; }
pre.src-sql:before { content: 'SQL'; }
table { border-collapse:collapse; }
caption.t-above { caption-side: top; }
caption.t-bottom { caption-side: bottom; }
td, th { vertical-align:top; }
th.right { text-align: center; }
th.left { text-align: center; }
th.center { text-align: center; }
td.right { text-align: right; }
td.left { text-align: left; }
td.center { text-align: center; }
dt { font-weight: bold; }
.footpara:nth-child(2) { display: inline; }
.footpara { display: block; }
.footdef { margin-bottom: 1em; }
.figure { padding: 1em; }
.figure p { text-align: center; }
.inlinetask {
padding: 10px;
border: 2px solid gray;
margin: 10px;
background: #ffffcc;
}
#org-div-home-and-up
{ text-align: right; font-size: 70%; white-space: nowrap; }
textarea { overflow-x: auto; }
.linenr { font-size: smaller }
.code-highlighted { background-color: #ffff00; }
.org-info-js_info-navigation { border-style: none; }
#org-info-js_console-label
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
.org-info-js_search-highlight
{ background-color: #ffff00; color: #000000; font-weight: bold; }
/*]]>*/-->
</style>
<link rel="stylesheet" type="text/css" href="http://www.pirilampo.org/styles/readtheorg/css/htmlize.css"/>
<link rel="stylesheet" type="text/css" href="http://www.pirilampo.org/styles/readtheorg/css/readtheorg.css"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
<script type="text/javascript" src="http://www.pirilampo.org/styles/lib/js/jquery.stickytableheaders.js"></script>
<script type="text/javascript" src="http://www.pirilampo.org/styles/readtheorg/js/readtheorg.js"></script>
<script type="text/javascript">
/*
@licstart The following is the entire license notice for the
JavaScript code in this tag.
Copyright (C) 2012-2013 Free Software Foundation, Inc.
The JavaScript code in this tag is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version. The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.
@licend The above is the entire license notice
for the JavaScript code in this tag.
*/
<!--/*--><![CDATA[/*><!--*/
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
</script>
</head>
<body>
<div id="content">
<h1 class="title">Analyse des mots-clés de mon journal</h1>
<div id="table-of-contents">
<h2>Table des matières</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#sec-1">1. Mise en forme des données</a></li>
<li><a href="#sec-2">2. Statistiques de base</a></li>
<li><a href="#sec-3">3. Représentations graphiques</a></li>
</ul>
</div>
</div>
<p>
J'ai la chance de ne pas avoir de comptes à rendre trop précis sur le
temps que je passe à faire telle ou telle chose. Ça tombe bien car je
n'aime pas vraiment suivre précisément et quotidiennement le temps que
je passe à faire telle ou telle chose. Par contre, comme vous avez pu
le voir dans une des vidéos de ce module, je note beaucoup
d'information dans mon journal et j'étiquette (quand j'y pense) ces
informations. Je me suis dit qu'il pourrait être intéressant de voir
si l'évolution de l'utilisation de ces étiquettes révélait quelque
chose sur mes centres d'intérêts professionnels. Je ne compte pas en
déduire grand chose de significatif sur le plan statistique vu que je
sais que ma rigueur dans l'utilisation de ces étiquettes et leur
sémantique a évolué au fil des années mais bon, on va bien voir ce
qu'on y trouve.
</p>
<div id="outline-container-sec-1" class="outline-2">
<h2 id="sec-1"><span class="section-number-2">1</span> Mise en forme des données</h2>
<div class="outline-text-2" id="text-1">
<p>
Mon journal est stocké dans <code>/home/alegrand/org/journal.org</code>. Les
entrées de niveau 1 (une étoile) indiquent l'année, celles de niveau 2
(2 étoiles) le mois, celles de niveau 3 (3 étoiles) la date du jour et
enfin, celles de profondeur plus importantes ce sur quoi j'ai
travaillé ce jour là. Ce sont généralement celles-ci qui sont
étiquetées avec des mots-clés entre ":" à la fin de la ligne.
</p>
<p>
Je vais donc chercher à extraire les lignes comportant trois <code>*</code> en
début de ligne et celles commençant par une <code>*</code> et terminant par des
mots-clés (des <code>:</code> suivis éventuellement d'un espace). L'expression
régulière n'est pas forcément parfaite mais ça me donne une première
idée de ce que j'aurais besoin de faire en terme de remise en forme.
</p>
<div class="org-src-container">
<pre class="src src-shell">grep -e '^\*\*\* ' -e '^\*.*:.*: *$' ~/org/journal.org | tail -n 20
</pre>
</div>
<pre class="example">
*** 2018-06-01 vendredi
**** CP Inria du 01/06/18 :POLARIS:INRIA:
*** 2018-06-04 lundi
*** 2018-06-07 jeudi
**** The Cognitive Packet Network - Reinforcement based Network Routing with Random Neural Networks (Erol Gelenbe) :Seminar:
*** 2018-06-08 vendredi
**** The credibility revolution in psychological science: the view from an editor's desk (Simine Vazire, UC DAVIS) :Seminar:
*** 2018-06-11 lundi
**** LIG leaders du 11 juin 2018 :POLARIS:LIG:
*** 2018-06-12 mardi
**** geom_ribbon with discrete x scale :R:
*** 2018-06-13 mercredi
*** 2018-06-14 jeudi
*** 2018-06-20 mercredi
*** 2018-06-21 jeudi
*** 2018-06-22 vendredi
**** Discussion Nicolas Benoit (TGCC, Bruyère) :SG:WP4:
*** 2018-06-25 lundi
*** 2018-06-26 mardi
**** Point budget/contrats POLARIS :POLARIS:INRIA:
</pre>
<p>
OK, je suis sur la bonne voie. Je vois qu'il y a pas mal d'entrées
sans annotations. Tant pis. Il y a aussi souvent plusieurs mots-clés
pour une même date et pour pouvoir bien rajouter la date du jour en
face de chaque mots-clés, je vais essayer un vrai langage plutôt que
d'essayer de faire ça à coup de commandes shell. Je suis de l'ancienne
génération donc j'ai plus l'habitude de perl que de python pour ce
genre de choses. Curieusement, ça s'écrit bien plus facilement (ça m'a
pris 5 minutes) que ça ne se relit&#x2026; &#9786;
</p>
<div class="org-src-container">
<pre class="src src-perl">open INPUT, "/home/alegrand/org/journal.org" or die $_;
open OUTPUT, "&gt; ./org_keywords.csv" or die;
$date="";
print OUTPUT "Date,Keyword\n";
%skip = my %params = map { $_ =&gt; 1 } ("", "ATTACH", "Alvin", "Fred", "Mt", "Henri", "HenriRaf");
while(defined($line=&lt;INPUT&gt;)) {
chomp($line);
if($line =~ '^\*\*\* (20[\d\-]*)') {
$date=$1;
}
if($line =~ '^\*.*(:\w*:)\s*$') {
@kw=split(/:/,$1);
if($date eq "") { next;}
foreach $k (@kw) {
if(exists($skip{$k})) { next;}
print OUTPUT "$date,$k\n";
}
}
}
</pre>
</div>
<p>
Vérifions à quoi ressemble le résultat:
</p>
<div class="org-src-container">
<pre class="src src-shell">head org_keywords.csv
echo "..."
tail org_keywords.csv
</pre>
</div>
<pre class="example">
Date,Keyword
2011-02-08,R
2011-02-08,Blog
2011-02-08,WP8
2011-02-08,WP8
2011-02-08,WP8
2011-02-17,WP0
2011-02-23,WP0
2011-04-05,Workload
2011-05-17,Workload
...
2018-05-17,POLARIS
2018-05-30,INRIA
2018-05-31,LIG
2018-06-01,INRIA
2018-06-07,Seminar
2018-06-08,Seminar
2018-06-11,LIG
2018-06-12,R
2018-06-22,WP4
2018-06-26,INRIA
</pre>
<p>
C'est parfait!
</p>
</div>
</div>
<div id="outline-container-sec-2" class="outline-2">
<h2 id="sec-2"><span class="section-number-2">2</span> Statistiques de base</h2>
<div class="outline-text-2" id="text-2">
<p>
Je suis bien plus à l'aise avec R qu'avec python. J'utiliserai les
package du tidyverse dès que le besoin s'en fera sentir. Commençons
par lire ces données:
</p>
<div class="org-src-container">
<pre class="src src-R">library(lubridate) # à installer via install.package("tidyverse")
library(dplyr)
df=read.csv("./org_keywords.csv",header=T)
df$Year=year(date(df$Date))
</pre>
</div>
<pre class="example">
Attachement du package : ‘lubridate’
The following object is masked from ‘package:base’:
date
Attachement du package : ‘dplyr’
The following objects are masked from ‘package:lubridate’:
intersect, setdiff, union
The following objects are masked from ‘package:stats’:
filter, lag
The following objects are masked from ‘package:base’:
intersect, setdiff, setequal, union
</pre>
<p>
Alors, à quoi ressemblent ces données:
</p>
<div class="org-src-container">
<pre class="src src-R">str(df)
summary(df)
</pre>
</div>
<pre class="example">
'data.frame': 566 obs. of 3 variables:
$ Date : Factor w/ 420 levels "2011-02-08","2011-02-17",..: 1 1 1 1 1 2 3 4 5 6 ...
$ Keyword: Factor w/ 36 levels "Argonne","autotuning",..: 22 3 36 36 36 30 30 29 29 36 ...
$ Year : num 2011 2011 2011 2011 2011 ...
Date Keyword Year
2011-02-08: 5 WP4 : 77 Min. :2011
2016-01-06: 5 POLARIS : 56 1st Qu.:2013
2016-03-29: 5 R : 48 Median :2016
2017-12-11: 5 LIG : 40 Mean :2015
2017-12-12: 5 Teaching: 38 3rd Qu.:2017
2016-01-26: 4 WP7 : 36 Max. :2018
(Other) :537 (Other) :271
</pre>
<p>
Les types ont l'air correct, 568 entrées, tout va bien.
</p>
<div class="org-src-container">
<pre class="src src-R">df %&gt;% group_by(Keyword, Year) %&gt;% summarize(Count=n()) %&gt;%
ungroup() %&gt;% arrange(Keyword,Year) -&gt; df_summarized
df_summarized
</pre>
</div>
<pre class="example">
# A tibble: 120 x 3
Keyword Year Count
&lt;fct&gt; &lt;dbl&gt; &lt;int&gt;
1 Argonne 2012 4
2 Argonne 2013 6
3 Argonne 2014 4
4 Argonne 2015 1
5 autotuning 2012 2
6 autotuning 2014 1
7 autotuning 2016 4
8 Blog 2011 2
9 Blog 2012 6
10 Blog 2013 4
# ... with 110 more rows
</pre>
<p>
Commençons par compter combien d'annotation je fais par an.
</p>
<div class="org-src-container">
<pre class="src src-R">df_summarized_total_year = df_summarized %&gt;% group_by(Year) %&gt;% summarize(Cout=sum(Count))
df_summarized_total_year
</pre>
</div>
<pre class="example">
# A tibble: 8 x 2
Year Cout
&lt;dbl&gt; &lt;int&gt;
1 2011 24
2 2012 57
3 2013 68
4 2014 21
5 2015 80
6 2016 133
7 2017 135
8 2018 48
</pre>
<p>
Ah, visiblement, je m'améliore au fil du temps et en 2014, j'ai oublié
de le faire régulièrement.
</p>
<p>
L'annotation étant libre, certains mots-clés sont peut-être très peu
présents. Regardons ça.
</p>
<div class="org-src-container">
<pre class="src src-R">df_summarized %&gt;% group_by(Keyword) %&gt;% summarize(Count=sum(Count)) %&gt;% arrange(Count) %&gt;% as.data.frame()
</pre>
</div>
<pre class="example">
Keyword Count
1 Gradient 1
2 LaTeX 1
3 Orange 1
4 PF 1
5 twitter 2
6 WP1 2
7 WP6 2
8 Epistemology 3
9 BULL 4
10 Vulgarization 4
11 Workload 4
12 GameTheory 5
13 noexport 5
14 autotuning 7
15 Python 7
16 Stats 7
17 WP0 7
18 SG 8
19 git 9
20 HACSPECIS 10
21 Blog 12
22 BOINC 12
23 HOME 12
24 WP3 12
25 OrgMode 14
26 Argonne 15
27 Europe 18
28 Seminar 28
29 WP8 28
30 INRIA 30
31 WP7 36
32 Teaching 38
33 LIG 40
34 R 48
35 POLARIS 56
36 WP4 77
</pre>
<p>
OK, par la suite, je me restraindrai probablement ceux qui
apparaissent au moins trois fois.
</p>
</div>
</div>
<div id="outline-container-sec-3" class="outline-2">
<h2 id="sec-3"><span class="section-number-2">3</span> Représentations graphiques</h2>
<div class="outline-text-2" id="text-3">
<p>
Pour bien faire, il faudrait que je mette une sémantique et une
hiérarchie sur ces mots-clés mais je manque de temps là. Comme
j'enlève les mots-clés peu fréquents, je vais quand même aussi
rajouter le nombre total de mots-clé pour avoir une idée de ce que
j'ai perdu. Tentons une première représentation graphique:
</p>
<div class="org-src-container">
<pre class="src src-R">library(ggplot2)
df_summarized %&gt;% filter(Count &gt; 3) %&gt;%
ggplot(aes(x=Year, y=Count)) +
geom_bar(aes(fill=Keyword),stat="identity") +
geom_point(data=df_summarized %&gt;% group_by(Year) %&gt;% summarize(Count=sum(Count))) +
theme_bw()
</pre>
</div>
<div class="figure">
<p><img src="barchart1.png" alt="barchart1.png" />
</p>
</div>
<p>
Aouch. C'est illisible avec une telle palette de couleurs mais vu
qu'il y a beaucoup de valeurs différences, difficile d'utiliser une
palette plus discriminante. Je vais quand même essayer rapidement
histoire de dire&#x2026; Pour ça, j'utiliserai une palette de couleur
("Set1") où les couleurs sont toutes bien différentes mais elle n'a
que 9 couleurs. Je vais donc commencer par sélectionner les 9
mots-clés les plus fréquents.
</p>
<div class="org-src-container">
<pre class="src src-R">library(ggplot2)
frequent_keywords = df_summarized %&gt;% group_by(Keyword) %&gt;%
summarize(Count=sum(Count)) %&gt;% arrange(Count) %&gt;%
as.data.frame() %&gt;% tail(n=9)
df_summarized %&gt;% filter(Keyword %in% frequent_keywords$Keyword) %&gt;%
ggplot(aes(x=Year, y=Count)) +
geom_bar(aes(fill=Keyword),stat="identity") +
geom_point(data=df_summarized %&gt;% group_by(Year) %&gt;% summarize(Count=sum(Count))) +
theme_bw() + scale_fill_brewer(palette="Set1")
</pre>
</div>
<div class="figure">
<p><img src="barchart2.png" alt="barchart2.png" />
</p>
</div>
<p>
OK. Visiblement, la part liée à l'administration (<code>Inria</code>, <code>LIG</code>, <code>POLARIS</code>)
et à l'enseignement (<code>Teaching</code>) augmente. L'augmentation des parties
sur <code>R</code> est à mes yeux signe d'une amélioration de ma maîtrise de
l'outil. L'augmentation de la partie <code>Seminar</code> ne signifie pas grand
chose car ce n'est que récemment que j'ai commencé à étiqueter
systématiquement les notes que je prenais quand j'assiste à un
exposé. Les étiquettes sur <code>WP</code> ont trait à la terminologie d'un ancien
projet ANR que j'ai continuer à utiliser (<code>WP4</code> = prédiction de
performance HPC, <code>WP7</code> = analyse et visualisation, <code>WP8</code> = plans
d'expérience et moteurs d'expérimentation, &#x2026;). Le fait que <code>WP4</code>
diminue est plutôt le fait que les informations à ce sujet sont
maintenant plutôt les journaux de mes doctorants qui réalisent
vraiment les choses que je ne fais que superviser.
</p>
<p>
Bon, une analyse de ce genre ne serait pas digne de ce nom sans un
<i>wordcloud</i> (souvent illisible, mais tellement sexy! &#9786;). Pour ça, je
m'inspire librement de ce post:
<a href="http://onertipaday.blogspot.com/2011/07/word-cloud-in-r.html">http://onertipaday.blogspot.com/2011/07/word-cloud-in-r.html</a>
</p>
<div class="org-src-container">
<pre class="src src-R">library(wordcloud) # à installer via install.package("wordcloud")
library(RColorBrewer)
pal2 &lt;- brewer.pal(8,"Dark2")
df_summarized %&gt;% group_by(Keyword) %&gt;% summarize(Count=sum(Count)) -&gt; df_summarized_keyword
wordcloud(df_summarized_keyword$Keyword, df_summarized_keyword$Count,
random.order=FALSE, rot.per=.15, colors=pal2, vfont=c("sans serif","plain"))
</pre>
</div>
<div class="figure">
<p><img src="wordcloud.png" alt="wordcloud.png" />
</p>
</div>
<p>
Bon&#x2026; voilà, c'est "joli" mais sans grand intérêt, tout
particulièrement quand il y a si peu de mots différents.
</p>
</div>
</div>
</div>
<div id="postamble" class="status">
<p class="author">Auteur: Laurence Farhi</p>
<p class="date">Created: 2018-06-29 Fri 11:21</p>
<p class="creator"><a href="http://www.gnu.org/software/emacs/">Emacs</a> 25.3.1 (<a href="http://orgmode.org">Org</a> mode 8.2.10)</p>
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
</div>
</body>
</html>
#+TITLE: Analyse des mots-clés de mon journal
#+LANGUAGE: fr
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="http://www.pirilampo.org/styles/readtheorg/css/htmlize.css"/>
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="http://www.pirilampo.org/styles/readtheorg/css/readtheorg.css"/>
#+HTML_HEAD: <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
#+HTML_HEAD: <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
#+HTML_HEAD: <script type="text/javascript" src="http://www.pirilampo.org/styles/lib/js/jquery.stickytableheaders.js"></script>
#+HTML_HEAD: <script type="text/javascript" src="http://www.pirilampo.org/styles/readtheorg/js/readtheorg.js"></script>
#+PROPERTY: header-args :session :exports both :eval never-export
J'ai la chance de ne pas avoir de comptes à rendre trop précis sur le
temps que je passe à faire telle ou telle chose. Ça tombe bien car je
n'aime pas vraiment suivre précisément et quotidiennement le temps que
je passe à faire telle ou telle chose. Par contre, comme vous avez pu
le voir dans une des vidéos de ce module, je note beaucoup
d'information dans mon journal et j'étiquette (quand j'y pense) ces
informations. Je me suis dit qu'il pourrait être intéressant de voir
si l'évolution de l'utilisation de ces étiquettes révélait quelque
chose sur mes centres d'intérêts professionnels. Je ne compte pas en
déduire grand chose de significatif sur le plan statistique vu que je
sais que ma rigueur dans l'utilisation de ces étiquettes et leur
sémantique a évolué au fil des années mais bon, on va bien voir ce
qu'on y trouve.
* Mise en forme des données
Mon journal est stocké dans ~/home/alegrand/org/journal.org~. Les
entrées de niveau 1 (une étoile) indiquent l'année, celles de niveau 2
(2 étoiles) le mois, celles de niveau 3 (3 étoiles) la date du jour et
enfin, celles de profondeur plus importantes ce sur quoi j'ai
travaillé ce jour là. Ce sont généralement celles-ci qui sont
étiquetées avec des mots-clés entre ":" à la fin de la ligne.
Je vais donc chercher à extraire les lignes comportant trois ~*~ en
début de ligne et celles commençant par une ~*~ et terminant par des
mots-clés (des ~:~ suivis éventuellement d'un espace). L'expression
régulière n'est pas forcément parfaite mais ça me donne une première
idée de ce que j'aurais besoin de faire en terme de remise en forme.
#+begin_src shell :results output :exports both :eval never-export
grep -e '^\*\*\* ' -e '^\*.*:.*: *$' ~/org/journal.org | tail -n 20
#+end_src
#+RESULTS:
#+begin_example
,*** 2018-06-01 vendredi
,**** CP Inria du 01/06/18 :POLARIS:INRIA:
,*** 2018-06-04 lundi
,*** 2018-06-07 jeudi
,**** The Cognitive Packet Network - Reinforcement based Network Routing with Random Neural Networks (Erol Gelenbe) :Seminar:
,*** 2018-06-08 vendredi
,**** The credibility revolution in psychological science: the view from an editor's desk (Simine Vazire, UC DAVIS) :Seminar:
,*** 2018-06-11 lundi
,**** LIG leaders du 11 juin 2018 :POLARIS:LIG:
,*** 2018-06-12 mardi
,**** geom_ribbon with discrete x scale :R:
,*** 2018-06-13 mercredi
,*** 2018-06-14 jeudi
,*** 2018-06-20 mercredi
,*** 2018-06-21 jeudi
,*** 2018-06-22 vendredi
,**** Discussion Nicolas Benoit (TGCC, Bruyère) :SG:WP4:
,*** 2018-06-25 lundi
,*** 2018-06-26 mardi
,**** Point budget/contrats POLARIS :POLARIS:INRIA:
#+end_example
OK, je suis sur la bonne voie. Je vois qu'il y a pas mal d'entrées
sans annotations. Tant pis. Il y a aussi souvent plusieurs mots-clés
pour une même date et pour pouvoir bien rajouter la date du jour en
face de chaque mots-clés, je vais essayer un vrai langage plutôt que
d'essayer de faire ça à coup de commandes shell. Je suis de l'ancienne
génération donc j'ai plus l'habitude de perl que de python pour ce
genre de choses. Curieusement, ça s'écrit bien plus facilement (ça m'a
pris 5 minutes) que ça ne se relit... \smiley
#+begin_src perl :results output :exports both :eval never-export
open INPUT, "/home/alegrand/org/journal.org" or die $_;
open OUTPUT, "> ./org_keywords.csv" or die;
$date="";
print OUTPUT "Date,Keyword\n";
%skip = my %params = map { $_ => 1 } ("", "ATTACH", "Alvin", "Fred", "Mt", "Henri", "HenriRaf");
while(defined($line=<INPUT>)) {
chomp($line);
if($line =~ '^\*\*\* (20[\d\-]*)') {
$date=$1;
}
if($line =~ '^\*.*(:\w*:)\s*$') {
@kw=split(/:/,$1);
if($date eq "") { next;}
foreach $k (@kw) {
if(exists($skip{$k})) { next;}
print OUTPUT "$date,$k\n";
}
}
}
#+end_src
#+RESULTS:
Vérifions à quoi ressemble le résultat:
#+begin_src shell :results output :exports both
head org_keywords.csv
echo "..."
tail org_keywords.csv
#+end_src
#+RESULTS:
#+begin_example
Date,Keyword
2011-02-08,R
2011-02-08,Blog
2011-02-08,WP8
2011-02-08,WP8
2011-02-08,WP8
2011-02-17,WP0
2011-02-23,WP0
2011-04-05,Workload
2011-05-17,Workload
...
2018-05-17,POLARIS
2018-05-30,INRIA
2018-05-31,LIG
2018-06-01,INRIA
2018-06-07,Seminar
2018-06-08,Seminar
2018-06-11,LIG
2018-06-12,R
2018-06-22,WP4
2018-06-26,INRIA
#+end_example
C'est parfait!
* Statistiques de base
Je suis bien plus à l'aise avec R qu'avec python. J'utiliserai les
package du tidyverse dès que le besoin s'en fera sentir. Commençons
par lire ces données:
#+begin_src R :results output :session *R* :exports both
library(lubridate) # à installer via install.package("tidyverse")
library(dplyr)
df=read.csv("./org_keywords.csv",header=T)
df$Year=year(date(df$Date))
#+end_src
#+RESULTS:
#+begin_example
Attachement du package : ‘lubridate’
The following object is masked from ‘package:base’:
date
Attachement du package : ‘dplyr’
The following objects are masked from ‘package:lubridate’:
intersect, setdiff, union
The following objects are masked from ‘package:stats’:
filter, lag
The following objects are masked from ‘package:base’:
intersect, setdiff, setequal, union
#+end_example
Alors, à quoi ressemblent ces données:
#+begin_src R :results output :session *R* :exports both
str(df)
summary(df)
#+end_src
#+RESULTS:
#+begin_example
'data.frame': 566 obs. of 3 variables:
$ Date : Factor w/ 420 levels "2011-02-08","2011-02-17",..: 1 1 1 1 1 2 3 4 5 6 ...
$ Keyword: Factor w/ 36 levels "Argonne","autotuning",..: 22 3 36 36 36 30 30 29 29 36 ...
$ Year : num 2011 2011 2011 2011 2011 ...
Date Keyword Year
2011-02-08: 5 WP4 : 77 Min. :2011
2016-01-06: 5 POLARIS : 56 1st Qu.:2013
2016-03-29: 5 R : 48 Median :2016
2017-12-11: 5 LIG : 40 Mean :2015
2017-12-12: 5 Teaching: 38 3rd Qu.:2017
2016-01-26: 4 WP7 : 36 Max. :2018
(Other) :537 (Other) :271
#+end_example
Les types ont l'air correct, 568 entrées, tout va bien.
#+begin_src R :results output :session *R* :exports both
df %>% group_by(Keyword, Year) %>% summarize(Count=n()) %>%
ungroup() %>% arrange(Keyword,Year) -> df_summarized
df_summarized
#+end_src
#+RESULTS:
#+begin_example
# A tibble: 120 x 3
Keyword Year Count
<fct> <dbl> <int>
1 Argonne 2012 4
2 Argonne 2013 6
3 Argonne 2014 4
4 Argonne 2015 1
5 autotuning 2012 2
6 autotuning 2014 1
7 autotuning 2016 4
8 Blog 2011 2
9 Blog 2012 6
10 Blog 2013 4
# ... with 110 more rows
#+end_example
Commençons par compter combien d'annotation je fais par an.
#+begin_src R :results output :session *R* :exports both
df_summarized_total_year = df_summarized %>% group_by(Year) %>% summarize(Cout=sum(Count))
df_summarized_total_year
#+end_src
#+RESULTS:
#+begin_example
# A tibble: 8 x 2
Year Cout
<dbl> <int>
1 2011 24
2 2012 57
3 2013 68
4 2014 21
5 2015 80
6 2016 133
7 2017 135
8 2018 48
#+end_example
Ah, visiblement, je m'améliore au fil du temps et en 2014, j'ai oublié
de le faire régulièrement.
L'annotation étant libre, certains mots-clés sont peut-être très peu
présents. Regardons ça.
#+begin_src R :results output :session *R* :exports both
df_summarized %>% group_by(Keyword) %>% summarize(Count=sum(Count)) %>% arrange(Count) %>% as.data.frame()
#+end_src
#+RESULTS:
#+begin_example
Keyword Count
1 Gradient 1
2 LaTeX 1
3 Orange 1
4 PF 1
5 twitter 2
6 WP1 2
7 WP6 2
8 Epistemology 3
9 BULL 4
10 Vulgarization 4
11 Workload 4
12 GameTheory 5
13 noexport 5
14 autotuning 7
15 Python 7
16 Stats 7
17 WP0 7
18 SG 8
19 git 9
20 HACSPECIS 10
21 Blog 12
22 BOINC 12
23 HOME 12
24 WP3 12
25 OrgMode 14
26 Argonne 15
27 Europe 18
28 Seminar 28
29 WP8 28
30 INRIA 30
31 WP7 36
32 Teaching 38
33 LIG 40
34 R 48
35 POLARIS 56
36 WP4 77
#+end_example
OK, par la suite, je me restraindrai probablement ceux qui
apparaissent au moins trois fois.
* Représentations graphiques
Pour bien faire, il faudrait que je mette une sémantique et une
hiérarchie sur ces mots-clés mais je manque de temps là. Comme
j'enlève les mots-clés peu fréquents, je vais quand même aussi
rajouter le nombre total de mots-clé pour avoir une idée de ce que
j'ai perdu. Tentons une première représentation graphique:
#+begin_src R :results output graphics :file barchart1.png :exports both :width 600 :height 400 :session *R*
library(ggplot2)
df_summarized %>% filter(Count > 3) %>%
ggplot(aes(x=Year, y=Count)) +
geom_bar(aes(fill=Keyword),stat="identity") +
geom_point(data=df_summarized %>% group_by(Year) %>% summarize(Count=sum(Count))) +
theme_bw()
#+end_src
#+RESULTS:
[[file:barchart1.png]]
Aouch. C'est illisible avec une telle palette de couleurs mais vu
qu'il y a beaucoup de valeurs différences, difficile d'utiliser une
palette plus discriminante. Je vais quand même essayer rapidement
histoire de dire... Pour ça, j'utiliserai une palette de couleur
("Set1") où les couleurs sont toutes bien différentes mais elle n'a
que 9 couleurs. Je vais donc commencer par sélectionner les 9
mots-clés les plus fréquents.
#+begin_src R :results output graphics :file barchart2.png :exports both :width 600 :height 400 :session *R*
library(ggplot2)
frequent_keywords = df_summarized %>% group_by(Keyword) %>%
summarize(Count=sum(Count)) %>% arrange(Count) %>%
as.data.frame() %>% tail(n=9)
df_summarized %>% filter(Keyword %in% frequent_keywords$Keyword) %>%
ggplot(aes(x=Year, y=Count)) +
geom_bar(aes(fill=Keyword),stat="identity") +
geom_point(data=df_summarized %>% group_by(Year) %>% summarize(Count=sum(Count))) +
theme_bw() + scale_fill_brewer(palette="Set1")
#+end_src
#+RESULTS:
[[file:barchart2.png]]
OK. Visiblement, la part liée à l'administration (~Inria~, ~LIG~, ~POLARIS~)
et à l'enseignement (~Teaching~) augmente. L'augmentation des parties
sur ~R~ est à mes yeux signe d'une amélioration de ma maîtrise de
l'outil. L'augmentation de la partie ~Seminar~ ne signifie pas grand
chose car ce n'est que récemment que j'ai commencé à étiqueter
systématiquement les notes que je prenais quand j'assiste à un
exposé. Les étiquettes sur ~WP~ ont trait à la terminologie d'un ancien
projet ANR que j'ai continuer à utiliser (~WP4~ = prédiction de
performance HPC, ~WP7~ = analyse et visualisation, ~WP8~ = plans
d'expérience et moteurs d'expérimentation, ...). Le fait que ~WP4~
diminue est plutôt le fait que les informations à ce sujet sont
maintenant plutôt les journaux de mes doctorants qui réalisent
vraiment les choses que je ne fais que superviser.
Bon, une analyse de ce genre ne serait pas digne de ce nom sans un
/wordcloud/ (souvent illisible, mais tellement sexy! \smiley). Pour ça, je
m'inspire librement de ce post:
http://onertipaday.blogspot.com/2011/07/word-cloud-in-r.html
#+begin_src R :results output graphics :file wordcloud.png :exports both :width 600 :height 400 :session *R*
library(wordcloud) # à installer via install.package("wordcloud")
library(RColorBrewer)
pal2 <- brewer.pal(8,"Dark2")
df_summarized %>% group_by(Keyword) %>% summarize(Count=sum(Count)) -> df_summarized_keyword
wordcloud(df_summarized_keyword$Keyword, df_summarized_keyword$Count,
random.order=FALSE, rot.per=.15, colors=pal2, vfont=c("sans serif","plain"))
#+end_src
#+RESULTS:
[[file:wordcloud.png]]
Bon... voilà, c'est "joli" mais sans grand intérêt, tout
particulièrement quand il y a si peu de mots différents.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment