Séminaire RUSS : Web scraping et APIs avec R

Sur la sympathique invitation de Timothée Giraud, dont je parlais il y a peu, j’interviens après-demain au séminaire RUSS – « R à l’usage des sciences sociales » – co-organisé par l’Ined et par l’EHESS.

Le séminaire a lieu dans le bâtiment Olympes de Gouges de Paris Diderot (salle M19), de 9 heures à midi.

Comme dans d’autres séances de formation telles que celle-ci, il s’agira de voir quels outils permettent de récupérer des données depuis Internet, soit par le biais d’extractions depuis des pages HTML, soit par le biais d’APIs dédiées à la diffusion de données par moyens programmatiques.

Vous avez déjà entendu parler de ces sujets ici : ce blog parle beaucoup de scraping, un peu moins d’APIs—il me semble que la dernière dont j’ai fourni un exemple d’utilisation est celle de Thèses.fr.

Les slides de ma présentation sont disponibles sur le site du séminaire RUSS. En voici un aperçu, que je poste uniquement pour pouvoir montrer ma slide « RTFM » (vers la fin) :

Quasiment toutes les images des slides sont cliquables pour obtenir les sources.

Bonne lecture, et/ou à bientôt si vous êtes inscrit(e) au séminaire !

Women Also Know Stuff, édition personnelle 2017/04

La suite de ce billet. Éditions précédentes : 2017/01, 2017/02, 2017/03. Cette édition s’éloigne peut-être encore un peu plus du sujet principal de ce blog que les éditions précédentes.

  1. Masha Gessen, déjà mentionnée en 2016 : « The Styrofoam Presidency », une description, hélas, parfaite de la présidence de Donald Trump.

  2. Margarethe von Trotta, pour son film Hannah Arendt, que j’ai enfin fini par regarder, et apprécié (notez que je suis assez facile à satisfaire en cinéma). Hannah Arendt y est interprétée par Barbara Sukowa, aux côtés d’excellents second rôles tels que Ulrich Noethen en Hans Jonas.

  3. Béatrice Cherrier, déjà mentionnée l’an dernier : « The Making of Economic Facts: A Reading List ». Sur un sujet proche, ne ratez pas sa série de tweets au sujet de la panique suscitée par l’administration Trump en matière de données économiques :

    Many layers in econs’ “data distress” right now. But huge current threat shouldn’t conceal deeper long-term issues.

    …Série devenue un billet hyper-détaillé : « Les économistes face à la défiance de la société civile: faut-il déclarer la guerre des nombres ? ». Chapeau !

    Notons au passage que Trump est en train de donner une couleur un peu différente à la littérature scientifique sur la quantification. Jusqu’ici, cette littérature, qui a ses origines dans des travaux de sociologie historique, s’est présentée sous la forme d’une sociologie de la production de données, et le plus souvent, de la production de données par l’État, et des résistances qu’elle suscite. Avec Trump, on passe une étape vers une sociologie politique de la quantification, où des acteurs de la société civile luttent désormais pour éviter la perte, plutôt que la production, de données.

  4. Laura Norén co-publie, avec Brad Stenger, la meilleure newsletter de data science, la Data Science Community Newsletter de la NYU, déjà mentionnée dans ce billet sur l’open access scientifique.

  5. Sharece Thrower, pour son superbe sens du timing :

    thrower-ajps-31-jan-2017

    Voir également son tout aussi pertinent article « Legislative Capacity and Executive Unilateralism », co-écrit avec Alexander D. Bolton.

  6. Amy Adams, pour son rôle de linguiste perturbée dans Arrival (de Denis Villeneuve), que j’ai beaucoup aimé, mais aussi pour son rôle dans Nocturnal Animals, également sorti l’an dernier.

    amy-adams-arrival

    Notons au passage que les deux films ont chacun une très, très belle bande originale. Celle de Jóhann Jóhannsson pour Arrival est remarquable, mais celle d’Abel Korzeniowski pour Nocturnal Animals m’a encore plus bluffé.

  7. Carla Bley, « A.I.R. » (All India Radio), découvert grâce à la reprise du morceau sur un bootleg de Jan Garbarek à Kirchheim en 1973 :

    Extrait de l’album Escalator over the Hill, découvert grâce à la fine équipe du Club Jazzafip, qui s’arrange pour toujours programmer au moins un morceau exceptionnel par émission. Merci aux deux animatrices du Club, Jane Villenet et Charlotte Bibring.

  8. J’ai récemment découvert qu’il y a deux doctorantes de Sciences Po qui travaillent sur les usages politiques de Twitter par les élus, parlementaires, candidats en campagne, et leurs militants : Florence Nocca, au CEE, et Joyce Bessis, au CERI. À suivre.

  9. Christiane Taubira s’exprime dans les colonnes du Monde, ce qui donne l’occasion, de plus en plus rare, d’entendre un discours d’homme (de femme) d’État. Je ne suis pas certain de comprendre sa « sociologie », mais je la trouve déjà moins stupide, ce qui n’est certes pas très difficile, que celle de Manuel Valls :

    Il y a un principe fondamental en sociologie, c’est se nommer soi-même.

    Intéressant cas sociologique, d’ailleurs, que celui de Mehdi Meklat, cas scandaleux auquel Christiane Taubira a été associée pour avoir dialogué avec le bonhomme. Il faudrait une énorme couche de Goffman et de Douglas pour parler de Meklat, mais je n’ai pas le temps.

  10. Bérengère Viennot, pour son entretien dans la Los Angeles Review of Books, qui fait suite à son article dans Slate, « Pour les traducteurs, Trump est un casse-tête inédit et désolant ». L’URL permanente de l’article, qui laisse deviner ce qui était peut-être le titre original du texte, est toutefois beaucoup mieux tourné : « traduire Trump, mourir un peu ».

Mention spéciale : Mutamassik = متمسك, déjà citée en février, pour son album Symbols Follow (2015), qui est aussi bizarre que bien fichu. Maintenant que j’ai écouté l’album une bonne dizaine de fois, je souhaite le recommander à nouveau. Le preview intégral ci-dessous ne fait malheureusement pas honneur à la qualité de la production de l’enregistrement.

Bribes de la conférence XXL

Mi-mars, j’ai pu me rendre à un tout petit segment des journées d’étude « Science XXL », déjà rapidement évoquée dans un des quelques billets « big data » de ce blog.

La conférence se tenait salle Alfred Sauvy de l’Ined, et le peu que j’en ai vu était très réussi : bonne ambiance, présentations et arguments variés, café arôme « service public » à volonté. Et surtout, un peu à la manière du théorème de Cantor, chacune des interventions soulevait tellement de questions connexes que l’on aurait pu organiser une infinité de conférences supplémentaires en partant des positions exprimées.

L’enjeu de la conférence était de comprendre « ce que l’abondance et la diversité des données numériques font au sciences sociales », et si vous êtes intéressés par les réponses apportées à cette question, jetez un coup d’oeil aux comptes-rendus, très détaillés, d’Étienne Ollion et de Béatrice Cherrier.

Je profite de ce billet pour signaler le lancement officiel de « Démarre SHS !« , le programme “DonnÉes MAssives et Riches pour la REcherche en SHS” de l’Institut des données de Grenoble. Leur blog n’en dit pas beaucoup plus pour l’instant.

Hans Rosling ne fera plus de vidéos

Quand on aime les statistiques et la santé publique, on aime les vidéos d’Hans Rosling, qui vient de mourir d’un cancer du pancréas.

J’ai passé (des extraits de) cette vidéo dans de très nombreux cours. C’est d’ailleurs le seul « TED Talk » que j’ai regardé en entier.

Hans Rosling animait le site Gapminder, qu’il a créé avec son fils (si je me souviens bien), et dont j’ai réutilisé plein de cartes et de graphiques.

Toute la communauté de la « dataviz », dont il était devenu l’une de figures de proue pour son talent et son optimisme de vulgarisateur des statistiques du développement, est en deuil depuis hier. La communauté de « l’open data » est aussi en deuil, Rosling ayant beaucoup oeuvré pour la « libération » des données produites par les Nations Unies et par d’autres institutions.

Complément : cet article de la BBC, avec qui Hans Rosling avait travaillé sur le documentaire « The Joy of Stats« , contient quelques information supplémentaires.

Qualifier et quantifier l’activité parlementaire : demandez le programme

En octobre dernier, vous avez pu lire sur ce blog l’appel à communications de la Section Thématique 38 du Congrès AFSP 2017, « Qualifier et quantifier l’activité parlementaire : données, méthodes et pratiques« .

La sélections des communications qui seront présentées dans la section est à présent terminée, et le programme de la section est désormais disponible sur le site Internet (temporaire) de la section :

st38-prog

Le programme est en anglais car la section aura lieu en anglais, histoire de permettre aux non-francophones de se sentir un peu plus à l’aise sous le soleil montpelliérain.

La sélection et ses suites

Le programme, élaboré avec Olivier Rozenberg, est résolument international, avec des papiers de plusieurs pays francophones mais aussi d’ailleurs. La sélection a été difficile : nous avons reçu 25 propositions d’un peu partout dans le monde1, et parmi elles, beaucoup étaient assez, voire très, pertinentes.

Remarque : trop peu de femmes

Mon seul vrai regret concernant les propositions que nous avons reçues : sur les 44 auteurs listés, on ne trouve que 5 femmes, et qu’une seule femme parmi les papiers retenus2. C’est peu, et probablement en-deçà de la présence des femmes dans les milieux scientifiques qui ont reçu notre appel à communications—du moins souhaitons-le !

Au niveau de l’âge, nous avons reçu un bon mélange de « juniors » et de « seniors » ; mais au niveau du sexe, notre créneau thématique (les études parlementaires) me semble terriblement masculin… Peut-être est-ce aussi la conséquence de la coloration « méthodologique », voire « quantitativiste », de notre thème de section.

Je ne citais pas directement la « ST 38 » dans ce billet, mais vous aurez fait le rapprochement.

À noter également : la « ST 37 »

Pour celles et ceux qui seront à Montpellier, notez également l’existence de la Section Thématique 37, « Dans l’ombre de la loi. Travail au parlement et vie politique », organisée par Sébastien Michon et Étienne Ollion.

See you in Montpellier!

  1. Plus exactement, nous avons reçu des propositions de chercheurs établis dans 13 pays différents, en excluant une proposition totalement hors-sujet (la seule) en provenance des Philippines. []
  2. Toujours si l’on exclut la seule proposition complètement hors-sujet, qui nous a été envoyée par deux jeunes étudiantes. La différence de proportion est non significative, mais cela reste regrettable. []

Qualifier et quantifier l’activité parlementaire : données, méthodes et pratiques

Olivier Rozenberg et moi-même organisons une section thématique au prochain Congrès de l’Association Française de Science Politique. Voici l’appel à communications, qui se termine dans une semaine :

st38

L’appel existe aussi en anglais, et le reste des détails est à trouver sur le site Internet de la section, qui disparaîtra quand elle aura eu lieu—attendez-vous donc à ce que tous les liens de ce billet finissent en erreur 404 dans quelques temps.

Si vous aimez les parlements et les données, envoyez vite votre proposition de communication !

Remerciements

La diffusion de cet appel à communications m’a donné l’occasion de faire le tour des associations professionnelles et groupes de recherche qui travaillent sur les parlements. Outre l’AFSP et l’ANCMSP, voici la liste des groupes qui ont reçu et diffusé l’appel—avec tous mes remerciements à leurs coordinateurs et organisateurs :

La seule société qui n’ait pas diffusé l’appel est la Société Québécoise de Science Politique, mais bon, on ne va pas se fâcher pour si peu.

Remerciements supplémentaires au blog germanophone « Soziologie der Parlamente » (hébergé sur Hypothèses), qui a relayé l’appel de son côté.

Repérages supplémentaires

La liste ci-dessus n’est pas tout à fait exhaustive : pour la zone francophone, le Groupe de Recherche sur les Parlements et les Parlementaires (GRPP) de l’AFSP aurait été pertinent, mais il est apparemment inactif, de même que l’Association de science politique du Luxembourg, LUXPOL, et que les associations qui ont existé en Tunisie et au Cameroun.

De plus, si l’on souhaitait étendre la liste aux groupes d’histoire parlementaire francophones et anglophones, il faudrait aussi inclure les groupes suivants :

  1. Calenda n’a pas encore diffusé l’appel, mais c’est ma faute, j’envoie toujours trop peu à l’avance… Mise à jour : c’est fait, l’équipe de Calenda a été très rapide—merci beaucoup ! []
  2. Et l’IPSA elle-même, qui a aussi diffusé l’appel de son côté. []
  3. Ce groupe est centré sur un autre sujet, mais je n’ai pas trouvé de groupe « parlements » au sein du CES, et ai pris celui-ci en remplacement. []

Enseigner le “quanti”

enseigner-le-quanti Vous l’aviez vue annoncée sur le blog Quanti / Sciences sociales : hier avait lieu la journée d’étude “Enseigner le quanti dans le supérieur”, à l’initiative d’un comité d’organisation qui incluait notamment Pierre Mercklé et Anton Perdoncin, qui s’occupe du Séminaire de quantitativisme réflexif.

Cette journée m’a renvoyé quelques années en arrière : à Édimbourg, en 2008, les enseignants de méthodes quantitatives avaient créé un petit groupe de réflexion de quantitativistes, dont la liste de discussion s’est tarie en 2013. La journée d’étude d’hier avait une toute autre dimension : il devait y avoir 75 enseignants d’un peu partout.

La réflexion portait sur l’enseignement des méthodes quantitatives, assez rarement évoqué sur ce blog de manière frontale, sauf peut-être indirectement par les utilisations de logiciels comme Microsoft Excel (il y a longtemps), Stata (pendant plusieurs années) ou R (depuis quelques années).

La journée était très bien fichue, et je vous conseille vivement de garder un oeil sur le blog Quanti / Sciences sociales pour en récupérer ce qui en ressortira. L’enseignement du « quanti » est un secteur intéressant à plus d’un titre, et ce qui s’y produit en termes de pédagogie vaut peut-être un détour particulier.

De mon côté, j’ai retenu les points suivants :

  • L’enseignement du « quanti » est profondément par le stigmate d’être, au mieux, inintéressant (voire traumatique) pour un public qui conçoit les sciences humaines comme des humanités littéraires.
  • Le premier thème qui revenait systématiquement dans toutes les discussions était toujours celui du support informatique (du logiciel à utiliser). La seule transition qui revient tout le temps est celle vers R.
  • Le second thème qui revenait de manière latente était celui des données : des conditions éthiques et juridiques de l’accès aux données, mais aussi du type d’enquête à employer, et de ce qu’il serait possible d’envisager à l’avenir.

Le dernier point est intéressant, parce qu’il montre bien qu’il y a une forme d’ingéniérie (voire même un style cognitif) du maniement de données, qu’elles soient quantitatives ou pas, d’ailleurs—ce qui ouvre la perspective d’un enseignement du « quanti » assez proche des compétences regroupées sous l’intitulé hybride data science.

La conséquence pour l’enseignement me semble être qu’il faut envisager trois échelles parallèles de progression pédagogique :

  • une échelle d’apprentissage technique, celle de l’outil informatique et du logiciel utilisé, en particulier dès qu’il s’agit de rendre les analyses réplicables ;
  • une échelle d’apprentissage formel, qui consiste, d’une manière ou d’une autre, à faire comprendre ce que l’on mesure, et avec quelle marge d’erreur ; et
  • une échelle d’apprentissage disciplinaire, qui consiste à (faire) comprendre comment les deux apprentissages précédents contribuent à celui de le discipline.

Sur ce dernier point, mais Étienne l’a exprimé mieux que moi, la contribution du « quanti » aux sciences sociales passe en partie par sa capacité à fournir des données d’enquête, mais aussi des données intégralement numériques (initialement produites sur Internet).

Enfin, je profite de ce billet pour citer le blog ElementR, que je ne mentionne pas assez souvent. Le blog est animé par une équipe d’utilisateurs de R venant de plusieurs laboratoires de sciences sociales. À souligner dans leur excellente série de tutoriels, l’ouvrage (gratuit) “R et espace”, pour apprendre la cartographie et l’analyse spatiale avec R.

Mise à jour : les slides des interventions sont en ligne !

Extraire un réseau de coauteurs depuis la base PubMed

La base MEDLINE contient environ 23 millions d’articles scientifiques, accessibles via le moteur de recherche PubMed depuis une vingtaine d’années. Ces articles sont utilisés pour toutes sortes d’analyse, des méta-analyses aux analyses de communautés sémantiques. La base PubMed, c’est très littéralement du big data, et les chercheurs comme les entreprises le savent depuis un bail1.

Le sujet vous donne une idée de ce que je vais faire de mes vacances, mais la phase données devrait être indolore : MEDLINE est une base extrêmement bien entretenue, et les opérations ci-dessous font moins saigner des yeux que, par exemple, au hasard (p < .0001), les fichiers du Ministère de l’Intérieur. De plus, on va travailler sur des requêtes précises plutôt que sur la base intégrale.

Allez découvrir PubMed si vous n’avez jamais fait un tour, c’est un tour de force du point de vue de la science archivistique et documentaire, et un fleuron discret de la médecine scientifique contemporaine, “basée sur les preuves” (id est publiée dans une revue scientifique avec un impact factor aussi élevé que possible ; pour les preuves, la maison demande un délai d’environ quinze années supplémentaires) :

Screen Shot 2014-06-14 at 5.26.38 PM

Télécharger une requête PubMed

Les articles en accès ouvert via PubMed Central (PMC) sont facilement téléchargeables depuis un serveur FTP, mais pour obtenir les résultats d’une requête sur la base intégrale, c’est un peu plus long. Heureusement, grâce à Kristoffer Magnusson, il y a ce bout de code vieux de deux ans, qui méritait un petit remix.

La première étape consiste à envoyer une requête PubMed du même type que celle que l’on rentre dans le moteur de recherche en ligne2, et à récupérer en retour un fichier XML qui contient la requête développée en plusieurs mots-clés, après vérification de leur disponibilité dans les mots-clés du thesaurus MeSH (Medical Subject Headings) de la National Library of Medicine. La requête health (inequalit*) donne ainsi :

("health"[MeSH Terms] OR "health"[All Fields]) AND (inequalites[All Fields] OR inequaliti[All Fields] OR inequalities[All Fields] OR inequalities'[All Fields] OR inequalitiies[All Fields] OR inequalitiy[All Fields] OR inequality[All Fields] OR inequality'[All Fields] OR inequality's[All Fields] OR inequalityin[All Fields] OR inequalitys[All Fields])

Mais vous avez plutôt intérêt à formuler la requête health AND (inequality or inequalities), qui va identifier les mots-clés correspondant à l’entrée MeSH consacrée aux facteurs socio-économiques, le nom donné par PubMed aux recherches sur les inégalités de santé. La requête devient alors, sans l’antislash de formatage3 :

("health"[MeSH Terms] OR "health"[All Fields]) AND \(("socioeconomic factors"[MeSH Terms] OR ("socioeconomic"[All Fields] AND "factors"[All Fields]) OR "socioeconomic factors"[All Fields] OR "inequality"[All Fields]) OR ("socioeconomic factors"[MeSH Terms] OR ("socioeconomic"[All Fields] AND "factors"[All Fields]) OR "socioeconomic factors"[All Fields] OR "inequalities"[All Fields]))

Le nombre total d’articles correspondant à la requête se trouve dans le même fichier XML et ne demande que peu d’efforts pour être récupéré, mais c’est surtout le “numéro unique” de la requête qui va nous intéresser : la variable NCID est une chaîne unique qui permet de récupérer les résultats de notre recherche (métadonnées et résumés des articles) sans se fatiguer, une fois placée dans une boucle récupérant n articles k fois.

C’est la seconde et dernière étape : en quelques lignes, on écrit une boucle de téléchargement qui demande les mille premiers articles PubMed correspondant à la requête, qu’on sauvegarde dans un fichier XML, puis les mille suivants, et ainsi de suite. Un fichier XML, c’est du contenu entouré de balises de marquage sémantique, comme dans cet exemple :

Screen Shot 2014-06-14 at 5.04.11 PM

La boucle de téléchargement écrit un rapport qui contient la datation des fichiers, histoire que vous puissiez la lancer en plusieurs fois si nécessaire sans recommencer au début. Le code, qui fait 300 lignes à tout casser, permet aussi de compter le nombre d’articles par année, par revue, ou les deux, ou par nombre d’auteurs.

Démo : la Convention-cadre OMS FCTC

La démo du code télécharge 236 articles en rapport avec la Convention-cadre de l’OMS pour la lutte antitabac. Quand on jette un coup d’oeil aux auteurs les plus fréquents dans le corpus, on trouve par exemple J. Collin et H. M. Mamudu, des noms connus dans ce segment de la littérature :

> pubmed_names('pubmed_fctc', min = 5)
538 Warren CW    14
30     Asma S    13
169 Glantz SA    13
225  Jones NR    13
414     Raw M     8
479  Sinha DN     8
150   Fong GT     7
316 McNeill A     7
67  Borland R     6
87  Chapman S     6
98   Collin J     6
298 Mamudu HM     6

Si l’on regarde les dates, le plus intéressant est au début : les premiers articles apparaissent trois ans avant l’adoption du texte, dans une revue de l’OMS et sous la plume de chargés de mission affectés à son élaboration. Celui-ci bénéficie ensuite d’une couverture exceptionnelle en 2005, son année d’application, et sa couverture reste élevée dans les années récentes4.

> head(pubmed_years('pubmed_fctc'))
  year count
1 2000     1
2 2001     2
3 2002     3
4 2004     1
5 2005    16
6 2006     3

Faites-vous une idée des articles téléchargés en allant lire le plus ancien, qui évoque la Convention-cadre et surtout les accords du GATT : la perspective d’une remise à plat des règles du commerce mondial offre une fenêtre d’opportunité à l’OMS pour produire son propre corpus de normes, en s’inspirant d’autres conventions comme celle de Basel5.

Screen Shot 2014-06-14 at 7.59.48 PM

Voici à présent le nombre d’articles publiés chaque année en lien avec la Convention-cadre par année. Les couleurs soulignent les revues qui ont le publié le plus d’articles (sans surprise, des revues de santé publique comme Tobacco Control et Addiction), ainsi que le Bulletin de l’OMS, le BMJ et le Lancet (il n’y a pas d’articles NEJM dans le corpus).

example

Comme il n’y a pas trop de données, on peut assez bien voir les petites aberrations du corpus, comme par exemple, ci-dessous en 2005, le numéro spécial d’un institut indépendant. La revue était alors basée à Vanves et publiée majoritairement en français ; elle a changé de nom et est à présent publiée par Sage Publications.

pubmed_fctc_lang

Mais… mais où est le réseau ?

Ah, je suis content que vous posiez la question. Pour les habitués, voici donc le réseau des co-auteurs dans le corpus « Convention-cadre OMS anti-tabac », où l’on retrouve les auteurs cités avec une de leurs collègues, plus des connexions entre chercheurs américains et britanniques, le tout entouré de beaucoup d’isolats.

pubmed_fctc_net

Le code pour créer le réseau produit un réseau non dirigé, où chaque lien indique un article co-signé par les deux auteurs. Le poids du lien est inversement proportionnel au nombre de coauteurs par article, additionné pour chaque paire de coauteurs (méthode “Newman-Fowler” ; appellation non contrôlée)6.

Le code du graphique lui-même, qui utilise ggnet (actuellement en soldes !), tient en dix lignes une fois les dépendances installées (packages devtools pour lire la fonction depuis GitHub sans vous embêter, network, sna et intergraph pour les réseaux, et RColorBrewer et ggplot2 pour le graphe).

source_url("https://raw.githubusercontent.com/briatte/ggnet/master/ggnet.R")
d = pubmed_edges("pubmed_fctc")
n = network(d[, 1:2])
n %e% "w" = d[, 3] / max(d[ , 3])
n %e% "q" = as.numeric(cut(n %e% "w", quantile(n %e% "w"), include.lowest = TRUE)) / 4
ggnet(n, segment.alpha = n %e% "q",
      segment.color = "black", size = 1) + 
  geom_text(label = ifelse(degree(n) > quantile(degree(n), .9),
                           network.vertex.names(n), NA), size = 4)
ggsave("pubmed_fctc_net.pdf", width = 11, height = 11)

Les données sont quasi-exhaustives, si l’on en croit le tests initiaux de 2011-2012. En revanche, le graphe peut éventuellement contenir plusieurs fois le même auteur s’il a été identifié par plusieurs combinaisons d’initiales et/ou de noms de famille (par exemple, “C Marquez” et “CR Marquez”).

Plus tard

On ira plus loin une prochaine fois, en regardant les mots-clés et les auteurs de plus près. La méthode de construction du réseau utilisée dans la demo est très basique : d’une part, elle ne collecte aucun attribut sur les auteurs, d’autre part, elle aplanit un réseau bipartite auteur-article où le mode secondaire (l’article) est très intéressant. À suivre, donc.

  1. L’industrie pharmaceutique , par exemple, a largement investi le champ de l’édition scientifique à des fins de légitimation de ses produits. []
  2. L’opérateur par défaut est AND. Les connecteurs logiques doivent être rentrés en majuscules et en anglais. Le reste des consignes est donné dans l’aide de PubMed. []
  3. L’antislash ne sert qu’à éviter un problème d’affichage avec le moteur de formatage du blog ; il ne doit pas figurer dans le code. []
  4. Il y a eu jusqu’à 44 articles sur le sujet en 2012, année d’adoption d’un protocole supplémentaire. Pour rappel, la recherche initiale n’utilise que les résumés (et les titres) des articles. []
  5. Le problème étant, bien évidemment, que jamais l’OMS n’a pu appliquer le genre de sanctions très dissuasives que l’OMC peut employer sur les marchés mondiaux. []
  6. La méthode Newman-Fowler étant additive, ses liens peuvent donc représenter un ou plusieurs articles co-signés. Le code renvoie aussi la version brute des liens au format CSV. []

Extraire un corpus médiatique sans (trop) saigner des yeux

Vous vous êtes déjà demandé quelle avait la couverture médiatique d’un projet de loi comme le projet de loi DADVSI ? ou, plus connu, le projet de loi HADOPI, qui donna lieu à un feuilleton législatif de plusieurs années ?

J’avais très rapidement mentionné le sujet en évoquant un papier co-écrit avec Pierre Gueydier, présenté à l’AFSP en 2013 et que nous avons commencé à remettre à jour. Comme d’habitude, tout est en ligne.

Le papier portant sur la politisation, une étude préliminaire de la médiatisation des projets de loi peut être un bon moyen de jeter un premier coup d’oeil aux individus, aux institutions et aux organisations mobilisées autour de leur examen.

Quelques essais et 300 lignes de code plus loin, on dispose donc d’un corpus de 6350 articles issus de sept médias français différents1, qui ressemble à ça au fil du temps :

counts

Comment faire

  • Pour chaque média, il y a un moteur de recherche utilisant une pagination des résultats. La première étape consiste donc à parcourir chaque page de résultats, en récupérant les adresses des articles.
  • Ensuite, pour chaque article, on a accès soit à une page donnant accès au texte intégral, soit aux premières lignes du texte dans le cas des articles payants du Figaro et du Monde.
  • Enfin, il faut se donner une syntaxe permettant de sauvegarder le contenu d’un lien HTTP vers un fichier texte, ce qui demande quelques essais-erreurs avec les expressions régulières.

Les techniques servant à récupérer et à nettoyer les données ayant déjà été traitées dans plein d’autres billets (exemple), je ne développe pas sur ce point, mais suis intéressé par tout scraper équivalent pour d’autres sites de médias.

Qu’en tirer

Le raisonnement du texte étant qualitatif, l’exploration du corpus est avant tout une manière de trianguler des décisions de terrain, comme le choix de se focaliser sur certains acteurs plutôt que d’autres.

Histoire de repérer les acteurs, on extrait tous les termes contenant une majuscule initiale, que l’on nettoie ensuite des termes courants. Restent les termes comme « Vivendi Universal » ou « Frédéric Mitterrand ».

On parcourt ensuite les mille termes les plus fréquents, dont on tire une liste de presque 350 entités, allant de la classe politique à Twitter en passant par les DRM et la jurisprudence SABAM.

Voici à quoi ressemble la co-occurrence de ces entités dans les articles publiés entre 2012 et aujourd’hui, représentées sous la forme d’un réseau de termes fréquemment associés à la « mission Lescure-préparant-l’acte-II-de-l’exception culturelle » :

seq3

Le réseau est naturellement très dense (il y a énormément de co-occurrences), mais les liens sont plus ou moins ténus, grâce à une technique de pondération qui tient compte du nombre d’entités identifiées dans chaque article2.

En additionnant ces liens, on obtient un indice plus synthétique, le degré pondéré de centralité. Dans le graphique ci-dessus, la taille des entités est proportionnel à cet indice, qui n’est qu’une mesure possible parmi d’autres.

Voici donc, pour terminer, les quinze premiers scores de centralité sur la totalité des neuf années couvertes. D’autres tableaux et graphiques explorant des segments temporels spécifiques de la période couverte sont disponibles dans l’annexe du papier.

Screen Shot 2014-06-26 at 3.39.09 PM

Je n’ai pas le temps de m’acharner sur les données, mais cette preuve du concept montre qu’il n’est pas difficile de récolter un corpus médiatique, hélas moins riche qu’une base de données comme Factiva ou LexisNexis, mais d’ampleur raisonnable.

Si vous avez des suggestions sur comment modéliser tout ça proprement, à coups de topic models ou autre chose, laissez un commentaire, mais c’est en général à ce stade-là que l’on commence à saigner un peu des yeux.

  1. Libération apparaît dans le corpus Écrans.fr, et les articles des Échos ne sont pas disponibles avant décembre 2011. []
  2. Cette technique permet de mettre sur un même plan les articles en texte intégral et ceux pour lesquels on ne dispose que des deux premiers paragraphes. []

Big Data Fail ?

La base de données GDELT (Global Database of Events, Language, and Tone), déjà mentionnée ici, donne enfin lieu à quelques analyses précises. Les résultats sont sans équivoque : la base, qui contient plusieurs millions d’articles sur toutes sortes d’événements à travers toute la planète, ne sert pas à grand chose pour le moment.

Les problèmes semblent moins venir des données elles-mêmes que de leur classification a posteriori. L’exemple du kidnapping géant par Boko Haram au Nigeria en mai dernier l’illustre très bien : l’événement a été géocodé à une quarantaine d’endroits différents, avec pour conséquence… le comptage d’autant d’événements différents.

Pas étonnant, du coup, que personne ne s’y retrouve, en particulier lorsque l’architecte de la base affirme que les caricatures danoises de Mahomet sont l’événement mondial le plus saillant sur les trente-cinq dernières années. La personnalité de l’architecte en question, qui a fait toutes sortes de déclarations grandiloquentes, y est peut-être aussi pour quelque chose, mais ce n’est qu’une supposition de ma part.

Cela ne condamne pas définitivement les données, mais jette un sérieux doute sur leur exploitation en l’état actuel de la base. On peut imaginer toutes sortes de rectifications (après tout, c’est l’intérêt d’avoir placé la base en accès ouvert), ou imaginer des réformes plus radicales, comme limiter la base à quelques sources bien choisies à l’entrée et espérer en tirer quelque chose de mieux structuré à la sortie—c’est la stratégie suivie par l’outil équivalent que possède le Department of Defense américain.

Mise à jour : les données de GDELT sont en large partie des données volées (sources : PSJR, Phil Schrodt). Le cheminement des données depuis leur vol est inconnu : les deux universitaires liés au projet n’ont jamais vu les données brutes, il est donc impossible de savoir ce qu’elles contiennent vraiment. Au moins une revue a déjà réagi. À ne pas utiliser.