-
Notifications
You must be signed in to change notification settings - Fork 4
/
bookdown-demo.tex
3973 lines (2612 loc) · 301 KB
/
bookdown-demo.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
% Options for packages loaded elsewhere
\PassOptionsToPackage{unicode}{hyperref}
\PassOptionsToPackage{hyphens}{url}
%
\documentclass[
]{book}
\usepackage{lmodern}
\usepackage{amssymb,amsmath}
\usepackage{ifxetex,ifluatex}
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{textcomp} % provide euro and other symbols
\else % if luatex or xetex
\usepackage{unicode-math}
\defaultfontfeatures{Scale=MatchLowercase}
\defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
\fi
% Use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
\IfFileExists{microtype.sty}{% use microtype if available
\usepackage[]{microtype}
\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
}{}
\makeatletter
\@ifundefined{KOMAClassName}{% if non-KOMA class
\IfFileExists{parskip.sty}{%
\usepackage{parskip}
}{% else
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt plus 2pt minus 1pt}}
}{% if KOMA class
\KOMAoptions{parskip=half}}
\makeatother
\usepackage{xcolor}
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}
\hypersetup{
pdftitle={NLP avec r et en français - un Manuel synthétique},
pdfauthor={Sophie Balech et Christophe Benavent et al},
hidelinks,
pdfcreator={LaTeX via pandoc}}
\urlstyle{same} % disable monospaced font for URLs
\usepackage{color}
\usepackage{fancyvrb}
\newcommand{\VerbBar}{|}
\newcommand{\VERB}{\Verb[commandchars=\\\{\}]}
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
% Add ',fontsize=\small' for more characters per line
\usepackage{framed}
\definecolor{shadecolor}{RGB}{248,248,248}
\newenvironment{Shaded}{\begin{snugshade}}{\end{snugshade}}
\newcommand{\AlertTok}[1]{\textcolor[rgb]{0.94,0.16,0.16}{#1}}
\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.77,0.63,0.00}{#1}}
\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{#1}}
\newcommand{\BuiltInTok}[1]{#1}
\newcommand{\CharTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}}
\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textit{#1}}}
\newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}}
\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{\textbf{#1}}}
\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{#1}}
\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{#1}}
\newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
\newcommand{\ErrorTok}[1]{\textcolor[rgb]{0.64,0.00,0.00}{\textbf{#1}}}
\newcommand{\ExtensionTok}[1]{#1}
\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{#1}}
\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}}
\newcommand{\ImportTok}[1]{#1}
\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{\textbf{#1}}}
\newcommand{\NormalTok}[1]{#1}
\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.81,0.36,0.00}{\textbf{#1}}}
\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{#1}}
\newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textit{#1}}}
\newcommand{\RegionMarkerTok}[1]{#1}
\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}}
\newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}}
\newcommand{\StringTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}}
\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}}
\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}}
\newcommand{\WarningTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
\usepackage{longtable,booktabs}
% Correct order of tables after \paragraph or \subparagraph
\usepackage{etoolbox}
\makeatletter
\patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{}
\makeatother
% Allow footnotes in longtable head/foot
\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}}
\makesavenoteenv{longtable}
\usepackage{graphicx,grffile}
\makeatletter
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
\makeatother
% Scale images if necessary, so that they will not overflow the page
% margins by default, and it is still possible to overwrite the defaults
% using explicit options in \includegraphics[width, height, ...]{}
\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
% Set default figure placement to htbp
\makeatletter
\def\fps@figure{htbp}
\makeatother
\setlength{\emergencystretch}{3em} % prevent overfull lines
\providecommand{\tightlist}{%
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
\setcounter{secnumdepth}{5}
\usepackage{booktabs}
\usepackage{amsthm}
\makeatletter
\def\thm@space@setup{%
\thm@preskip=8pt plus 2pt minus 4pt
\thm@postskip=\thm@preskip
}
\makeatother
\usepackage{fontspec}
\usepackage{multirow}
\usepackage{multicol}
\usepackage{colortbl}
\usepackage{hhline}
\usepackage{longtable}
\usepackage{array}
\usepackage{hyperref}
\usepackage[]{natbib}
\bibliographystyle{apalike}
\title{NLP avec r et en français - un Manuel synthétique}
\author{Sophie Balech et Christophe Benavent et al}
\date{2021-07-22}
\begin{document}
\maketitle
{
\setcounter{tocdepth}{1}
\tableofcontents
}
\hypertarget{pruxe9face}{%
\chapter{Préface}\label{pruxe9face}}
\includegraphics{./images/Incantationfor6voices_scotthelmes2001.jpeg}
\footnote{Incantation for 6 voices Scott helmes, 2001. \href{https://medium.com/minneapolis-institute-of-art/painting-a-picture-with-words-a0a3fef3cf63}{Museum of Minessota}}
L'eco système r s'est enrichi ces dernière années à grande vitesse dans le domaine du traitement du langage naturel, l'objet de ce manuel a pour but d'en donner une synthèse. Sa vocation est pratique même si on y laissera germer quelques considérations plus méthodologiques, voire épistémologiques.
On ouvrira cependant chaque fois que c'est possibles aux questions théoriques et éthiques de ces méthodes. Leur réalisation computationnelle est le fruit souvent d'une longue histoire, au cours de laquelle les linguistes ont semé des idées essentielles qu'ont systématisé les informaticiens.
On soignera la bibliographie de manière synthétique pour en faire un état de l'art essentielet actualisée.
La rédaction de l'ouvrage est mené avec une règle de reproductibilité et de transparence, c'est le pourquoi le choix de ce support et des jeux de données associés.
Il sera dynamique, modifié à mesure de nos cours, séminaires, ateliers et observations des lecteurs.
\hypertarget{cours-et-suxe9minaires}{%
\section{Cours et séminaires}\label{cours-et-suxe9minaires}}
La liste des cours et séminaires où il sera présenté et utilisé.
\begin{itemize}
\tightlist
\item
Colloque Marketing digital 1-2 septembre 2021
\item
AFM decembre 2021
\item
Ed Sorbonne - février 2022
\item
Dauphine master 204 - octobre 2021
\item
Master Siren - Dauphine - mai 2022
\item
Toulouse
\item
Lille master Data Science
\end{itemize}
\hypertarget{la-structure-du-livre}{%
\section{La structure du livre}\label{la-structure-du-livre}}
L analyse NLP peut être analysée comme un processus qui va de la production jusqu' à la diffusion des analyses. Elle est aussi traversée par des évolutions profondes de méthodes qui ont complexifié au sens formel les modèles initiaux. L'apprentissage submerge le comptage,et les catégorisations\ldots.
Rappelons nous que les modèles de langages désormais distribués par les grands acteurs, comprennent des dizaines, voir des centaines de milliards de paramètres.
Le plan suit une logique qui va du simple au très compliqué, et de l'acquisition des données, de leur traitement et leur modélisation, jusqu'à la propagation\ldots.
\begin{itemize}
\tightlist
\item
acquisition des données : directe, api et scrapping
\item
corpus dtm et cooccurence
\item
AFC et typologie
\item
l'annotation syntaxique et lexicale
\item
analyse du sentiment et sa généralisation
\item
word embedness
\item
factorial models
\item
Topic analysis
\item
ML
\item
deep learning
\item
translation : parsceque qu'il faut traiter des corpus multi lingual et que la communication peut aussi etre multilinguales.
\item
génératives : parce que la prochaine étape c'est quand on appliquera ces méthode sur la productions textuelles des bots.
\end{itemize}
\hypertarget{les-jeux-de-donnuxe9es}{%
\section{Les jeux de données}\label{les-jeux-de-donnuxe9es}}
Au cours du développement, plusieurs cas pratiques - souvent réduit en volume pour rester exemplaires, seront employés. Les donées seront partagées.
En voici la présentation systématique.
\begin{itemize}
\tightlist
\item
\href{https://www.thetrumparchive.com/}{Trump Twitter Archive} : L'intégralité des tweets de Trump jusqu'à son banissement le 8 Janvier 2021.
\item
Confinement Jour J
\item
Citations : un recueil de citations littéraires pour de petits exemples et ponctuer le texte aride d'un peu de littérature et de poésie.
\item
Trip advisor Polynésie, un extrait d'un corpus établi par Pierre Ghewy et Sebastien de l'UPF
\item
Airbnb
\item
Covid
\end{itemize}
disponibles dans le \href{https://benaventc.github.io/NLPBook/}{repositery} avec le code du book. Les amendements et améliorations sont souhaitées et attendues.
\hypertarget{les-ressources}{%
\section{Les ressources}\label{les-ressources}}
Ce \emph{livre} est écrit en \textbf{Markdown} \citep{allaire_rmarkdown_2021} et avec le package \textbf{Bookdown} \citep{R-bookdown}
Le code s'appuie très largement sur \textbf{tidyverse} et emploie largement les ressources de \textbf{ggplot} et \textbf{dplyr} . On recommande au lecteur de consulter donc les ouvrages suivants quand il s'interroge sur la construction des graphiques. On part du parti-pris que les lecteurs ont une connaissance satisfaisantes de ces outils génériques. Une mention particulère doit être faite sur la question du traitement du texte, \textbf{stringr} est aussi un des outils fondamentaux,
\begin{itemize}
\tightlist
\item
rmardown
\item
ggplot
\item
dplyr
\item
stringer
\end{itemize}
\#\#\#les packages
Les packages seront introduits au fur et à mesure. En voici la liste complète.
\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{knitr}\OperatorTok{::}\NormalTok{opts_chunk}\OperatorTok{$}\KeywordTok{set}\NormalTok{(}\DataTypeTok{echo =} \OtherTok{TRUE}\NormalTok{, }\DataTypeTok{message=}\OtherTok{FALSE}\NormalTok{,}\DataTypeTok{warning=}\OtherTok{FALSE}\NormalTok{)}
\CommentTok{#boite à outils et viz}
\KeywordTok{library}\NormalTok{(tidyverse) }\CommentTok{# inclut ggplot pour la viz, readr et }
\KeywordTok{library}\NormalTok{(cowplot) }\CommentTok{#pour créer des graphiques composés}
\KeywordTok{library}\NormalTok{(ggridges) }\CommentTok{# le joy division touch}
\KeywordTok{library}\NormalTok{(citr)}
\CommentTok{#networks}
\KeywordTok{library}\NormalTok{(igraph)}
\KeywordTok{library}\NormalTok{(ggraph)}
\CommentTok{# Accéder aux données}
\KeywordTok{library}\NormalTok{(rtweet) }\CommentTok{# une interface efficace pour interroger l'api de Twitter}
\CommentTok{# NLP}
\KeywordTok{library}\NormalTok{(tokenizers)}
\KeywordTok{library}\NormalTok{(quanteda)}
\KeywordTok{library}\NormalTok{(quanteda.textstats)}
\KeywordTok{library}\NormalTok{(quanteda.textplots)}
\KeywordTok{library}\NormalTok{(udpipe) }\CommentTok{#annotation syntaxique}
\KeywordTok{library}\NormalTok{(tidytext)}
\KeywordTok{library}\NormalTok{(cleanNLP) }\CommentTok{#annotation syntaxique}
\CommentTok{#sentiment}
\KeywordTok{library}\NormalTok{(syuzhet) }\CommentTok{#analyse du sentimeent}
\CommentTok{#mise en page des tableaux}
\KeywordTok{library}\NormalTok{(flextable)}
\CommentTok{#statistiques et modèles}
\KeywordTok{library}\NormalTok{(lme4)}
\KeywordTok{library}\NormalTok{(jtools)}
\KeywordTok{library}\NormalTok{(interactions)}
\CommentTok{#ML}
\KeywordTok{library}\NormalTok{(caret)}
\CommentTok{#graphismes}
\KeywordTok{theme_set}\NormalTok{(}\KeywordTok{theme_bw}\NormalTok{())}
\CommentTok{#palettes}
\KeywordTok{library}\NormalTok{(colorspace) }\CommentTok{#pour les couleurs}
\CommentTok{# chapitre II}
\KeywordTok{library}\NormalTok{(revtools)}
\KeywordTok{library}\NormalTok{(rvest)}
\end{Highlighting}
\end{Shaded}
\hypertarget{disponibilituxe9}{%
\section{Disponibilité}\label{disponibilituxe9}}
L'ensemble du code est disponible \href{https://github.com/BenaventC/NLPBook}{sur github}. A ce stade c'est encore très embryonnaire. Les proches pourrons cependant y voir l'évolution du projet et de la \href{https://benaventc.github.io/NLPBook/}{progression}
\hypertarget{conventions}{%
\section{conventions}\label{conventions}}
Quelques conventions d'écriture du code r
\begin{itemize}
\tightlist
\item
On appele les dataframes de manière générale \texttt{df}, les tableaux intermédiaires sont appelé systématiquement \texttt{foo}
\item
Gestion des palettes de couleurs
** une couleur :" royalblue"
** deux couleurs
** 3 à 7 couleurs
\item
On emploie autant que possible le dialecte tidy.
\item
Les chunks sont notés X, le chapitre, 01 à n, les jeux. 502 est le second chunk du chapitre 4.
\item
On commente au maximum les lignes de code pour épargner le corps du texte et le rendre lisible
\end{itemize}
\hypertarget{a-faire}{%
\section{A faire}\label{a-faire}}
todo list :
\begin{itemize}
\tightlist
\item
insérer un compteur google analytics ( voir \url{https://stackoverflow.com/questions/41376989/how-to-include-google-analytics-in-an-rmarkdown-generated-github-page})
\item
modifier le titre en haut à gauche
\item
vérifier le système de références voir ( \url{https://doc.isara.fr/tuto-zothero-5-bibtex-rmarkdown-zotero/})
\item
Vérifier la publication en pdf
\item
restructurer le plan
\end{itemize}
\hypertarget{intro}{%
\chapter{Introduction}\label{intro}}
Le texte connaît une double révolution. la première est celle de son système de production, il se produit désormais tant de textes que personne ne peut plus tous les lire, même en réduisant son effort à sa propre sphère d'intérêt et de compétence, la seconde est celle de sa lecture, c'est une lecture conditionnée et recommandée..
La production primaire de textes voit son volume croître exponentiellement. Prenons quelques exemples :
La production se soumet ensuite à ceux qui en contrôlent les flux et en exploitent les contenus, qui les mettent en avant ou les écartent, définissant la composition de ce que chacun va lire. La diffusion de cette production suit des loi puissances, c'est ainsi que la révolution de la lecture est venue avec les moteurs de recherche, et les pratiques de curations (ref), c'est une lecture sélectionnée et digérée par les moteurs de recommandation. (ref).
S'il ne fallait qu'un exemple on pourrait évoquer la transformation radicale de la littérature dite scientifique sur le plan technique. La recherche par mots clés est complétée de plus en plus par des outils de veille, l'indexation a donné naissance à l'immatriculation de la moindre note, les fichiers ont adopté des standards, l'interopérabilité est de mise, le réseau des co-citations est maintenu en temps réel. Les scores qualifient autant les articles que leurs auteurs et les revues qui les accueillent.
Elle risque de ce poursuivre par la production de résumés, la transcription automatique (speech2tex) etc.
Le NLP est au coeur de ces technologies, il se nourrit de plus en plus d'intelligence artificielle. Nous en verrons de nombreux exemple à tout les stades du traitement : identifier la langue, mesurer le sentiment, isoler des sujets.
Le NLP est aussi une nouvelle ressource pour les chercheurs en sciences sociales à la fois par les matériaux empiriques et les méthodes d'analyse. C'est une mouvemenjt qui affecte toutes les shs. L'emballement de la production de texte génère une nouvelle matière d'étude pour le sociologues, le gestionnaire, l'économiste, le psychologue pour n'évoquer que quelques disciplines.
\hypertarget{une-ruxe9flexion-ancienne-et-un-nouveau-champ-muxe9thodologique}{%
\section{Une réflexion ancienne et un nouveau champ méthodologique}\label{une-ruxe9flexion-ancienne-et-un-nouveau-champ-muxe9thodologique}}
On se doit pas se faire aveugler par l'éclat de la nouveauté, les techniques d'aujourd'hui dépendent d'idées semées depuis longtemps dans au moins deux champs disciplinaire la linguistique et l'informatique
Les pratiques et techniques que nous allons étudier ne tombent pas de mars mais résultent de plusieurs flux de pensées qui se croisent se confortent et amène l'energie pour créer un nouveau bras dans le champs immensement étendu de l'étude de la langue et du langage. Et c'ets sans doute par celà qu'il faut commencer. La langue c'est l'ensemble des règle formelles et moins formelle qui constitue une parole, ce qu'on se dit de l'un à l'autre ou de l'un à aux autres. Le langage est la production de cette parole. L'inscription de cette parole par l'écriture constitue le texte. Le miracle du passage de la parole au signe est celui du symbole.
Si dans ce manuel, on choisit de présenter les différentes facettes de ce qui s'appelle TAl, NPL, Text Mining, dans une approche procédurale qui suit les principales étapes du traitement des données. On rendra compte à chaque étape des techniques disponibles, et on illustre d'exemples. Nous suivrons ici une approche plus fidèle au processus de traitement des données, lequel peut connaître une stratégie inférentielle et exploratoire - quelles informations sont utiles au sein d'un corpus de texte -, tout aussi bien qu'une stratégie hypothético-déductive. Nous resterons agnostique sur cette question, restant délibérément à un niveau technique et procédural.
\hypertarget{lhuxe9ritage-linguistique}{%
\subsection{L'héritage linguistique}\label{lhuxe9ritage-linguistique}}
la convergence de deux grands mouvements.
Sans en faire l'histoire minutieuse que ce domaine réclame, nous pouvons au moins rappeler un certains nombre d'étapes et de contributeurs clés.
La langue et le langage sont l'objet d'une interrogation millénaire mais quelques auteurs clés ont mis à jour les idées essentielles qui justifient l'usage des méthodes actuelles. Donnons en un aperçu rapide de manière historique, en bornant un champs de connaissance que nous ne pouvons qu'affleurer.
\begin{itemize}
\tightlist
\item
les sophistes : plier le langage à ses intérêy est une première sciences du langege qui produit une connaissances des dispositifs les plus efficaces. Par sur que cette displines aient trouvé un chemine de vérité,; mais elle ereste commune, c'est l'oeuvre de la publicité.L
\item
Saussure : il apporte une idée fondamentale que dans le symbole, le signe et le signifiant sont les deux face d'une même monaiie, qu'il existe une relation entre l'artefact et l'idée. Qu'un signe particulier puisse signifier une idée. c'est un penseur de la correspondance.
\item
Frith et l'idée distributionnelle. un mot trouve son sens dans ceux qui lui sont le plus associés
\item
Zipf
\item
Tesnière et les arbres syntaxiques.
\item
Chomsky et sa grammaire génératitive. enracinant le phénomène linguistique dans la cortalisation du langage, il apporte une idée forte et structuraliste d'un équivalence des langues.
\item
Genette et l'intertextualité, le palimpseste. c'est une question de sens, le sens d'un texte vient de ses prédecesssurs de ceux à qui ils se réfèrent. Les textes se parlent l'un l'autre, et ce n'est pas dans leur contenu qu'on trouvera une vérité dans dans le rapport qu'ils établissent avec leur prédecesseur par l'appareil des notes et des bibliographies.
\item
Austin et l'idée que le langage n'est \^{}pas que communication mais performation . ce qu'on dirt agit sur le monde
\item
La narrativité
\end{itemize}
\hypertarget{la-tradition-lexicologique}{%
\subsection{la tradition lexicologique}\label{la-tradition-lexicologique}}
le lexique est affaire ancienne, le français est aidé par des expériences les fondamentales : le littré, l'académie française et les dictionnaires des éditeurs. pour étudier un lanage il faut se rapporter à des formes stables, les dictionnaires les fournissent et fournisse les normes pour les coder.
L'idée de quantifier le langage n'est pas nouvelle. Encore moins s'il faut compter les occurences et les cooccurences des mots.Un vaste mouvement s'est formé dans les années soixante autour de la lexicologiue stimulée par l'école française d'analyse de données. Le descendant de ce mouvement se retrouve dans l'excellent iramutek de l'équipe de toulouse, il a été précedé par le fameur Alceste.
Nous y consacrerons un chapitre plein sur le plan technique. Mais il est important de souligner que cette école française de l'analyse textuelle ne se limite pas au comptage. Un logiciel comme trope qui d'ailleurs ne connait aucun équivalent dans l'écosystème que nous allons explorer manifeste aussi cette inventivité.
S'y exprime pleinement la logique distributionnelle.
\hypertarget{la-linguistique-computationnelle}{%
\subsection{la linguistique computationnelle}\label{la-linguistique-computationnelle}}
le frottement de la linguistique et de l'informatique se produit à propos de questions pratiques.
\hypertarget{la-question-de-la-fouille-de-donnuxe9es}{%
\subsubsection{la question de la fouille de données}\label{la-question-de-la-fouille-de-donnuxe9es}}
les nomenclatures
une convergence nécessaire
\hypertarget{la-question-du-classement-des-documents}{%
\subsubsection{la question du classement des documents}\label{la-question-du-classement-des-documents}}
Le monde des bibliothèques et celui de la GED.
\hypertarget{les-facteurs-de-duxe9veloppement}{%
\section{Les facteurs de développement}\label{les-facteurs-de-duxe9veloppement}}
Ces développements sont favorisés par un environnement fertile dont trois facteurs se renforcent mutuellement. Ils conduisent à l'élaboration de nouvelles méthodes.
\begin{itemize}
\tightlist
\item
la naissance de langue universelle
\item
l'emergence vaste ensemble de données textuelle
\item
la naissance d'une communauté épistémique, de pratique et
\end{itemize}
\hypertarget{une-lingua-franca}{%
\subsection{Une lingua franca}\label{une-lingua-franca}}
Le premier est l'expansion de deux langages, proprement statistique pour r et plus généraliste pour Python. Le propre de ces langages est, prenons le cas de r, de permettre d'élaborer des fonctions, dont un ensemble cohérent pour réaliser certaines tâches peut être rassemblé dans une bibliothèque appelée package (et chargé par library(nomdupackage)). On dispose désormais de milliers de packages (17 788 sur le CRAN) destinés à résoudre un nombre incalculable de tâches.
\begin{figure}
\centering
\includegraphics{number_CRAN_packages.png}
\caption{hornik}
\end{figure}
Coder une analyse revient ainsi à jouer avec un immense jeu de lego, dont de nombreuses pièces sont déjà pré-assemblées. D'un point de vue pratique, les lignes d'écriture sont fortement simplifiées permettant à un chercheur sans grande compétence de codage d'effectuer simplement des opérations complexes. En retour, cette facilitation de l'analyse abonde le stock de solutions.
\hypertarget{la-multiplication-des-sources-de-donnuxe9es.}{%
\subsection{La multiplication des sources de données.}\label{la-multiplication-des-sources-de-donnuxe9es.}}
Le troisième est la multiplication des sources de données et leur facilité d'accès.
\begin{itemize}
\tightlist
\item
le contenu écrit des réseaux sociaux
\item
les rapports d'activités des entreprises,
\item
les compte-rendu archivé de réunion
\item
Les avis des consommateurs sur les catalogues de produit
\item
Les articles et les revues scientifiques
\item
Même les livres
\end{itemize}
Les plus évidentes sont proposées par les bases d'articles de presse telles qu' presseurop ou factiva. Les bases de données bibliographiques sont dans la même veine particuièrement intéressante et pensée pour ces usages.
Les données privées, et en particulier celles des réseaux sociaux, même si un péage doit être payé pour accéder aux APIs, popularisent le traitement de données massives.
Les forums et sites d'avis de consommateurs sont pour les sociologues de la consommation et les specialiste du comportement de consommation une ressource directe et précieuses.
Le mouvement des données ouvertes (open data) proposent et facilitent l'accès à des milliers de corps de données : grand débat.
\hypertarget{une-communautuxe9}{%
\subsection{Une communauté}\label{une-communautuxe9}}
Le second facteur de développement , intimement lié au premier, est la constitution d'une large communauté de développeurs et d'utilisateurs qui se retrouvent aujourd'hui dans des plateformes diverses. Le savoir, autrement dit des codes commentés se trouvent dans une varété importante de lieux :
\begin{itemize}
\tightlist
\item
Des plateformes de dépots telle que Github qui rassemblent une trentaine de millions de developpeurs et datascientits.\\
\item
Des plateformes de Q\&A (question et réponses) telles que \href{}{Stalk Over Flow},
\item
Des tutoriaux de toute sortes
\item
Des blogs ou des fédération de blog de blogs (BloggeR),
\item
Des revues (Journal of Statistical Software) et de bookdown.
\end{itemize}
Des ressources abondantes sont ainsi disponibles et facilitent la formation des chercheurs et des data scientists et la résolution de leurs problèmes pratiques, quiconque n'arrive pas à résoudre un problème a une bonne chance de trouver la solution d'un autre, à un degré de circonstance près. Elles sont d'autant plus utiles que certaines règles ou conventions s'imposent pour fluidifier l'échange.
La principale est celle de l'exemple reproductible.
La seconde est le maintien d'une éthique du partage qui encourage à partager le code, et dont une littérature importante étudie l'effet positif sur les performances économiques et la durabilité {[}rauter{]}. Les externalités de réseaux y sont fortes
Toutes les conditions sont réunies pour engendrer une effervescence créative. Python ou r, sont dans cet univers en rapide expansion, les langues véhiculaires qui favorise une innovation constante. Les statistiques de github en témoigne : près de 50 millions d'utiliseurs, 128 millions de " repositories" et 23 millions de propriétaires.
\begin{figure}
\centering
\includegraphics{github.png}
\caption{source}
\end{figure}
voir aussi
\url{https://towardsdatascience.com/githubs-path-to-128m-public-repositories-f6f656ab56b1}
\hypertarget{de-nouvelles-muxe9thodologies-pour-les-sciences-sociales}{%
\section{De nouvelles méthodologies pour les sciences sociales}\label{de-nouvelles-muxe9thodologies-pour-les-sciences-sociales}}
Pour les chercheurs en sciences sociales (et en premier lieu pour les chercheurs en gestion où toutes les sciences sociales se croisent) cette révolution textuelle offre de nouvelles opportunités d'obtenir et d'analyser des données pour vérifier ses hypothèses et mener son enquête. Ce sont de nouveaux terrains, de nouvelles méthodes et un nouvel objet de recherche.
\begin{itemize}
\item
Nouveaux terrains : La multiplication des sources de données, associée à leur normalisation rencontre une multiplication de techniques provenant de mulpliples discplinaire et qui convergent dans un langage commun. . production abondante d'avis de consommateurs, de discours de dirigeants, de compte-rendus de conseils, d'articles techniques,la linguistique computationnelle, de la fouille de données, des moteurs de recommandation, de la traduction automatique, et des ressources nouvelles et précieuses pour traiter l'abondance des données
\item
Nouvelles méthodes : Un nouveau paradigme méthodologique se construit à la croisée de données abondantes et de techniques de traitement intelligentes. Il permet d'aller plus loin que l'analyse lexicale traditionnelle en incorporant des éléments syntaxiques, sémantiques, et pragmatiques, proposés par l'ensemble des outils des techniques de traitement du langage naturel. Il se dessine surtout une nouvelle approche méthodologique qui prend place entre l'analyse qualitative, et les traditionnelles enquêtes par questionnaires capables de traiter des corpus d'une taille inédite. Le travail de \citep{humphreys_automated_2018} en donne une première synthèse dans le cadre d'un processus qui s'articule autour des différentes phases d'une recherche : la formulation de la question de recherche, la définition des construits, la récolte des données, l'opérationnalisation des construits, et enfin l'interprétation, l'analyse et la validation des résultats obtenus.
\item
Un nouvel objet : on pourrait croire qu'avec des données massives et des techniques ``intelligente'' on assiste à un retour du positivisme qui bénéficierait enfin des instruments de mesure et de calculs qui ont permis aux les chercheur plus proches de la matière des succès majeurs. Sans doute, l'administration de la preuve va être faciliter par ces techniques et encourager l'evidence based policy (REF) et résoudre en partie la crise de la réplication et de la reproductibilité. Mais à mesure que ce développe l'appareillage de méthode et de données, moins on peut supposer que l'observateur est neutre. Les téléscopes géants, les synchrotron, n'affecte ni les galaxies lointaines ni les atomes proches. Le propre des données que l'ont est amené à étudier est de résulter de la confrontation d'un système d'observation (certains préfèrent de parler de surveillance), et d'un agent qui a des buts, une connaissance, et des ressources. Le dispositif de mesure est en lui-même performatif. L'exemple le plus évident est celui des systèmes de notation, qui sous prétexte de transparence donne la distribution des répondants précédents. L'agent qui va noter choisit la valeur en fonction d'une norme apparente - la note majoritaire- et de sa propre intention - se manifester ou se confondre à la foule.
\end{itemize}
Pour se donner une idée plus précise de ce mouvement, examinons quelques publications récentes dans les champs qui nous concernent.
\hypertarget{sociologie-et-histoire}{%
\subsection{Sociologie et histoire}\label{sociologie-et-histoire}}
classes sociales avec word to vec en sociologie \citep{kozlowski_geometry_2019}.
L'article révolution française {[}PNAS)
On citera cependant jean-baptiste Coulmont et son obstination à étudier les entités nommées, prénoms et autres marqueurs culturels de l'identité et des classes.
\hypertarget{psychologie}{%
\subsection{Psychologie}\label{psychologie}}
Très tôt la psychogie s'est intéressée au langage, pas seulement comme produit des processus psychologiques, mais comme expression de ceux-ci.
Dans le champs de la psychologie de l'éducation et avec une forte motivation scientiste, dès les années 60 s'est posée la question de la mesure de la difficulté d'un texte pour un niveau d'éducation donné. La mesure de la lisibilité des texte s'est développée profitant à d'autre secteurs tels que ceux de la propagande. Dans cette même perspective, la richesse lexicographique comme représentant les compétences a a son tour développé de nouvelles instrumentations.
James W. Pennebaker a développé son approche à partir de l'étude des traumas; donnant une grande importance à la production discursive des patients. Sa contribution majeure est l'établissement d'un ensemble de dictionnaires destinés à mesurer des caractéristiques du discours. Un instrument qu'on présentatera dans les chapitre 7 (à vérifier). Auteur en 2011 d'un livre s'intéressant à l'usage des petits mots. Son approche se poursuit en psychiatrie avec l'analyse des troubles du langage, et a connu un coup d'éclat avec la demonstration que l'analyse des messages sur les réseaux sociaux comme facebook permet de détecter des risques de depression.
\hypertarget{management}{%
\subsection{Management}\label{management}}
La finance et l'analyse du sentiment
Dans le champ du management, on trouvera des synthèses pour la recherche en éthique \citep{lock_quantitative_2015}, en comportement du consommateur {[}\citet{humphreys_automated_2018} en management public \citep{anastasopoulos_computational_2017} ou en organisation \citep{kobayashi_text_2018} ,
\hypertarget{economie}{%
\subsection{Economie}\label{economie}}
economie des brevets
intervention des institutions
\hypertarget{conclusion}{%
\section{Conclusion}\label{conclusion}}
des techniques
des méthodes
\hypertarget{constitution-du-corpus}{%
\chapter{Constitution du corpus}\label{constitution-du-corpus}}
\textbf{Objectifs du chapitre : } ** explorer différente techniques de collectes de données : exploitation de bases textuelles, méthodes de scrapping, APIS, extraction de document pdf, extration de texte dans des images, et une perspective oral avec les techniques de speech2 tex.**
La constitution d'un corpus est la première étape d'un projet NLP. Il se définit d'abord par la constitution d'une collection de textes dont la provenance est la nature peut être diverse. Dans ce chapitre on va examiner plusieurs techniques de collecte, et on conclue avec quelques réflexions que la questions de la constitution de l'échantillon.
\begin{itemize}
\tightlist
\item
L'exploitation de bases textuelles
\item
Les méthodes de scrapping
\item
Le recours aux APIs
\item
La collection de document pas que textuels
\item
Les sources orales
\end{itemize}
et on conclue avec quelques réflexions que la questions de la constitution de l'échantillon.
\hypertarget{lexploitation-de-base-de-donnuxe9es-textuelles}{%
\section{L'exploitation de base de données textuelles}\label{lexploitation-de-base-de-donnuxe9es-textuelles}}
On commence par un exemple simple en utilisant la base \href{http://www.europresse.com/fr/}{europresse}. l'objectif est de constituer un fichier de références bibliographiques, exploitable via r.
Dans europresse , nous avons fait une recherche sur les articles comprenant le terme " vaccination" dans la presse nationale françaises, constituées de 14 titres. On retient les 150 derniers articles au 16 Juillet 2021.
On utilise \href{https://revtools.net/data.html\#importing-to-r}{revtools} pour sa fonction d'importation des fichier *.RIS et de transformation en data frame,
\begin{Shaded}
\begin{Highlighting}[]
\KeywordTok{library}\NormalTok{(revtools)}
\NormalTok{df <-}\StringTok{ }\KeywordTok{read_bibliography}\NormalTok{(}\KeywordTok{iconv}\NormalTok{(}\StringTok{"./data/20210719013820.ris"}\NormalTok{))}
\KeywordTok{flextable}\NormalTok{(}\KeywordTok{head}\NormalTok{(df,}\DecValTok{3}\NormalTok{))}
\end{Highlighting}
\end{Shaded}
\providecommand{\docline}[3]{\noalign{\global\setlength{\arrayrulewidth}{#1}}\arrayrulecolor[HTML]{#2}\cline{#3}}
\setlength{\tabcolsep}{2pt}
\renewcommand*{\arraystretch}{1.5}
\begin{longtable}[c]{|p{0.75in}|p{0.75in}|p{0.75in}|p{0.75in}|p{0.75in}|p{0.75in}|p{0.75in}|p{0.75in}|p{0.75in}|p{0.75in}|p{0.75in}|p{0.75in}}
\hhline{>{\arrayrulecolor[HTML]{666666}\global\arrayrulewidth=2pt}->{\arrayrulecolor[HTML]{666666}\global\arrayrulewidth=2pt}->{\arrayrulecolor[HTML]{666666}\global\arrayrulewidth=2pt}->{\arrayrulecolor[HTML]{666666}\global\arrayrulewidth=2pt}->{\arrayrulecolor[HTML]{666666}\global\arrayrulewidth=2pt}->{\arrayrulecolor[HTML]{666666}\global\arrayrulewidth=2pt}->{\arrayrulecolor[HTML]{666666}\global\arrayrulewidth=2pt}->{\arrayrulecolor[HTML]{666666}\global\arrayrulewidth=2pt}->{\arrayrulecolor[HTML]{666666}\global\arrayrulewidth=2pt}->{\arrayrulecolor[HTML]{666666}\global\arrayrulewidth=2pt}->{\arrayrulecolor[HTML]{666666}\global\arrayrulewidth=2pt}->{\arrayrulecolor[HTML]{666666}\global\arrayrulewidth=2pt}-}
\multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}label}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}type}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}title}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}author}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}abstract}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}journal}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}pages}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}year}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}language}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}url}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}DA}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}!{\color[HTML]{000000}\vrule width 0pt}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}OP}}} \\
\noalign{\global\setlength{\arrayrulewidth}{2pt}}\arrayrulecolor[HTML]{666666}\cline{1-12}
\endfirsthead
\hhline{>{\arrayrulecolor[HTML]{666666}\global\arrayrulewidth=2pt}->{\arrayrulecolor[HTML]{666666}\global\arrayrulewidth=2pt}->{\arrayrulecolor[HTML]{666666}\global\arrayrulewidth=2pt}->{\arrayrulecolor[HTML]{666666}\global\arrayrulewidth=2pt}->{\arrayrulecolor[HTML]{666666}\global\arrayrulewidth=2pt}->{\arrayrulecolor[HTML]{666666}\global\arrayrulewidth=2pt}->{\arrayrulecolor[HTML]{666666}\global\arrayrulewidth=2pt}->{\arrayrulecolor[HTML]{666666}\global\arrayrulewidth=2pt}->{\arrayrulecolor[HTML]{666666}\global\arrayrulewidth=2pt}->{\arrayrulecolor[HTML]{666666}\global\arrayrulewidth=2pt}->{\arrayrulecolor[HTML]{666666}\global\arrayrulewidth=2pt}->{\arrayrulecolor[HTML]{666666}\global\arrayrulewidth=2pt}-}
\multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}label}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}type}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}title}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}author}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}abstract}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}journal}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}pages}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}year}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}language}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}url}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}DA}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}!{\color[HTML]{000000}\vrule width 0pt}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}OP}}} \\
\noalign{\global\setlength{\arrayrulewidth}{2pt}}\arrayrulecolor[HTML]{666666}\cline{1-12}\endhead
\multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}By.Cecilia.Kang\_2021\_TheNewYorTim}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}NEWS}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}Facebook\ Says\ Biden\ Is\ Scapegoating\ Over\ Vaccine\ Falsehoods}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}By\ Cecilia\ Kang}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}The\ social\ network\ and\ the\ Biden\ administration\ have\ engaged\ in\ an\ increasingly\ rancorous\ war\ of\ words\ over\ the\ issue\ of\ vaccine\ misinformation.\ WASHINGTON\ --\ Facebook\ and\ the\ Biden\ administration\ engaged\ in\ an\ ...}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}The\ New\ York\ Times}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}B\ 3}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}2021}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}English}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}https://nouveau.europresse.com/Link/PARIS10T\_1/news\%c2\%b720210719\%c2\%b7NY\%c2\%b7721611}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}19/07/2021}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}!{\color[HTML]{000000}\vrule width 0pt}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}19/07/2021}}} \\
\multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}By.Matt.Stevens\_2021\_TheNewYorTim}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}NEWS}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}Rules\ for\ Audiences\ Can\ Spin\ Heads}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}By\ Matt\ Stevens}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}Vaccination\ and\ mask\ requirements\ vary\ by\ venue.\ It's\ a\ weird\ pandemic\ summer\ for\ the\ performing\ arts.\ During\ its\ preview\ performances\ in\ June,\ New\ York\ Classical\ Theater\ was\ allowed\ to\ put\ ...}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}The\ New\ York\ Times}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}C\ 1}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}2021}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}English}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}https://nouveau.europresse.com/Link/PARIS10T\_1/news\%c2\%b720210719\%c2\%b7NY\%c2\%b7456420}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}19/07/2021}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}!{\color[HTML]{000000}\vrule width 0pt}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}19/07/2021}}} \\
\multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}By.Lisa.Lerer\_2021\_TheNewYorTim}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}NEWS}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}The\ Republican\ Path\ From\ Warp\ Speed\ Praise\ To\ Vaccine\ Opposition}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}By\ Lisa\ Lerer}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}...\ 'll\ try\ to\ answer\ it.\ Have\ a\ comment?\ We're\ all\ ears.\ Email\ us\ at\ <occ.email>\ onpolitics@nytimes.com</occ.email>\ or\ message\ me\ on\ Twitter\ at\ @llerer\ .\ By\ the\ numbers:\ \$15\ billion\ ...\ That's\ roughly\ the\ ...}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}The\ New\ York\ Times}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}A\ 17}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}2021}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}English}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}https://nouveau.europresse.com/Link/PARIS10T\_1/news\%c2\%b720210719\%c2\%b7NY\%c2\%b7715549}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}19/07/2021}}} & \multicolumn{1}{!{\color[HTML]{000000}\vrule width 0pt}>{\raggedright}p{\dimexpr 0.75in+0\tabcolsep+0\arrayrulewidth}!{\color[HTML]{000000}\vrule width 0pt}}{\fontsize{11}{11}\selectfont{\textcolor[HTML]{000000}{\global\setmainfont{Arial}19/07/2021}}} \\
\noalign{\global\setlength{\arrayrulewidth}{2pt}}\arrayrulecolor[HTML]{666666}\cline{1-12}
\end{longtable}
\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{df<-df}\OperatorTok{%>%}
\StringTok{ }\KeywordTok{mutate}\NormalTok{(}\DataTypeTok{jour=}\KeywordTok{substring}\NormalTok{(DA,}\DecValTok{1}\NormalTok{,}\DecValTok{2}\NormalTok{))}
\NormalTok{g22<-}\KeywordTok{ggplot}\NormalTok{(df, }\KeywordTok{aes}\NormalTok{(}\DataTypeTok{x=}\NormalTok{jour))}\OperatorTok{+}
\StringTok{ }\KeywordTok{geom_bar}\NormalTok{()}\OperatorTok{+}\KeywordTok{labs}\NormalTok{(}\DataTypeTok{x=}\OtherTok{NULL}\NormalTok{,}\DataTypeTok{y=}\StringTok{"Fréquence"}\NormalTok{)}\OperatorTok{+}
\StringTok{ }\KeywordTok{geom_vline}\NormalTok{(}\DataTypeTok{xintercept=}\DecValTok{12}\NormalTok{, }\DataTypeTok{linetype=}\StringTok{"dashed"}\NormalTok{, }\DataTypeTok{color =} \StringTok{"red"}\NormalTok{)}\OperatorTok{+}
\StringTok{ }\KeywordTok{facet_grid}\NormalTok{(}\KeywordTok{vars}\NormalTok{(journal))}
\NormalTok{g22}
\end{Highlighting}
\end{Shaded}
\begin{figure}
{\centering \includegraphics[width=0.8\linewidth]{bookdown-demo_files/figure-latex/201-1}
}
\end{figure}
\begin{Shaded}
\begin{Highlighting}[]
\CommentTok{# screen_topics()}
\end{Highlighting}
\end{Shaded}
\texttt{revtools} n'est pas fait que pour importer des données au format bibliographique .ris, ou au format .bib, et de les transformer un tableau observations - variables ( bref, un dateframe). Il a des fonctions de visualisations rapides fort efficace. La plus spectaculaire est un outil de visualisation qui s'appuie sur deux modèles de détections de topics (ce sujet sera l'objet du chapitre 8), paramétrables de manière interactive en quelques minutes, et conçu avec \texttt{shiny}, le package star des graphes interactifs.
C'est un super outils pour avoir un premier coup d'oeil sur les données, un plug in super pratique.
On l'applique sur nos données. L'allure de l'interface est la suivante.
\begin{figure}
\centering
\includegraphics{./images/LDA_revtools.jpg}
\caption{screen\_topic}
\end{figure}
L'interface n'étant pas programmatique, on exporte quelques images en jpeg (un bouton dans l'interface permet de faire celà sans effort) et on les récupère avec \texttt{cowplot}, le package qui permet d'assembler des graphes et que nous utiliserons systématiquement dans ce cours.
\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{p1 <-}\StringTok{ }\KeywordTok{ggdraw}\NormalTok{() }\OperatorTok{+}\StringTok{ }\KeywordTok{draw_image}\NormalTok{(}\StringTok{"./images/topic_espace.png"}\NormalTok{)}
\NormalTok{p2 <-}\StringTok{ }\KeywordTok{ggdraw}\NormalTok{() }\OperatorTok{+}\StringTok{ }\KeywordTok{draw_image}\NormalTok{(}\StringTok{"./images/topic_topic.png"}\NormalTok{)}
\NormalTok{p3 <-}\StringTok{ }\KeywordTok{ggdraw}\NormalTok{() }\OperatorTok{+}\StringTok{ }\KeywordTok{draw_image}\NormalTok{(}\StringTok{"./images/topic1.png"}\NormalTok{)}
\NormalTok{p4 <-}\StringTok{ }\KeywordTok{ggdraw}\NormalTok{() }\OperatorTok{+}\StringTok{ }\KeywordTok{draw_image}\NormalTok{(}\StringTok{"./images/topic5.png"}\NormalTok{)}
\KeywordTok{plot_grid}\NormalTok{(p1, p2 , }\DataTypeTok{ncol=}\DecValTok{2}\NormalTok{)}
\end{Highlighting}
\end{Shaded}
\begin{figure}
{\centering \includegraphics[width=0.8\linewidth]{bookdown-demo_files/figure-latex/202-1}
}
\end{figure}
Et pour illustrer les graphiques des termes les plus proches du topic 1 et du topic 5. L'un est relatif à l'actualité austrlienne, l'autre à l'actualité anglaise.
\begin{Shaded}
\begin{Highlighting}[]
\KeywordTok{plot_grid}\NormalTok{(p3, p4 , }\DataTypeTok{ncol=}\DecValTok{1}\NormalTok{)}
\end{Highlighting}
\end{Shaded}
\begin{figure}
{\centering \includegraphics[width=0.8\linewidth]{bookdown-demo_files/figure-latex/203-1}
}
\end{figure}
La méthode est sympa, rapide, sur le pouce, mais pas suffisante pour aller audelà et noatmment comparer les lignes éditoriales des deux titres que nous avons choisis. A ce stade de l'analyse c'est déjà beaucoup.
\hypertarget{jouer-avec-les-bases-bibliographiques}{%
\section{Jouer avec les bases bibliographiques}\label{jouer-avec-les-bases-bibliographiques}}
Fulltext
\url{https://books.ropensci.org/fulltext/data-sources.html}
\hypertarget{scrapping}{%
\section{Scrapping}\label{scrapping}}
Le scrapping correspond à un internet sauvage où la collecte d'information se traduit par une technique de chasseurs-cueilleurs, le glanage. c'est l'activité qui consiste à moissonner les informations disponibles sur le net en simulant et en automatisant la lecture par un navigateur ( on préfère l'expression des quebecois : des butinuers).
Elle consiste à construire un robot capable de lire et d'enregistrer les informations disponibles sous forme html puis à les distribuer (parsing) dans des tableaux structurés, selon une stratégie d'exploration du web préalablement définie. En réalité le scrapping pose deux problèmes :
\begin{itemize}
\tightlist
\item
celui de la structure de recherche. C'est le problème que relève les spiders, des robots qui recherchent dans les pages des liens, et vont de proche en proche, de lien en lien, pour explorer un domaine.Ils peuvent être plus systématique et prendre avantage de l'organisation d'un site web pour enummérer les pages.
\item
celui de la collecte de l'information sur chacune des pages. Il s'appuie sur le principe que le langage html est un langage à balise où le contenu et le contenant sont clairement séparés. Par exemple, dans le corps de texte d'une page on définira un titre par la balise
dont l'instruction s'achève par la balise
. On sépare ainsi clairement le contenu de la forme.
\end{itemize}
`
Un titre de niveau 1 (un gros titre)
\begin{verbatim}
<p>Un paragraphe.</p>
<h2>Un titre de niveau 2 (un sous titre)</h2>
<p>Un paragraphe.</p>
<h3>Un titre de niveau 3 (un sous-sous titre)</h3>
<p>Etc.</p>
\end{verbatim}
`
Ultérieurement on pourra définirs les propriété graphiques d'une balise par des CSS. par exemple avec ceci les paragraphes seront publiés en caractère bleu.
\texttt{p\{\ \ \ \ \ color:\ blue;\ \}}
Ce qui nous intéresse n'est pas la décoration, mais le fait que les développeurs définissent des balises spécifiques pour chacun des éléments de leurs page web, et que si nous savons les repérer , nous avons le moyen de mieux lire le texte. Les balises sont la cible du scrapping
\hypertarget{rvest-avec-r}{%
\subsection{rvest avec r}\label{rvest-avec-r}}
De nombreuses ressources sont disponibles, mais pour en rester à r , le package rvest permet de réaliser des extractions simples mais suffisantes pour de nombreux usages.
une application rvest
\url{https://www.r-bloggers.com/2018/10/first-release-and-update-dates-of-r-packages-statistics/}
le package rvest est générique
\url{https://community.rstudio.com/t/scraping-messages-in-forum-using-rvest/27846/2}
\begin{Shaded}
\begin{Highlighting}[]
\KeywordTok{library}\NormalTok{(rvest)}
\CommentTok{# Scrape thread titles, thread links, authors and number of views}
\NormalTok{start <-}\StringTok{ "https://uberzone.fr/threads/si-la-vaccination-devient-obligatoire-vous-feriez-vous-vacciner-ou-changeriez-vous-de-corps-de-metier.17425"}
\NormalTok{x<-}\KeywordTok{c}\NormalTok{(}\StringTok{"/page-2"}\NormalTok{, }\StringTok{"/page-3"}\NormalTok{, }\StringTok{"/page-4"}\NormalTok{)}
\ControlFlowTok{for}\NormalTok{ (val }\ControlFlowTok{in}\NormalTok{ x)\{}
\NormalTok{ url<-}\KeywordTok{paste0}\NormalTok{(start,val)}
\NormalTok{ h <-}\StringTok{ }\KeywordTok{read_html}\NormalTok{(url)}
\NormalTok{post <-}\StringTok{ }\NormalTok{h }\OperatorTok{%>%}
\StringTok{ }\KeywordTok{html_nodes}\NormalTok{(}\StringTok{".bbWrapper"}\NormalTok{) }\OperatorTok{%>%}
\StringTok{ }\KeywordTok{html_text}\NormalTok{()}\OperatorTok{%>%}
\StringTok{ }\KeywordTok{str_replace_all}\NormalTok{(}\DataTypeTok{pattern =} \StringTok{"}\CharTok{\textbackslash{}t}\StringTok{|}\CharTok{\textbackslash{}r}\StringTok{|}\CharTok{\textbackslash{}n}\StringTok{"}\NormalTok{, }\DataTypeTok{replacement =} \StringTok{""}\NormalTok{)}
\NormalTok{post}
\CommentTok{#authors <- h %>%}
\CommentTok{# html_nodes(".username--style2 ") %>%}
\CommentTok{# html_text() %>%}
\CommentTok{# str_replace_all(pattern = "\textbackslash{}t|\textbackslash{}r|\textbackslash{}n", replacement = "")}
\CommentTok{# Create master dataset (and scrape messages in each thread in process)}
\NormalTok{master_data <-}\StringTok{ }
\StringTok{ }\KeywordTok{tibble}\NormalTok{(post)}
\NormalTok{rds_name<-}\KeywordTok{paste0}\NormalTok{(}\StringTok{"./data/df_"}\NormalTok{,}\KeywordTok{substr}\NormalTok{(val,}\DecValTok{2}\NormalTok{,}\DecValTok{6}\NormalTok{),}\StringTok{".rds"}\NormalTok{)}
\KeywordTok{saveRDS}\NormalTok{(master_data,rds_name)}
\NormalTok{\}}
\KeywordTok{head}\NormalTok{(master_data)}
\end{Highlighting}
\end{Shaded}
\begin{verbatim}
## # A tibble: 6 x 1
## post
## <chr>
## 1 "Je comprends pas pourquoi persistez-vous à vouloir convaincre alors que vous~
## 2 "Shibani a dit:Je comprends pas pourquoi persistez-vous à vouloir convaincre ~
## 3 "*****\"Celui qui ne pète pas et ne rote pas explose\"*****"
## 4 "mez a dit:Ta cirrhose et ton Cancer du poumon (je te les souhaite pas faut ~
## 5 "Shibani a dit:Et puis sache que comme je l’ai déjà dit tu peux acheter ton p~
## 6 "*****\"Celui qui ne pète pas et ne rote pas explose\"*****"
\end{verbatim}
\hypertarget{des-probluxe8mes-pratiques-juridiques-et-uxe9thiques}{%
\subsection{Des problèmes pratiques, juridiques et éthiques}\label{des-probluxe8mes-pratiques-juridiques-et-uxe9thiques}}
La pratique du scrapping se heurte d'abord à une question technique. ce n'est pas un excercice facile, et il doit être confier à des spécialistes. Il se heurte aussi à différents problèmes d'ordre éthique et juridique. Si la pratique n'est pas interdite en tant que telle, elle se confronte à différents droits et principes éthiques
En termes pratiques, le scrapping crée des risques pour les sites :
\begin{itemize}
\tightlist
\item
Le risque de deny of service, c'est à dire de saturer ou de parasiter un système et de s'exposer à ses contre-mesures.
\item
Il contribue à la complexification du web, et implique une consommation excessive de ressources energétiques.
\end{itemize}
Et des risques pour la qualité dU recueil de données
\begin{itemize}
\tightlist
\item
Le risque d'information parcellaires, tronquées, inexactes qui résultent de ces contre-mesures. Les producteurs développent des stratégies moins naives. L'exemple des pages numérotée par ordre de production auxquels on substitue un nombre au hasard pour annihilier l'information temporelle.
\item
le risque matériel de mal lire les informations, pour des raison d'encodage approximatifs.
\end{itemize}
En termes de droits même les conditions légales relèvent de différents droits :
\begin{itemize}
\tightlist
\item
De la propriété intellectuelle,
\item
Du respect de la vie privée,
\item
Du droit de la concurrence qui sans l'interdire, condamne la copie laissant espérer qu'une transformation des données fasse qu'il y échappeR.
\end{itemize}
Cependant des facilités et tolérances sont souvent accordées quand c'est dans un objectif de recherche et que des précautions minimales d'anonymisation ou de pseudonymisation sont prises, et que les règles de conservation et de destruction des données sont précisées.
En termes éthiques
\begin{itemize}
\tightlist
\item
Un principe éthique essentiel dans la recherche, et ailleurs, et de ne pas nuire à la soci2té dans son ensemble, hors cette technique participe à la ``robotisation'' du web (plus de 50\% du trafic résulterait de la circulation des spi.ders , scrapers, sniffers et autres bots, comme dans la forêt une éthique écologique revient à préveler le minimal nécessaire pour l'étude entreprise
\end{itemize}
\hypertarget{les-api}{%
\section{les API}\label{les-api}}
Les API doivent être considérées comme la voie normale d'accès à l'information, du moins en droit. Elles relèvent du contrat. Le recours aux APIs est civilisé, ne serait-ce parce qu'on introduit une sorte d'étiquette, des règles de courtoisie, un système de reconnaissance réciproque et d'attribution de droits.
Sur le plan méthodologique elles présentent d'avantage de donner aux requêtes un caractère reproductible , mêmes si les bases visées peuvent varier. Elles asurent une grande fiabilité des données.
L'utilisation d'API lève l'ambiguïté légale qui accompagne le scraping et peut ainsi paraître comme plus ``civilisée''. Elle nécessite naturellement que le gestionnaire de la base de données fournisse les moyens de s'identifier et de requêter, elle peut avoir l'inconvénient d'être coûteuse quand l'accès est payant, ce qui sera de plus en plus le cas.
\hypertarget{un-tour-dhorizon-des-api}{%
\subsection{Un tour d'horizon des API}\label{un-tour-dhorizon-des-api}}
La plus part des grandes plateformes offrent des API plus ou moins ouvertes, examinons-en quelques une pour comprendre plus clairement leur intérêt méthodologique. On va se concentrer sur trois exemples : le firehose de tweeter, l'api de google maps, la Crunchbase.
Twitter n'est pas qu'un réseau social, c'est une gigantesque base de données qui enregistre les engagements et les humeurs de 500 millions d'humains à travers la planète et les centres d'intérêt. Elle permet potentiellement de saisir les opinions à différentes échelles géeographique et temporelle, y compris les plus locales et les plus courtes. Elle a le défaut de souffrir fortement de biais de sélection, le premier étant le biais d'engagement. Les passionnés d'un sujets parlent plus que les autres, une parôle mieux contrôlée.
Le cas de Google maps est passionnant à plus d'un égard. le premier d'entre eux est que dans l'effort d'indicer chaque objet de la planête, la base de données devient un référentiel universel, plus qu'une représentation intéressée du monde. Quand l'utilisateur communs cherche un chemin optimal, l'analyste de donnée trouve un socle pour ordonner le monde.
La Crunchbase construite par le média Techcrunch repertorie les créations de start-up et les levées de fonds qu'elles ont obtenues. Elle recence les dirigeants, les acquisitions, décrit les business model.
intégrité des bases de données, universalité des élément, interopérabilité, disponibilité
Les problèmes posés :
\begin{itemize}
\tightlist
\item
justesse , précision et représentativité. leur constitution n'est pas aléatoire, leurs couverture reste partielle.
\item
accessibilité, la privatisation du commun. Si pour le chercheur les APIS sont sur un plan de principe une merveille sur un plan plus social elle instaure des inégalités d'accès énormes aux données qui permettent de valoriser la connaissance. Ce mécanisme opère via deux canaux. Le premier est celui de la tarification qui ségrège les chercheurs en fonctions des ressources dont ils disposent. Le second passe par la couverture du champs, les données les plus précises et les plus denses se trouvent dans les régions les plus riches.
\item
des catégorisations peu délibérées
\end{itemize}
\hypertarget{un-point-de-vue-plus-technique}{%
\subsection{un point de vue plus technique}\label{un-point-de-vue-plus-technique}}
\url{https://www.dataquest.io/blog/r-api-tutorial/}
\hypertarget{un-exemple-avec-rtweet}{%
\subsection{Un exemple avec Rtweet}\label{un-exemple-avec-rtweet}}
\url{https://cran.r-project.org/web/packages/rtweet/vignettes/intro.html}
Plusieurs packages de r permettent d'interroger le firehose ( la bouche d'incendie!) de twitter.
\url{https://www.rdocumentation.org/packages/rtweet/versions/0.7.0}
L'authentification ne nécesssite par de clé API, il suffit d'avoir son compte twitter ouvert. Cependant la fonction lookup\_coords requiert d'avoir une clé d'api ou google cloud map. Elle permet de selectionner sur un critère géographique.
\url{https://developer.twitter.com/en/docs/tutorials/getting-started-with-r-and-v2-of-the-twitter-api}
\begin{Shaded}
\begin{Highlighting}[]
\CommentTok{#une boucle pour multiplier les hashtag }
\NormalTok{x<-}\KeywordTok{c}\NormalTok{(}\StringTok{"#getaround"}\NormalTok{,}\StringTok{"#Uber"}\NormalTok{, }\StringTok{"#heetch"}\NormalTok{)}
\ControlFlowTok{for}\NormalTok{ (val }\ControlFlowTok{in}\NormalTok{ x) \{}
\NormalTok{ tweets <-}\StringTok{ }\KeywordTok{search_tweets}\NormalTok{(val,}\DataTypeTok{n=}\DecValTok{20000}\NormalTok{,}\DataTypeTok{retryonratelimit =} \OtherTok{TRUE}\NormalTok{)}\OperatorTok{%>%}\StringTok{ }\CommentTok{#geocode = lookup_coords("france")}
\StringTok{ }\KeywordTok{mutate}\NormalTok{(}\DataTypeTok{search=}\NormalTok{val)}
\KeywordTok{write_rds}\NormalTok{(tweets,}\KeywordTok{paste0}\NormalTok{(}\StringTok{"tweets_"}\NormalTok{,}\KeywordTok{substring}\NormalTok{(val,}\DecValTok{2}\NormalTok{),}\StringTok{".rds"}\NormalTok{))}
\NormalTok{\}}
\NormalTok{df_blablacar<-}\KeywordTok{readRDS}\NormalTok{(}\StringTok{"./data/tweets_blablacar.rds"}\NormalTok{)}
\NormalTok{df_uber<-}\KeywordTok{readRDS}\NormalTok{(}\StringTok{"./data/tweets_uber.rds"}\NormalTok{)}
\NormalTok{df_heetch<-}\KeywordTok{readRDS}\NormalTok{(}\StringTok{"./data/tweets_heetch.rds"}\NormalTok{)}
\NormalTok{df<-}\KeywordTok{rbind}\NormalTok{(df_blablacar,df_uber )}
\KeywordTok{ls}\NormalTok{(df_blablacar)}
\NormalTok{foo<-df }\OperatorTok{%>%}\StringTok{ }\KeywordTok{select}\NormalTok{(account_lang, geo_coords,country_code, country, account_lang,place_name)}
\end{Highlighting}
\end{Shaded}
On laisse le lecteur explorer les différentes fonctionnalités du package. On aime cependant celle-ci qui sample le flux courrant au taux annoncé de 1\%. Voici l'extraction de ce qui se dit en france pendant 10 mn (600s). La procédure peut donner une sorte de benchmark auquel on peut comparer une recherche plus spécifique.
\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{rt <-}\StringTok{ }\KeywordTok{stream_tweets}\NormalTok{(}\KeywordTok{lookup_coords}\NormalTok{(}\StringTok{"france"}\NormalTok{), }\DataTypeTok{timeout =} \DecValTok{600}\NormalTok{)}
\end{Highlighting}
\end{Shaded}
\hypertarget{la-gestion-des-documents}{%
\section{La gestion des documents}\label{la-gestion-des-documents}}