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.

Un bref aperçu filigrané des propositions du rapport Hautcoeur

Le rapport Hautcoeur sur l’enseignement des sciences économiques dans le supérieur a l’air intéressant, surtout si l’on s’amuse à lire le filigrane des recommandations. En partant du principe qu’on ne recommande que ce qui n’existe pas encore de manière univoque et généralisée, voici par exemple la recommandation #2, qui suit l’obligatoire recommandation #1 sur la pluridisciplinarité et la spécialisation progressive :

2. Favoriser la construction et la critique des données et des faits stylisés par les étudiants dès le premier cycle, au sein des cours d’une part, et en les associant, en tant qu’assistants, à des projets de recherche d’autre part.

L’auteur du rapport a le mérite de tenter un exercice périlleux : émettre des recommandations à destination des étudiants, sans trop directement émettre de critiques à destination… des enseignants. Mais concrètement, lorsqu’il écrit dans son résumé que “[l]es étudiants doivent apprendre à maîtriser la construction et l’analyse critique des bases de données et indicateurs statistiques”, il s’adresse aussi aux chercheurs qui font l’économie (hum) de cette critique dans leurs propres travaux—les économistes n’étant bien sûr pas les seuls concernés, seulement les plus exposés.

Il me semble en effet difficile de ne pas faire de lien entre cette recommandation et les récentes “controverses” autour des données de Reinhart et Rogoff ou, plus récemment, de Piketty ; je place “controverse” entre guillemets car, dans le premier cas, les erreurs sont grossières et avérées, alors que dans le second, la charge de l’accusation est au mieux, mince, au pire, pas complètement honnête.

On trouve aussi, dans le rapport, une proposition portée de longue date par la CJC sur l’intégration des docteurs dans la haute fonction publique, ainsi qu’une demande de contournement de l’agrégation comme instrument principal de promotion intra-disciplinaire. Dans le texte :

supprimer l’agrégation du supérieur comme mode prioritaire de recrutement

Les termes “suppression” et “agrégation” reviennent de plus en souvent côte-à-côte. L’enjeu est légèrement différent en science politique, mais la position de l’ANCMSP, votée dès 2007, mérite d’être mentionnée ici. Ayant longtemps milité dans les deux associations, je m’en tiendrai à ces simples mentions, tout en remarquant que d’autres éléments centraux du système d’enseignement et de recherche français ont survécu à des tentatives de suppression dans la période récente.

Toujours dans les recommandations, et toujours en lecture filigrane :

7. Imposer aux organisations publiques de publier les évaluations des politiques publiques effectuées sur appel d’offre et de favoriser la réplication de ces évaluations.

On aura donc lu : à l’heure actuelle, les organisations publiques ne sont pas tenues de publier les évaluations des politiques publiques effectuées sur appel d’offre (et financées par la collectivité)1. Je ne sais pas si c’est vrai, ni si ça se fait de poser une QPC sur un article (le quinzième) de la Déclaration des Droits de l’Homme et du Citoyen2.

La recommandation suivante se passe de commentaire :

8. Préciser les potentiels conflits d’intérêt des enseignants-chercheurs dans les publications, enseignements et rapports d’évaluation.

“Préciser” doit être l’antonyme d’“occulter” : filigrane, toujours.

Suivent, un peu plus loin, deux recommandations bizarroïdes : celle qui demande au CNRS de recréer les contrats post-doctoraux qu’il a supprimés par centaines quand ses crédits sont partis à l’ANR (recommandation #16), et celle qui demande à ce que cette même ANR se coordonne avec la Commission européenne pour financer des CDI (recommandation #17), ce qui semble complètement contre-nature : aucune de ces institutions ne me semble vouloir s’engager dans cette voie.

La ministre/secrétaire d’État trouvera tout cela certainement très intéressant, et y trouvera même certainement des ressemblances avec les discussions sur ces mêmes points lors des Assises qu’elle avait elle-même organisé. Idem pour une bonne partie des annexes reprenant les enquêtes CEREQ, que l’on retrouve dans un rapport sur deux.

Pour terminer, big up à Baptiste Coulmont, grâce à qui on trouve désormais des graphiques réalisés avec R dans un rapport public ! Voir page 123, reproduite ci-dessous. En revanche, les “nuages de mots” des autres pages ne me semblent pas servir à grand chose, même si c’est joli.

Screen Shot 2014-06-09 at 1.32.13 PM

Voilà pour l’aperçu des premières pages — sachant que la lecture des premières pages est exactement ce qu’il restera, à terme, du rapport. Allez jeter un coup d’oeil par vous-même, et dîtes-moi si vous y avez lu autre chose : pour ma part, j’y ai trouvé d’excellentes propositions, en lien avec d’autres propositions actuelles, et sans révolution copernicienne du statu quo : un rapport public comme on les connaît dans le secteur.

  1. L’État n’ayant pas besoin de passer des marchés publics avec ses propres corps d’inspection, peut-être est-il moins concerné que les collectivités locales, qui dépensent des sommes parfois faramineuses en rapports d’audit. []
  2. En revanche, pour avoir déjà consulté des rapports rendus par des micro-entreprises de consultants jugés scientifiques grâce à des diplômes gracieusement obtenus dans les années soixante (de l’aveu même de leurs détenteurs), je pense qu’il y aurait de quoi s’amuser un peu si les logiques de l’open access et de la réplication venaient à s’y appliquer. []

Qui arrivera à décoder la bombe à retardement symbolique du patrimoine des élus ?

Les décodeurs du Monde constataient récemment que les déclarations de patrimoine des élus, issues du “scandale Cahuzac”, font l’objet d’un dispositif hyper-restrictif, empêchant notamment toute prise de note lors de leur consultation en présence d’un agent préfectoral (voir les articles 1 et 3 de l’arrêté fraîchement publié).

Screen Shot 2014-06-10 at 7.37.23 PM

Aux Pays-Bas, des petits malins ont utilisé une faille juridique pour collecter en temps réel les résultats des dernières élections européennes. Rien ne semblant interdire la lecture des déclarations à haute voix, j’imagine que le dispositif français doit aussi avoir une faille—il y en a toujours au moins une, comme en matière de sécurité informatique1.

Plus sérieusement, le Parlement français a donc décidé de s’en tenir aux effets d’annonce, ce qui fait que pour un citoyen français, il reste plus difficile de s’informer sur les ressources des élus de son propre parlement que d’obtenir la même information pour la Roumanie, qui diffuse les déclarations d’intérêts et de patrimoine de ses élus, des candidats aux élections, et plus généralement de tous les agents financés par de l’argent public, qu’ils soient fonctionnaires ou pas2 :

Screen Shot 2014-06-10 at 7.46.26 PM

La comparaison avec la Roumanie est bien évidemment faussée par la corruption endémique de son appareil d’État, qu’on se doit d’espérer moindre chez les parlementaires français. Mais dans une démocratie comparable, la Grande-Bretagne, le scandale des dépenses parlementaires de 2009 me semble avoir débouché sur quelque chose de légèrement plus pertinent : les parlementaires y bénéficient désormais d’une assistance administrative les aidant à remplir leurs déclarations de revenus et à ne pas s’acheter de nains de jardin avec leur carte bancaire de représentant du peuple3.

Bref, plutôt qu’un risque de hack généralisé du dispositif grâce à une opération massive de désobéissance civile et de crowdsourcing des données, le Parlement français me semble avoir surtout pris le risque d’affronter, un de ces quatre, le même scandale que la Grande-Bretagne—c’est-à-dire un mélange d’antiparlementarisme assez rarement étayé et de dépenses injustifiées mais souvent accidentelles et futiles.

Et dans cette dernière hypothèse, les conséquences électorales seront, à coup sûr, beaucoup plus sévères que celles occasionnées par le scandale Cahuzac, sans même parler des dégâts collatéraux que de tels scandales peuvent engendrer. C’est cette perspective, inquiétante mais à mon sens tout à fait réelle, qui me fait penser que cet arrêté est une petite bombe à retardement symbolique, placée à mi-distance des deux chambres parlementaires4.

Encore un point commun avec la Grande-Bretagne, en quelque sorte.

  1. Histoire d’être bien clair, je n’encourage personne à aller vérifier cette hypothèse. Les sans-papiers savent qu’un agent préfectoral peut obtenir l’intervention des forces de police sur place. []
  2. Le dispositif roumain est né d’une condition posée lors de l’entrée du pays dans l’Union européenne. Apparemment, “deux poids, deux mesures” s’écrit “două greutăți, două măsuri” en roumain. []
  3. Je plaisante à peine : certains députés britanniques se sont fait mettre au pilori par la presse pour avoir acheté des cabanons de jardin ou des canards en plastique pour leur baignoire. []
  4. Ce raisonnement devrait inciter les parlementaires à considérer les associations comme Regards Citoyens de manière moins négative, mais je suis biaisé par mes propres amitiés sur cet exemple. []

Utiliser les résultats électoraux du ministère de l’intérieur

Toux ceux qui ont eu à utiliser un jour ou l’autre les fichiers de résultats électoraux diffusés par le ministère de l’Intérieur français savent que ceux-ci nécessitent un assez lourd travail de mise en forme afin d’être exploitables, en tout cas pour les élections pour lesquelles l’offre électorale n’est pas homogène sur le territoire (c’est-à-dire toutes sauf les présidentielles). En effet, les fichiers Excel diffusés par le ministère comprennent une ligne par territoire (commune, par exemple), et autant de colonnes que nécessaires pour mettre les résultats de tous les candidats. Il serait pourtant tellement simple de mettre le fichier en format « long », c’est-à-dire une ligne par combinaison territoire/candidat… Mais il faut croire que personne au ministère n’a jamais eu à lire un de leur fichier dans R ou un autre logiciel de statistiques (ou de cartographie). Au passage, on peut regretter que le site data.gouv ne demande ni même ne suggère à ses contributeurs de fournir les données en format tabulaire…

Quoi qu’il en soit, ceux qui ont à utiliser ces données ont généralement créé leurs petites routines pour traiter ces données. Sous Excel, le processus est particulièrement douloureux. Je me rappelle avoir fait planté des ordinateurs en faisant tourner des macros VBA…

Ayant eu à bricoler un script sous R pour importer ce genre de fichiers, j’ai décidé de le diffuser – ce qui a le mérite de m’obliger à le nettoyer un peu, et ce qui permettra, je l’espère, que d’autres l’améliorent. J’ai donc créé un tout petit package (il n’a qu’une fonction !) que j’ai mis sur mon compte Github.

Précision importante : le script, à l’heure actuelle, agrège les résultats en fonction des étiquettes attribuées par le ministère de l’Intérieur. C’est une limite importante, mais qui suffit à la plupart des utilisations courantes.

C’est une version 0.1 mais qui est fonctionnelle. À l’heure actuelle, traiter le fichier de résultat des européennes par communes (36762+ lignes, 227 colonnes) prend de l’ordre de cinq minutes sur un ordinateur de bureau classique. Ce n’est pas dramatique mais c’est un peu long. À l’avenir, je vais essayer d’accélérer cela – a priori en codant le cœur du script en C++, ce qui me forcera à m’y mettre. Mais peut-être d’autres auront-ils d’autres pistes – je ne suis pas sûr que mon algorithme soit optimal.

Sur ma todolist également : construire une application Shiny autour du package, pour que ceux qui n’utilisent pas R puissent quand même l’utiliser pour transformer leurs données.
Autre idée : permettre d’agréger les résultats autrement que par étiquette. C’est techniquement assez trivial, mais ça pose des problèmes de fond, du fait de l’hétérogénéité territoriale de l’offre électorale. Mais on pourrait imaginer la possibilité, par exemple, que l’utilisateur fournisse au script une sorte de « dictionnaire » associant les listes ou candidats à une nomenclature spécifique.

Je suis preneur en tout cas de tous les retours et suggestions des utilisateurs ! Et j’espère que ce sera utile à quelques uns !

Law Factory = Law Factory++

Le projet final du projet de recherche « La fabrique de la loi » a été présenté à la conférence « Law Factory II« . C’est en ligne depuis jeudi dernier, allez jeter un coup d’oeil :

Screen Shot 2014-06-02 at 3.22.22 PM

La conférence m’a permis de présenter mes résultats définitifs et de revoir oplein de gens chouettes, dont l’un des auteurs de Parltrack, qui m’avait appris XPath (avec Bram) il y a quelques années.

Comme j’aime beaucoup Parltrack, j’ai voulu jouer un peu avec les données. voici une visualisation interactive des amendements déposés dans les commissions du Parlement européen lors de la législature 2009-2014 (à jour du 26 mai 2014) :

Screen Shot 2014-06-02 at 3.03.09 PM

Screen Shot 2014-06-02 at 3.09.00 PM

Comme pour le Parlement français, tout est codé en une page PHP + HTML/CSS + Javascript qui utilise Sigma.js et des données exportées depuis R ; le code donne tout ce qu’il faut pour reproduire les graphiques ou la visualisation, en utilisant ggnet et rgexf.

Une page séparée montre les réseaux sous-jacents, qui sont très peu denses lorsque les commissions comptent peu de membres : la commission “Crises”, par exemple, n’a pas l’air de passionner les foules de législateurs en délire. Les dimensions des réseaux résument ces différences :

density

Note de lecture : les abréviations des commissions sont positionnées selon le nombre d’eurodéputés présents dans le réseaux (y), et le nombre total de cosignatures dans la commission (x). La taille des libellés est proportionnelle à la synthèse des deux informations, la densité du réseau.

La modularité change du tout au tout selon la commission. La pêche et les pétitions sont des commissions peu polarisées, de même que celles sur les transports, le budget ou les droits des femmes. Cette représentation change dans les commissions « Culture » ou « Agriculture », où la modularité est deux fois plus importante. Les commissions les plus polarisées (CRIS et SURE) ont trop peu de noeuds pour que la mesure soit pertinente.

modularity

Note de lecture : les abréviations des commissions sont positionnées selon la modularité de leur réseau. Les points gris donnent la modularité maximale mesurable (algorithmes Louvain et Walktrap). La couleur donne le ratio entre modularité empirique et modularité maximisée. Toutes les mesures sont comprises dans l’intervalle [0,1].