Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
mooc-rr-ressources
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
4
Merge Requests
4
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Learning Lab
mooc-rr-ressources
Commits
78d94f2c
Commit
78d94f2c
authored
Sep 05, 2018
by
Arnaud Legrand
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Regenerate HTML file after Marie-Gabrielle's corrections
parent
c1eb19b2
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
207 additions
and
109 deletions
+207
-109
stat_activity.html
module2/exo4/stat_activity.html
+207
-109
No files found.
module2/exo4/stat_activity.html
View file @
78d94f2c
...
@@ -3,23 +3,30 @@
...
@@ -3,23 +3,30 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html
xmlns=
"http://www.w3.org/1999/xhtml"
lang=
"fr"
xml:lang=
"fr"
>
<html
xmlns=
"http://www.w3.org/1999/xhtml"
lang=
"fr"
xml:lang=
"fr"
>
<head>
<head>
<!-- 2018-09-05 mer. 07:41 -->
<meta
http-equiv=
"Content-Type"
content=
"text/html;charset=utf-8"
/>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1"
/>
<title>
Analyse des mots-clés de mon journal
</title>
<title>
Analyse des mots-clés de mon journal
</title>
<!-- 2018-06-29 Fri 11:21 -->
<meta
name=
"generator"
content=
"Org mode"
/>
<meta
http-equiv=
"Content-Type"
content=
"text/html;charset=utf-8"
/>
<meta
name=
"author"
content=
"Arnaud Legrand"
/>
<meta
name=
"generator"
content=
"Org-mode"
/>
<meta
name=
"author"
content=
"Laurence Farhi"
/>
<style
type=
"text/css"
>
<style
type=
"text/css"
>
<!
--
/*
--
><![
CDATA
[/*><!
--
*/
<!
--
/*
--
><![
CDATA
[/*><!
--
*/
.title
{
text-align
:
center
;
}
.title
{
text-align
:
center
;
margin-bottom
:
.2em
;
}
.subtitle
{
text-align
:
center
;
font-size
:
medium
;
font-weight
:
bold
;
margin-top
:
0
;
}
.todo
{
font-family
:
monospace
;
color
:
red
;
}
.todo
{
font-family
:
monospace
;
color
:
red
;
}
.done
{
color
:
green
;
}
.done
{
font-family
:
monospace
;
color
:
green
;
}
.priority
{
font-family
:
monospace
;
color
:
orange
;
}
.tag
{
background-color
:
#eee
;
font-family
:
monospace
;
.tag
{
background-color
:
#eee
;
font-family
:
monospace
;
padding
:
2px
;
font-size
:
80%
;
font-weight
:
normal
;
}
padding
:
2px
;
font-size
:
80%
;
font-weight
:
normal
;
}
.timestamp
{
color
:
#bebebe
;
}
.timestamp
{
color
:
#bebebe
;
}
.timestamp-kwd
{
color
:
#5f9ea0
;
}
.timestamp-kwd
{
color
:
#5f9ea0
;
}
.right
{
margin-left
:
auto
;
margin-right
:
0px
;
text-align
:
right
;
}
.
org-
right
{
margin-left
:
auto
;
margin-right
:
0px
;
text-align
:
right
;
}
.left
{
margin-left
:
0px
;
margin-right
:
auto
;
text-align
:
left
;
}
.
org-
left
{
margin-left
:
0px
;
margin-right
:
auto
;
text-align
:
left
;
}
.center
{
margin-left
:
auto
;
margin-right
:
auto
;
text-align
:
center
;
}
.
org-
center
{
margin-left
:
auto
;
margin-right
:
auto
;
text-align
:
center
;
}
.underline
{
text-decoration
:
underline
;
}
.underline
{
text-decoration
:
underline
;
}
#postamble
p
,
#preamble
p
{
font-size
:
90%
;
margin
:
.2em
;
}
#postamble
p
,
#preamble
p
{
font-size
:
90%
;
margin
:
.2em
;
}
p
.verse
{
margin-left
:
3%
;
}
p
.verse
{
margin-left
:
3%
;
}
...
@@ -46,27 +53,111 @@
...
@@ -46,27 +53,111 @@
border
:
1px
solid
black
;
border
:
1px
solid
black
;
}
}
pre
.src
:hover:before
{
display
:
inline
;}
pre
.src
:hover:before
{
display
:
inline
;}
pre
.src-sh
:before
{
content
:
'sh'
;
}
/* Languages per Org manual */
pre
.src-bash
:before
{
content
:
'sh'
;
}
pre
.src-asymptote
:before
{
content
:
'Asymptote'
;
}
pre
.src-awk
:before
{
content
:
'Awk'
;
}
pre
.src-C
:before
{
content
:
'C'
;
}
/* pre.src-C++ doesn't work in CSS */
pre
.src-clojure
:before
{
content
:
'Clojure'
;
}
pre
.src-css
:before
{
content
:
'CSS'
;
}
pre
.src-D
:before
{
content
:
'D'
;
}
pre
.src-ditaa
:before
{
content
:
'ditaa'
;
}
pre
.src-dot
:before
{
content
:
'Graphviz'
;
}
pre
.src-calc
:before
{
content
:
'Emacs Calc'
;
}
pre
.src-emacs-lisp
:before
{
content
:
'Emacs Lisp'
;
}
pre
.src-emacs-lisp
:before
{
content
:
'Emacs Lisp'
;
}
pre
.src-R
:before
{
content
:
'R'
;
}
pre
.src-fortran
:before
{
content
:
'Fortran'
;
}
pre
.src-perl
:before
{
content
:
'Perl'
;
}
pre
.src-gnuplot
:before
{
content
:
'gnuplot'
;
}
pre
.src-java
:before
{
content
:
'Java'
;
}
pre
.src-haskell
:before
{
content
:
'Haskell'
;
}
pre
.src-sql
:before
{
content
:
'SQL'
;
}
pre
.src-hledger
:before
{
content
:
'hledger'
;
}
pre
.src-java
:before
{
content
:
'Java'
;
}
pre
.src-js
:before
{
content
:
'Javascript'
;
}
pre
.src-latex
:before
{
content
:
'LaTeX'
;
}
pre
.src-ledger
:before
{
content
:
'Ledger'
;
}
pre
.src-lisp
:before
{
content
:
'Lisp'
;
}
pre
.src-lilypond
:before
{
content
:
'Lilypond'
;
}
pre
.src-lua
:before
{
content
:
'Lua'
;
}
pre
.src-matlab
:before
{
content
:
'MATLAB'
;
}
pre
.src-mscgen
:before
{
content
:
'Mscgen'
;
}
pre
.src-ocaml
:before
{
content
:
'Objective Caml'
;
}
pre
.src-octave
:before
{
content
:
'Octave'
;
}
pre
.src-org
:before
{
content
:
'Org mode'
;
}
pre
.src-oz
:before
{
content
:
'OZ'
;
}
pre
.src-plantuml
:before
{
content
:
'Plantuml'
;
}
pre
.src-processing
:before
{
content
:
'Processing.js'
;
}
pre
.src-python
:before
{
content
:
'Python'
;
}
pre
.src-R
:before
{
content
:
'R'
;
}
pre
.src-ruby
:before
{
content
:
'Ruby'
;
}
pre
.src-sass
:before
{
content
:
'Sass'
;
}
pre
.src-scheme
:before
{
content
:
'Scheme'
;
}
pre
.src-screen
:before
{
content
:
'Gnu Screen'
;
}
pre
.src-sed
:before
{
content
:
'Sed'
;
}
pre
.src-sh
:before
{
content
:
'shell'
;
}
pre
.src-sql
:before
{
content
:
'SQL'
;
}
pre
.src-sqlite
:before
{
content
:
'SQLite'
;
}
/* additional languages in org.el's org-babel-load-languages alist */
pre
.src-forth
:before
{
content
:
'Forth'
;
}
pre
.src-io
:before
{
content
:
'IO'
;
}
pre
.src-J
:before
{
content
:
'J'
;
}
pre
.src-makefile
:before
{
content
:
'Makefile'
;
}
pre
.src-maxima
:before
{
content
:
'Maxima'
;
}
pre
.src-perl
:before
{
content
:
'Perl'
;
}
pre
.src-picolisp
:before
{
content
:
'Pico Lisp'
;
}
pre
.src-scala
:before
{
content
:
'Scala'
;
}
pre
.src-shell
:before
{
content
:
'Shell Script'
;
}
pre
.src-ebnf2ps
:before
{
content
:
'ebfn2ps'
;
}
/* additional language identifiers per "defun org-babel-execute"
in ob-*.el */
pre
.src-cpp
:before
{
content
:
'C++'
;
}
pre
.src-abc
:before
{
content
:
'ABC'
;
}
pre
.src-coq
:before
{
content
:
'Coq'
;
}
pre
.src-groovy
:before
{
content
:
'Groovy'
;
}
/* additional language identifiers from org-babel-shell-names in
ob-shell.el: ob-shell is the only babel language using a lambda to put
the execution function name together. */
pre
.src-bash
:before
{
content
:
'bash'
;
}
pre
.src-csh
:before
{
content
:
'csh'
;
}
pre
.src-ash
:before
{
content
:
'ash'
;
}
pre
.src-dash
:before
{
content
:
'dash'
;
}
pre
.src-ksh
:before
{
content
:
'ksh'
;
}
pre
.src-mksh
:before
{
content
:
'mksh'
;
}
pre
.src-posh
:before
{
content
:
'posh'
;
}
/* Additional Emacs modes also supported by the LaTeX listings package */
pre
.src-ada
:before
{
content
:
'Ada'
;
}
pre
.src-asm
:before
{
content
:
'Assembler'
;
}
pre
.src-caml
:before
{
content
:
'Caml'
;
}
pre
.src-delphi
:before
{
content
:
'Delphi'
;
}
pre
.src-html
:before
{
content
:
'HTML'
;
}
pre
.src-idl
:before
{
content
:
'IDL'
;
}
pre
.src-mercury
:before
{
content
:
'Mercury'
;
}
pre
.src-metapost
:before
{
content
:
'MetaPost'
;
}
pre
.src-modula-2
:before
{
content
:
'Modula-2'
;
}
pre
.src-pascal
:before
{
content
:
'Pascal'
;
}
pre
.src-ps
:before
{
content
:
'PostScript'
;
}
pre
.src-prolog
:before
{
content
:
'Prolog'
;
}
pre
.src-simula
:before
{
content
:
'Simula'
;
}
pre
.src-tcl
:before
{
content
:
'tcl'
;
}
pre
.src-tex
:before
{
content
:
'TeX'
;
}
pre
.src-plain-tex
:before
{
content
:
'Plain TeX'
;
}
pre
.src-verilog
:before
{
content
:
'Verilog'
;
}
pre
.src-vhdl
:before
{
content
:
'VHDL'
;
}
pre
.src-xml
:before
{
content
:
'XML'
;
}
pre
.src-nxml
:before
{
content
:
'XML'
;
}
/* add a generic configuration mode; LaTeX export needs an additional
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
pre
.src-conf
:before
{
content
:
'Configuration File'
;
}
table
{
border-collapse
:
collapse
;
}
table
{
border-collapse
:
collapse
;
}
caption
.t-above
{
caption-side
:
top
;
}
caption
.t-above
{
caption-side
:
top
;
}
caption
.t-bottom
{
caption-side
:
bottom
;
}
caption
.t-bottom
{
caption-side
:
bottom
;
}
td
,
th
{
vertical-align
:
top
;
}
td
,
th
{
vertical-align
:
top
;
}
th
.right
{
text-align
:
center
;
}
th
.
org-
right
{
text-align
:
center
;
}
th
.left
{
text-align
:
center
;
}
th
.
org-
left
{
text-align
:
center
;
}
th
.center
{
text-align
:
center
;
}
th
.
org-
center
{
text-align
:
center
;
}
td
.right
{
text-align
:
right
;
}
td
.
org-
right
{
text-align
:
right
;
}
td
.left
{
text-align
:
left
;
}
td
.
org-
left
{
text-align
:
left
;
}
td
.center
{
text-align
:
center
;
}
td
.
org-
center
{
text-align
:
center
;
}
dt
{
font-weight
:
bold
;
}
dt
{
font-weight
:
bold
;
}
.footpara
:nth-child
(
2
)
{
display
:
inline
;
}
.footpara
{
display
:
inline
;
}
.footpara
{
display
:
block
;
}
.footdef
{
margin-bottom
:
1em
;
}
.footdef
{
margin-bottom
:
1em
;
}
.figure
{
padding
:
1em
;
}
.figure
{
padding
:
1em
;
}
.figure
p
{
text-align
:
center
;
}
.figure
p
{
text-align
:
center
;
}
...
@@ -86,6 +177,7 @@
...
@@ -86,6 +177,7 @@
{
font-size
:
10px
;
font-weight
:
bold
;
white-space
:
nowrap
;
}
{
font-size
:
10px
;
font-weight
:
bold
;
white-space
:
nowrap
;
}
.org-info-js_search-highlight
.org-info-js_search-highlight
{
background-color
:
#ffff00
;
color
:
#000000
;
font-weight
:
bold
;
}
{
background-color
:
#ffff00
;
color
:
#000000
;
font-weight
:
bold
;
}
.org-svg
{
width
:
90%
;
}
/*]]>*/
--
>
/*]]>*/
--
>
</style>
</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/htmlize.css"
/>
...
@@ -99,7 +191,7 @@
...
@@ -99,7 +191,7 @@
@licstart The following is the entire license notice for the
@licstart The following is the entire license notice for the
JavaScript code in this tag.
JavaScript code in this tag.
Copyright (C) 2012-201
3
Free Software Foundation, Inc.
Copyright (C) 2012-201
8
Free Software Foundation, Inc.
The JavaScript code in this tag is free software: you can
The JavaScript code in this tag is free software: you can
redistribute it and/or modify it under the terms of the GNU
redistribute it and/or modify it under the terms of the GNU
...
@@ -140,6 +232,23 @@ for the JavaScript code in this tag.
...
@@ -140,6 +232,23 @@ for the JavaScript code in this tag.
}
}
/*]]>*/
//-->
/*]]>*/
//-->
</script>
</script>
<script
type=
"text/javascript"
>
function
rpl
(
expr
,
a
,
b
)
{
var
i
=
0
while
(
i
!=-
1
)
{
i
=
expr
.
indexOf
(
a
,
i
);
if
(
i
>=
0
)
{
expr
=
expr
.
substring
(
0
,
i
)
+
b
+
expr
.
substring
(
i
+
a
.
length
);
i
+=
b
.
length
;
}
}
return
expr
}
function
show_org_source
(){
document
.
location
.
href
=
rpl
(
document
.
location
.
href
,
".php"
,
".org"
);
}
</script>
</head>
</head>
<body>
<body>
<div
id=
"content"
>
<div
id=
"content"
>
...
@@ -148,9 +257,9 @@ for the JavaScript code in this tag.
...
@@ -148,9 +257,9 @@ for the JavaScript code in this tag.
<h2>
Table des matières
</h2>
<h2>
Table des matières
</h2>
<div
id=
"text-table-of-contents"
>
<div
id=
"text-table-of-contents"
>
<ul>
<ul>
<li><a
href=
"#
sec-1
"
>
1. Mise en forme des données
</a></li>
<li><a
href=
"#
orge93496f
"
>
1. Mise en forme des données
</a></li>
<li><a
href=
"#
sec-2
"
>
2. Statistiques de base
</a></li>
<li><a
href=
"#
org91643e3
"
>
2. Statistiques de base
</a></li>
<li><a
href=
"#
sec-3
"
>
3. Représentations graphiques
</a></li>
<li><a
href=
"#
org1db0ff8
"
>
3. Représentations graphiques
</a></li>
</ul>
</ul>
</div>
</div>
</div>
</div>
...
@@ -160,7 +269,7 @@ temps que je passe à faire telle ou telle chose. Ça tombe bien car je
...
@@ -160,7 +269,7 @@ 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
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
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
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
d'information
s
dans mon journal et j'étiquette (quand j'y pense) ces
informations. Je me suis dit qu'il pourrait être intéressant de voir
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
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
chose sur mes centres d'intérêts professionnels. Je ne compte pas en
...
@@ -170,8 +279,8 @@ sémantique a évolué au fil des années mais bon, on va bien voir ce
...
@@ -170,8 +279,8 @@ sémantique a évolué au fil des années mais bon, on va bien voir ce
qu'on y trouve.
qu'on y trouve.
</p>
</p>
<div
id=
"outline-container-
sec-1
"
class=
"outline-2"
>
<div
id=
"outline-container-
orge93496f
"
class=
"outline-2"
>
<h2
id=
"
sec-1
"
><span
class=
"section-number-2"
>
1
</span>
Mise en forme des données
</h2>
<h2
id=
"
orge93496f
"
><span
class=
"section-number-2"
>
1
</span>
Mise en forme des données
</h2>
<div
class=
"outline-text-2"
id=
"text-1"
>
<div
class=
"outline-text-2"
id=
"text-1"
>
<p>
<p>
Mon journal est stocké dans
<code>
/home/alegrand/org/journal.org
</code>
. Les
Mon journal est stocké dans
<code>
/home/alegrand/org/journal.org
</code>
. Les
...
@@ -187,12 +296,11 @@ Je vais donc chercher à extraire les lignes comportant trois <code>*</code> en
...
@@ -187,12 +296,11 @@ 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
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
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
régulière n'est pas forcément parfaite mais ça me donne une première
idée de ce que j'aurai
s
besoin de faire en terme de remise en forme.
idée de ce que j'aurai besoin de faire en terme de remise en forme.
</p>
</p>
<div
class=
"org-src-container"
>
<div
class=
"org-src-container"
>
<pre
class=
"src src-shell"
>
grep -e
<span
class=
"org-string"
>
'^\*\*\* '
</span>
-e
<span
class=
"org-string"
>
'^\*.*:.*: *$'
</span>
~/org/journal.org | tail -n 20
<pre
class=
"src src-shell"
>
grep -e '^\*\*\* ' -e '^\*.*:.*: *$' ~/org/journal.org | tail -n 20
</pre>
</pre>
</div>
</div>
...
@@ -221,47 +329,45 @@ idée de ce que j'aurais besoin de faire en terme de remise en forme.
...
@@ -221,47 +329,45 @@ idée de ce que j'aurais besoin de faire en terme de remise en forme.
<p>
<p>
OK, je suis sur la bonne voie. Je vois qu'il y a pas mal d'entrées
OK, je suis sur la bonne voie. Je vois qu'il y a pas mal d'entrées
sans annotation
s
. Tant pis. Il y a aussi souvent plusieurs mots-clés
sans annotation. 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
pour une même date et pour pouvoir bien rajouter la date du jour en
face de chaque mot
s-clés
, je vais essayer un vrai langage plutôt que
face de chaque mot
-clé
, je vais essayer un vrai langage plutôt que
d'essayer de faire ça à coup de commandes shell. Je suis de l'ancienne
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 p
ython pour ce
génération donc j'ai plus l'habitude de
Perl que de P
ython pour ce
genre de choses. Curieusement, ça s'écrit bien plus facilement (ça m'a
genre de choses. Curieusement, ça s'écrit bien plus facilement (ça m'a
pris 5 minutes) que ça ne se relit
…
☺
pris 5 minutes) que ça ne se relit
…
☺
</p>
</p>
<div
class=
"org-src-container"
>
<div
class=
"org-src-container"
>
<pre
class=
"src src-perl"
>
open INPUT,
<span
class=
"org-string"
>
"/home/alegrand/org/journal.org"
</span>
or
<span
class=
"org-keyword"
>
die
</span>
$
<span
class=
"org-variable-name"
>
_
</span>
;
<pre
class=
"src src-perl"
>
open INPUT, "/home/alegrand/org/journal.org" or die $_;
open OUTPUT,
<span
class=
"org-string"
>
"
>
./org_keywords.csv"
</span>
or
<span
class=
"org-keyword"
>
die
</span>
;
open OUTPUT, "
>
./org_keywords.csv" or die;
$
<span
class=
"org-variable-name"
>
date
</span>
=
<span
class=
"org-string"
>
""
</span>
;
$date="";
print OUTPUT
<span
class=
"org-string"
>
"Date,Keyword\n"
</span>
;
print OUTPUT "Date,Keyword\n";
%
<span
class=
"org-underline"
><span
class=
"org-variable-name"
>
skip
</span></span>
=
<span
class=
"org-type"
>
my
</span>
%
<span
class=
"org-underline"
><span
class=
"org-variable-name"
>
params
</span></span>
= map { $
<span
class=
"org-variable-name"
>
_
</span>
=
>
1 } (
<span
class=
"org-string"
>
""
</span>
,
<span
class=
"org-string"
>
"ATTACH"
</span>
,
<span
class=
"org-string"
>
"Alvin"
</span>
,
<span
class=
"org-string"
>
"Fred"
</span>
,
<span
class=
"org-string"
>
"Mt"
</span>
,
<span
class=
"org-string"
>
"Henri"
</span>
,
<span
class=
"org-string"
>
"HenriRaf"
</span>
);
%skip = my %params = map { $_ =
>
1 } ("", "ATTACH", "Alvin", "Fred", "Mt", "Henri", "HenriRaf");
<span
class=
"org-keyword"
>
while
</span>
(defined($
<span
class=
"org-variable-name"
>
line
</span>
=
<
<span
class=
"org-constant"
>
INPUT
</span>
>
)) {
while(defined($line=
<
INPUT
>
)) {
chomp($
<span
class=
"org-variable-name"
>
line
</span>
);
chomp($line);
<span
class=
"org-keyword"
>
if
</span>
($
<span
class=
"org-variable-name"
>
line
</span>
=~
<span
class=
"org-string"
>
'^\*\*\* (20[\d\-]*)'
</span>
) {
if($line =~ '^\*\*\* (20[\d\-]*)') {
$
<span
class=
"org-variable-name"
>
date
</span>
=$
<span
class=
"org-variable-name"
>
1
</span>
;
$date=$1;
}
}
if($line =~ '^\*.*(:\w*:)\s*$'
) {
<span
class=
"org-keyword"
>
if
</span>
($
<span
class=
"org-variable-name"
>
line
</span>
=~
<span
class=
"org-string"
>
'^\*.*(:\w*:)\s*$'
</span>
) {
@kw=split(/:/,$1
);
@
<span
class=
"org-underline"
><span
class=
"org-variable-name"
>
kw
</span></span>
=split(
<span
class=
"org-string"
>
/:/
</span>
,$
<span
class=
"org-variable-name"
>
1
</span>
);
if($date eq "") { next
;}
<span
class=
"org-keyword"
>
if
</span>
($
<span
class=
"org-variable-name"
>
date
</span>
eq
<span
class=
"org-string"
>
""
</span>
) {
<span
class=
"org-keyword"
>
next
</span>
;}
foreach $k (@kw
) {
<span
class=
"org-keyword"
>
foreach
</span>
$
<span
class=
"org-variable-name"
>
k
</span>
(@
<span
class=
"org-underline"
><span
class=
"org-variable-name"
>
kw
</span></span>
) {
if(exists($skip{$k})) { next
;}
<span
class=
"org-keyword"
>
if
</span>
(exists($
<span
class=
"org-variable-name"
>
skip
</span>
{$
<span
class=
"org-variable-name"
>
k
</span>
})) {
<span
class=
"org-keyword"
>
next
</span>
;}
print OUTPUT "$date,$k\n"
;
print OUTPUT
<span
class=
"org-string"
>
"$date,$k\n"
</span>
;
}
}
}
}
}
}
</pre>
</pre>
</div>
</div>
<p>
<p>
Vérifions à quoi ressemble le résultat:
Vérifions à quoi ressemble le résultat
:
</p>
</p>
<div
class=
"org-src-container"
>
<div
class=
"org-src-container"
>
<pre
class=
"src src-shell"
>
head org_keywords.csv
<pre
class=
"src src-shell"
>
head org_keywords.csv
echo "..."
<span
class=
"org-builtin"
>
echo
</span>
<span
class=
"org-string"
>
"..."
</span>
tail org_keywords.csv
tail org_keywords.csv
</pre>
</pre>
</div>
</div>
...
@@ -291,29 +397,29 @@ Date,Keyword
...
@@ -291,29 +397,29 @@ Date,Keyword
</pre>
</pre>
<p>
<p>
C'est parfait!
C'est parfait
!
</p>
</p>
</div>
</div>
</div>
</div>
<div
id=
"outline-container-
sec-2
"
class=
"outline-2"
>
<div
id=
"outline-container-
org91643e3
"
class=
"outline-2"
>
<h2
id=
"
sec-2
"
><span
class=
"section-number-2"
>
2
</span>
Statistiques de base
</h2>
<h2
id=
"
org91643e3
"
><span
class=
"section-number-2"
>
2
</span>
Statistiques de base
</h2>
<div
class=
"outline-text-2"
id=
"text-2"
>
<div
class=
"outline-text-2"
id=
"text-2"
>
<p>
<p>
Je suis bien plus à l'aise avec R qu'avec
p
ython. J'utiliserai les
Je suis bien plus à l'aise avec R qu'avec
P
ython. J'utiliserai les
package du tidyverse dès que le besoin s'en fera sentir. Commençons
package du tidyverse dès que le besoin s'en fera sentir. Commençons
par lire ces données:
par lire ces données
:
</p>
</p>
<div
class=
"org-src-container"
>
<div
class=
"org-src-container"
>
<pre
class=
"src src-R"
><span
class=
"org-constant"
>
library
</span>
(lubridate)
<span
class=
"org-comment-delimiter"
>
#
</span><span
class=
"org-comment"
>
à
installer via install.package("tidyverse")
</span>
<pre
class=
"src src-R"
>
library(lubridate) # à installer via install.package("tidyverse")
<span
class=
"org-constant"
>
library
</span>
(dplyr)
library(dplyr)
df=read.csv(
<span
class=
"org-string"
>
"./org_keywords.csv"
</span>
,header=T)
df=read.csv("./org_keywords.csv",header=T)
df$Year=year(date(df$Date))
df$Year=year(date(df$Date))
</pre>
</pre>
</div>
</div>
<pre
class=
"example"
>
<pre
class=
"example"
>
Attachement du package : ‘lubridate’
Attachement du package : ‘lubridate’
The following object is masked from ‘package:base’:
The following object is masked from ‘package:base’:
...
@@ -336,10 +442,9 @@ The following objects are masked from ‘package:base’:
...
@@ -336,10 +442,9 @@ The following objects are masked from ‘package:base’:
</pre>
</pre>
<p>
<p>
Alors, à quoi ressemblent ces données:
Alors, à quoi ressemblent ces données
:
</p>
</p>
<div
class=
"org-src-container"
>
<div
class=
"org-src-container"
>
<pre
class=
"src src-R"
>
str(df)
<pre
class=
"src src-R"
>
str(df)
summary(df)
summary(df)
</pre>
</pre>
...
@@ -361,12 +466,11 @@ summary(df)
...
@@ -361,12 +466,11 @@ summary(df)
</pre>
</pre>
<p>
<p>
Les types ont l'air correct, 568 entrées, tout va bien.
Les types ont l'air correct
s
, 568 entrées, tout va bien.
</p>
</p>
<div
class=
"org-src-container"
>
<div
class=
"org-src-container"
>
<pre
class=
"src src-R"
>
df
<span
class=
"org-ess-XopX"
>
%
>
%
</span>
group_by(Keyword, Year)
<span
class=
"org-ess-XopX"
>
%
>
%
</span>
summarize(Count=n())
<span
class=
"org-ess-XopX"
>
%
>
%
</span>
<pre
class=
"src src-R"
>
df %
>
% group_by(Keyword, Year) %
>
% summarize(Count=n()) %
>
%
ungroup()
<span
class=
"org-ess-XopX"
>
%
>
%
</span>
arrange(Keyword,Year)
<span
class=
"org-constant"
>
-
>
</span>
df_summarized
ungroup() %
>
% arrange(Keyword,Year) -
>
df_summarized
df_summarized
df_summarized
</pre>
</pre>
</div>
</div>
...
@@ -389,11 +493,10 @@ df_summarized
...
@@ -389,11 +493,10 @@ df_summarized
</pre>
</pre>
<p>
<p>
Commençons par compter combien d'annotation je fais par an.
Commençons par compter combien d'annotation
s
je fais par an.
</p>
</p>
<div
class=
"org-src-container"
>
<div
class=
"org-src-container"
>
<pre
class=
"src src-R"
>
df_summarized_total_year = df_summarized
<span
class=
"org-ess-XopX"
>
%
>
%
</span>
group_by(Year)
<span
class=
"org-ess-XopX"
>
%
>
%
</span>
summarize(Cout=sum(Count))
<pre
class=
"src src-R"
>
df_summarized_total_year = df_summarized %
>
% group_by(Year) %
>
% summarize(Cout=sum(Count))
df_summarized_total_year
df_summarized_total_year
</pre>
</pre>
</div>
</div>
...
@@ -422,8 +525,7 @@ L'annotation étant libre, certains mots-clés sont peut-être très peu
...
@@ -422,8 +525,7 @@ L'annotation étant libre, certains mots-clés sont peut-être très peu
présents. Regardons ça.
présents. Regardons ça.
</p>
</p>
<div
class=
"org-src-container"
>
<div
class=
"org-src-container"
>
<pre
class=
"src src-R"
>
df_summarized
<span
class=
"org-ess-XopX"
>
%
>
%
</span>
group_by(Keyword)
<span
class=
"org-ess-XopX"
>
%
>
%
</span>
summarize(Count=sum(Count))
<span
class=
"org-ess-XopX"
>
%
>
%
</span>
arrange(Count)
<span
class=
"org-ess-XopX"
>
%
>
%
</span>
as.data.frame()
<pre
class=
"src src-R"
>
df_summarized %
>
% group_by(Keyword) %
>
% summarize(Count=sum(Count)) %
>
% arrange(Count) %
>
% as.data.frame()
</pre>
</pre>
</div>
</div>
...
@@ -468,29 +570,28 @@ présents. Regardons ça.
...
@@ -468,29 +570,28 @@ présents. Regardons ça.
</pre>
</pre>
<p>
<p>
OK, par la suite, je me restraindrai probablement ceux qui
OK, par la suite, je me restraindrai probablement
à
ceux qui
apparaissent au moins trois fois.
apparaissent au moins trois fois.
</p>
</p>
</div>
</div>
</div>
</div>
<div
id=
"outline-container-
sec-3
"
class=
"outline-2"
>
<div
id=
"outline-container-
org1db0ff8
"
class=
"outline-2"
>
<h2
id=
"
sec-3
"
><span
class=
"section-number-2"
>
3
</span>
Représentations graphiques
</h2>
<h2
id=
"
org1db0ff8
"
><span
class=
"section-number-2"
>
3
</span>
Représentations graphiques
</h2>
<div
class=
"outline-text-2"
id=
"text-3"
>
<div
class=
"outline-text-2"
id=
"text-3"
>
<p>
<p>
Pour bien faire, il faudrait que je mette une sémantique et une
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
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
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
rajouter le nombre total de mots-clé
s
pour avoir une idée de ce que
j'ai perdu. Tentons une première représentation graphique:
j'ai perdu. Tentons une première représentation graphique
:
</p>
</p>
<div
class=
"org-src-container"
>
<div
class=
"org-src-container"
>
<pre
class=
"src src-R"
><span
class=
"org-constant"
>
library
</span>
(ggplot2)
<pre
class=
"src src-R"
>
library(ggplot2)
df_summarized
<span
class=
"org-ess-XopX"
>
%
>
%
</span>
filter(Count
>
3)
<span
class=
"org-ess-XopX"
>
%
>
%
</span>
df_summarized %
>
% filter(Count
>
3) %
>
%
ggplot(aes(x=Year, y=Count)) +
ggplot(aes(x=Year, y=Count)) +
geom_bar(aes(fill=Keyword),stat=
"identity"
) +
geom_bar(aes(fill=Keyword),stat=
<span
class=
"org-string"
>
"identity"
</span>
) +
geom_point(data=df_summarized
%
>
% group_by(Year) %
>
%
summarize(Count=sum(Count))) +
geom_point(data=df_summarized
<span
class=
"org-ess-XopX"
>
%
>
%
</span>
group_by(Year)
<span
class=
"org-ess-XopX"
>
%
>
%
</span>
summarize(Count=sum(Count))) +
theme_bw()
theme_bw()
</pre>
</pre>
</div>
</div>
...
@@ -503,7 +604,7 @@ df_summarized %>% filter(Count > 3) %>%
...
@@ -503,7 +604,7 @@ df_summarized %>% filter(Count > 3) %>%
<p>
<p>
Aouch. C'est illisible avec une telle palette de couleurs mais vu
Aouch. C'est illisible avec une telle palette de couleurs mais vu
qu'il y a beaucoup de valeurs différen
c
es, difficile d'utiliser une
qu'il y a beaucoup de valeurs différen
t
es, difficile d'utiliser une
palette plus discriminante. Je vais quand même essayer rapidement
palette plus discriminante. Je vais quand même essayer rapidement
histoire de dire
…
Pour ça, j'utiliserai une palette de couleur
histoire de dire
…
Pour ça, j'utiliserai une palette de couleur
("Set1") où les couleurs sont toutes bien différentes mais elle n'a
("Set1") où les couleurs sont toutes bien différentes mais elle n'a
...
@@ -512,17 +613,16 @@ mots-clés les plus fréquents.
...
@@ -512,17 +613,16 @@ mots-clés les plus fréquents.
</p>
</p>
<div
class=
"org-src-container"
>
<div
class=
"org-src-container"
>
<pre
class=
"src src-R"
><span
class=
"org-constant"
>
library
</span>
(ggplot2)
frequent_keywords = df_summarized
<span
class=
"org-ess-XopX"
>
%
>
%
</span>
group_by(Keyword)
<span
class=
"org-ess-XopX"
>
%
>
%
</span>
summarize(Count=sum(Count))
<span
class=
"org-ess-XopX"
>
%
>
%
</span>
arrange(Count)
<span
class=
"org-ess-XopX"
>
%
>
%
</span>
as.data.frame()
<span
class=
"org-ess-XopX"
>
%
>
%
</span>
tail(n=9)
<pre
class=
"src src-R"
>
library(ggplot2)
df_summarized
<span
class=
"org-ess-XopX"
>
%
>
%
</span>
filter(Keyword
<span
class=
"org-ess-XopX"
>
%in%
</span>
frequent_keywords$Keyword)
<span
class=
"org-ess-XopX"
>
%
>
%
</span>
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)) +
ggplot(aes(x=Year, y=Count)) +
geom_bar(aes(fill=Keyword),stat=
"identity"
) +
geom_bar(aes(fill=Keyword),stat=
<span
class=
"org-string"
>
"identity"
</span>
) +
geom_point(data=df_summarized
%
>
% group_by(Year) %
>
%
summarize(Count=sum(Count))) +
geom_point(data=df_summarized
<span
class=
"org-ess-XopX"
>
%
>
%
</span>
group_by(Year)
<span
class=
"org-ess-XopX"
>
%
>
%
</span>
summarize(Count=sum(Count))) +
theme_bw() + scale_fill_brewer(palette=
"Set1"
)
theme_bw() + scale_fill_brewer(palette=
<span
class=
"org-string"
>
"Set1"
</span>
)
</pre>
</pre>
</div>
</div>
...
@@ -540,9 +640,9 @@ l'outil. L'augmentation de la partie <code>Seminar</code> ne signifie pas grand
...
@@ -540,9 +640,9 @@ 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
chose car ce n'est que récemment que j'ai commencé à étiqueter
systématiquement les notes que je prenais quand j'assiste à un
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
exposé. Les étiquettes sur
<code>
WP
</code>
ont trait à la terminologie d'un ancien
projet ANR que j'ai continu
er
à utiliser (
<code>
WP4
</code>
= prédiction de
projet ANR que j'ai continu
é
à utiliser (
<code>
WP4
</code>
= prédiction de
performance HPC,
<code>
WP7
</code>
= analyse et visualisation,
<code>
WP8
</code>
= plans
performance HPC,
<code>
WP7
</code>
= analyse et visualisation,
<code>
WP8
</code>
= plans
d'expérience et moteurs d'expérimentation
,
…
). Le fait que
<code>
WP4
</code>
d'expérience et moteurs d'expérimentation
…
). Le fait que
<code>
WP4
</code>
diminue est plutôt le fait que les informations à ce sujet sont
diminue est plutôt le fait que les informations à ce sujet sont
maintenant plutôt les journaux de mes doctorants qui réalisent
maintenant plutôt les journaux de mes doctorants qui réalisent
vraiment les choses que je ne fais que superviser.
vraiment les choses que je ne fais que superviser.
...
@@ -551,18 +651,17 @@ vraiment les choses que je ne fais que superviser.
...
@@ -551,18 +651,17 @@ 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
Bon, une analyse de ce genre ne serait pas digne de ce nom sans un
<i>
wordcloud
</i>
(souvent illisible, mais tellement sexy!
☺
). Pour ça, je
<i>
wordcloud
</i>
(souvent illisible, mais tellement sexy!
☺
). Pour ça, je
m'inspire librement de ce post:
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>
<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>
</p>
<div
class=
"org-src-container"
>
<div
class=
"org-src-container"
>
<pre
class=
"src src-R"
><span
class=
"org-constant"
>
library
</span>
(wordcloud)
<span
class=
"org-comment-delimiter"
>
#
</span><span
class=
"org-comment"
>
à
installer via install.package("wordcloud")
</span>
<pre
class=
"src src-R"
>
library(wordcloud) # à installer via install.package("wordcloud")
<span
class=
"org-constant"
>
library
</span>
(RColorBrewer)
library(RColorBrewer)
pal2
<span
class=
"org-constant"
>
<
-
</span>
brewer.pal(8,
<span
class=
"org-string"
>
"Dark2"
</span>
)
pal2
<
- brewer.pal(8,"Dark2")
df_summarized
<span
class=
"org-ess-XopX"
>
%
>
%
</span>
group_by(Keyword)
<span
class=
"org-ess-XopX"
>
%
>
%
</span>
summarize(Count=sum(Count))
<span
class=
"org-constant"
>
-
>
</span>
df_summarized_keyword
df_summarized %
>
% group_by(Keyword) %
>
% summarize(Count=sum(Count)) -
>
df_summarized_keyword
wordcloud(df_summarized_keyword$Keyword, df_summarized_keyword$Count,
wordcloud(df_summarized_keyword$Keyword, df_summarized_keyword$Count,
random.order=
FALSE, rot.per=.15, colors=pal2, vfont=c("sans serif","plain"
))
random.order=
<span
class=
"org-type"
>
FALSE
</span>
, rot.per=.15, colors=pal2, vfont=c(
<span
class=
"org-string"
>
"sans serif"
</span>
,
<span
class=
"org-string"
>
"plain"
</span>
))
</pre>
</pre>
</div>
</div>
...
@@ -580,9 +679,8 @@ particulièrement quand il y a si peu de mots différents.
...
@@ -580,9 +679,8 @@ particulièrement quand il y a si peu de mots différents.
</div>
</div>
</div>
</div>
<div
id=
"postamble"
class=
"status"
>
<div
id=
"postamble"
class=
"status"
>
<p
class=
"author"
>
Auteur: Laurence Farhi
</p>
<p
class=
"author"
>
Auteur: Arnaud Legrand
</p>
<p
class=
"date"
>
Created: 2018-06-29 Fri 11:21
</p>
<p
class=
"date"
>
Created: 2018-09-05 mer. 07:41
</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>
<p
class=
"validation"
><a
href=
"http://validator.w3.org/check?uri=referer"
>
Validate
</a></p>
</div>
</div>
</body>
</body>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment