Notes de travail sur les réseaux de collaboration législative

J’ai eu la chance d’intervenir, il y a dix jours, dans le séminaire interne du CEVIPOL, le laboratoire de science politique de l’Université Libre de Bruxelles. J’étais invité par Émilien Paulis, que je remercie au passage pour l’invitation, pour la logistique et pour l’accueil sur place.

Mon intervention portait sur l’étude des réseaux de collaboration législative. Les slides que j’ai utilisées sont proches de celles que j’avais présentées en juin 2016 dans une conférence d’utilisateurs de R, et que j’ai présentées à nouveau cette même année dans une conférence « quanti » à Lille et dans le séminaire du Médialab de Sciences Po.

Quelques extraits ci-dessous, à cliquer pour obtenir les slides au complet :

Encart publicitaire : encore plus de cartographies réticulaires

Si vous avez aimé l’exemple de « cartographie réticulaire » publié il y a un mois au sujet des théories du complot, vous en trouverez naturellement plein d’autres sur ce blog, mais aussi dans mes notes sur R, en anglais (voir l’encart publicitaire précédent).

L’une de mes dernières notes sur R porte sur la construction d’un petit réseau de co-occurrences de mots-clés, dont voici le premier résultat :

réseau de co-occurrences

Les mots-clés que vous voyez ci-dessus m’ont été fournis par une classe de cobayes gentils étudiants du Master Governing the Large Metropolis, qui est objectivement le Master le plus chouette de la planète1. Les (17) étudiants étaient tenus de lister leurs centres d’intérêt intellectuels, ce qui a donné ce petit réseau de co-occurrences.

Ce graphe repose, à peu de choses près, sur la même méthodologie que celle utilisée pour cartographier les théories du complot, à ceci près que la note qui l’accompagne contient plus de détails techniques, notamment sur la pondération des liens dans les réseaux de co-occurrence2.

À ce stade, je n’ai pas eu recours à la détection de communautés pour classer les mots-clés en fonction de leurs co-occurrences : une lecture rapide du graphe m’a suffi. En revanche, dans une seconde note utilisant les mêmes données, je me suis amusé à reprendre le réseau bipartite initial des étudiants et de leurs mots-clés :

réseau bipartite

Or, si l’on réduit ce graphe à des liens entre étudiants plutôt qu’entre mots-clés, alors la détection de communautés devient assez intéressante, puisque l’on va pouvoir s’en servir pour repérer les clusters d’étudiants partageant les mêmes centres d’intérêt, en utilisant le même algorithme de détection de communautés que dans ma cartographie des théories du complot :

réseau unipartite avec clusters

Remarquez que j’ai la composition réelle des groupes de travail qu’ont formé les étudiants suivant mon cours, et qu’elle ne correspond pas du tout, mais alors pas du tout, à celle qui apparaît ci-dessus… Autrement dit, dans l’immense majorité des cas, les étudiants ont formé leurs groupes de travail en se fondant sur d’autres critères que leurs centres d’intérêt communs.

  1. J’aime vraiment beaucoup enseigner dans ce Master où l’on trouve, dès la deuxième semaine de cours, un exemplaire de Seeing Like A State dans les sacs des étudiants. []
  2. Voir aussi cette autre note sur la pondération des liens dans des réseaux de co-auteurs. []

Une carto du complot

En fouillant les archives du ‘Bistro, je n’ai pas trouvé trace d’un billet évoquant cette petite cartographie des théories du complot, établie à partir des archives de trois blogs français documentant ce phénomène :

cartographie du complot

Le code pour produire le graphe est déjà vieux d’un an, mais il devrait tourner avec quelques ajustements mineurs. Je m’en sers parfois comme « demo » de ce que l’on peut faire avec un minimum de scraping et de visualisation de réseaux avec R.

Construction et résultats

Le graphe est un simple réseau de co-occurrence des mots-clés choisis par les auteurs des blogs pour thématiser leurs billets. Les groupes de mots-clés en gris correspondent aux différentes communautés du graphe, détectées à partir de l’algorithme de Louvain, et les mots-clés les plus foncés sont simplement les plus centraux.

Cette visualisation permet de repérer d’un coup d’oeil les différents éléments du conspirationnisme français tel que documenté par les blogs utilisés comme sources des mots-clés : extrême-droite (et extrême-gauche), « 11 septembre », anti-sémitisme, et « politique étrangère » à base d’empire états-unien et de conflit israélo-palestinien.

On retrouve aussi ces éléments dans le conspirationnisme « off-line », par exemple chez les négationnistes français, dont l’idéologie est aussi une sorte de syncrétisme permettant d’expliquer l’ordre mondial à partir des Juifs et de leurs alliés dans la fabrication de mensonges destinés à tromper les masses.

Données et références

La principale source du réseau présenté ci-dessus est le blog Conspiracy Watch de Rudy Reichstadt, qui a aussi signé une note sur le conspirationnisme pour la Fondation Jean Jaurès. Ce blog fournit l’immense majorité des données utilisées pour construire le réseau.

Mon cher co-blogueur Joël avait aussi signé un rapport sur le conspirationnisme en France, ainsi qu’une très utile visualisation en ligne des différentes composantes de la nébuleuse conspirationniste francophone sur Internet (cliquer sur l’image pour la version interactive) :

joel-complosphere

L’analyse de la « complosphère » n’en est qu’à ses débuts, mas il y a déjà quelques travaux là-dessus, et vu l’actualité prise par ce sujet depuis l’irruption de Dieudonné et d’Alain Soral dans cet espace d’expression, il y aura aussi une section thématique sur la « Sociologie politique du conspirationnisme » au prochain Congrès de l’Association Française de Science Politique1.

  1. La section (ST 52) sera co-animée par Philippe Aldrin, qui a récemment signé une Sociologie politique des rumeurs, et Pierre France. []

Le bordel des disciplines : un exemple de topologie de l’interdisciplinarité

Je ne m’étais encore jamais penché sur le portail des thèses soutenues en France, Thèses.fr, qui est géré par l’Agence Bibliographique de l’Enseignement Supérieur (ABES). Ce portail présente l’avantage de disposer d’une API XML documentée au chapitre 3 de son manuel, et qui permet d’extraire quelques informations intéressantes du portail.

Un échantillon-test

Histoire de tester l’API, je lui ai demandé la liste des directeurs et directrices de thèses dans les disciplines « Sciences sociales, sociologie, anthropologie » et « Science politique ». L’échantillon d’environ 8 000 personnes renvoyé par le portail est naturellement biaisé, puisqu’il est centré sur ces deux catégories disciplinaires et exclut donc une immense partie des personnes catégorisées comme appartenant à d’autres domaines, telles que la psychologie ou l’histoire.

À partir de ces 8 000 noms, j’ai ensuite demandé au portail de me fournir la liste de toutes les thèses qu’ils avaient dirigées, co-dirigées ou examinées en tant que membres du jury. Ce nouvel échantillon de 51 000 thèses est, lui aussi, biaisé : d’une part, le catalogue n’est pas exhaustif, le portail ne disposant que des données que les universités veuillent bien lui transmettre, et d’autre part, l’échantillon des thèses est intrinsèquement lié au choix des directeurs et directrices de thèse mentionné plus haut.

Sur la base de cet échantillon de thèses, j’ai réussi à récupérer presque 41 000 notices bibliographiques, incluant le domaine disciplinaire de la thèse sous la forme d’un ou plusieurs codes de la classification décimale Dewey. Un peu plus de 5 000 thèses de cet échantillon contiennent plus d’un code de classification, ce qui permet de se pencher sur la topologie de l’interdisciplinarité dans cet échantillon.

Voici à quoi ressemble le “bordel des disciplines” dans cet échantillon (cliquer sur le graphique pour la version agrandie) :

network_of_disciplines

Principes de construction

Dans ce réseau, chaque noeud est un code Dewey présent dans l’échantillon. Les codes sont connectés par un lien lorsqu’ils apparaissent plus de 8 fois ensemble parmi les 5 000 thèses “interdisciplinaires” de l’échantillon, 8 étant la fréquence moyenne d’association entre deux classes dans cet échantillon. La position des noeuds est déterminée par un algorithme de Fruchterman-Reingold, un choix classique dans les algorithmes à force dirigée.

Les couleurs des noeuds correspondent à l’un des dix grandes classes Dewey qui apparaissent en abrégé sur la droite du graphique. Les liens entre deux noeuds appartenant à une même grande classe sont représentés dans la couleur de cette grande classe, ce qui permet de repérer les quelques « homophilies » disciplinaires du réseau.

L’épaisseur des liens, enfin, renvoie à la fréquence d’association entre les noeuds, prise sur une échelle logarithmique de base 10. Vu la manière dont l’échantillon a été construit, ce sont évidemment les liens de la classe 300 (« sciences sociales ») avec quelques-unes de ses sous-classes qui sont les plus forts dans le réseau observé. On pourrait inventer une pondération plus complexe des liens représentés, mais la nature très exploratoire de ce billet ne le justifie pas.

Quelques observations rapides

On peut commencer par observer que le réseau des associations disciplinaires ainsi obtenu est composé d’une très large composant principal composante connexe et de quelques associations isolées, en bas et à gauche, qui correspondent à des associations entre la classe 400 (« Langues ») et la classe 600 (« Littérature »). L’association disciplinaire « Langues et Littérature » apparaît aussi en plusieurs points du composant principal, en haut et à droite.

Il faut ensuite dire un mot des noeuds du réseau, qui sont au nombre de 65. Parmi eux, les 4 classes Dewey les mieux représentées, avec 9 ou 10 noeuds chacune, sont les classes 300 (« Sciences sociales »), 400 (« Langues »), 800 (« Littérature ») et 900 (« Histoire-géographie »), qui totalisent deux tiers des classes représentées. On retrouve ici l’association disciplinaire « LSHS » fréquente entre lettres, humanités et sciences sociales.

Les classes les moins représentées dans le réseau sont les classes 200 (« Religion », 2 occurrences), 000 (classe résiduelle) et 100 (« Philosophie-Pyschologie »). On voit bien ici comment la construction de l’échantillon a déformé sa représentation des disciplines universitaires en France, en marginalisant des disciplines – la philosophie et la psychologie – qui pèsent pourtant très lourd dans la cartographie doctorale, le portail Thèses.fr recensant plus de 40 000 directeurs ou directrices de thèse dans ces disciplines.

Du strict point de vue de la topologie du réseau, on peut enfin remarquer, en haut à gauche de sa représentation graphique, un petit amas de classes 700 (« Arts ») et 900 (« Histoire-géographie »), dont on suppose qu’il est le résultat de l’association entre art et histoire de l’art dans la cartographie universitaire. Ce n’est qu’une intuition, mais elle est robuste à l’observation : cette petite communauté persiste à plusieurs relances de l’algorithme de placement.

Pour aller plus loin

J’ai produit le petit test ci-dessous pour commencer à explorer l’API de Thèses.fr, et plus généralement les APIs de l’ABES, qui développe aussi le référentiel IdRef, par exemple. À l’aide de ce référentiel, et en bidouillant un peu, il doit être possible, par exemple, de connecter les données de Thèses.fr et celles du catalogue SUDOC.

Pour celles et ceux qui souhaitent utiliser le code R ayant servi à collecter les données et dessiner le réseau décrit dans ce billet, tout est en ligne.

Pour celles et ceux qui aiment les réseaux et les thèses, tournez-vous vers le blog de Baptiste Coulmont, qui avait déjà « défriché le terrain », notamment dans ses billets « Réseaux de sociologues : l’état actuel de la sociologie française » en 2012 et « Les amis de mes amis sont directeurs de thèse » en 2013.

Enfin, pour celles et ceux qui se demandent l’importance que peuvent revêtir les réseaux créés par les jurys de thèses, je renvoie à l’article classique d’Olivier Godechot et Nicolas Mariot, « Les deux formes du capital social. Structure relationnelle des jurys de thèses et recrutement en science politique« , dont Baptiste avait également parlé à sa sortie.

Collecte et visualisation de données législatives avec R

Le groupe d’utilisateurs R du Muséum national d’Histoire naturelle de Paris (le groupe “Sémin-R”) organise une conférence R demain. Cliquez sur l’image ci-dessous pour le programme complet :

JourneeR-2016-Programme

J’y présenterai les slides résumées ci-dessous (cliquez sur n’importe quelle image pour la version PDF complète, ou utilisez la version en ligne), et si tout se passe bien, j’aurai un court papier technique à partager sur le sujet dans moins d’un mois :

Briatte_R_MNHN_2016-2

Briatte_R_MNHN_2016-3

Briatte_R_MNHN_2016-4

La présentation reprend, en substance, une brève note que j’ai récemment publiée dans Network Science. Cliquez sur l’image ci-dessous pour accéder au preprint ou lisez directement son annexe pour le détail des données :

Briatte_NWS_published

Comme d’habitude, le code et les données sont en ligne — j’en ai déjà parlé à plusieurs occasions cette année, et vous risquez d’en entendre encore parler dans les années qui arrivent (plus de détails quand il y en aura à partager).

Affaire à suivre, donc, mais bon, c’est pas comme si je ne vous avais pas déjà un peu cassé les pieds avec R et la visualisation de réseaux de collaborations législatives depuis quelques temps déjà.

J’en profite pour saluer amicalement les collègues suisses, et Marion Deville en particulier, qui participent à la Semaine de la démocratie de Genève, et qui ont prévu d’utiliser certains de mes graphiques dans une présentation de leurs travaux lors d’un hackathon organisé le 23 septembre. Je n’ai pas beaucoup plus d’informations là-dessus, mais vous pouvez écrire à Marion si vous êtes intéressés.

En attendant, il reste quelques places pour la conférence de demain : écrivez aux gentils organisateurs (leurs coordonnées sont sur le site du Sémin-R), ou faîtes-moi très vite signe, et je ferai suivre. À demain !

Mise à jour, le jour même : malgré un léger gros problème qui m’a fait rater la matinée, je peux confirmer que la journée R du MNHN était, comme prévu, hyper-chouette, le cadre du Muséum d’Histoire Naturelle étant très agréable par ailleurs.

À noter dans les présentations, qui seront bientôt en ligne sur le site du RUG MNHN :

  • les dernières améliorations du package FactoMineR – et Factoshiny
  • l’utilisation de scripts R sur un serveur Apache
  • la visualisation de cartes auto-organisatrices
  • un exemple d’interfaçage R + Java
  • la sonification (!) de graphiques R/ggplot2

La dernière présentation, par Jérôme Sueur (l’un des deux organisateurs de la journée, avec Amandine Blin) était très divertissante. Pour comprendre pourquoi, jetez un coup d’oeil au package playitbyr.

Notes sur R et l’analyse de réseaux

Comme promis la semaine dernière, nouvelle annonce qui consacre mes deux obsessions pour la programmation statistique avec R et l’analyse de réseaux, toujours avec R :

r-notes

Le blog est syndiqué sur R-Bloggers, qui agrège plein de blogs sur R. Vous pouvez aussi vous y abonner par son flux Atom ou par son flux RSS.

Le moteur du blog est une version bidouillée de Dropplets.

Quelques notes déjà rédigées

J’ai commencé ce nouveau blog pour stocker des notes dont je suis le premier utilisateur, notamment sur les sujets suivants :

Je me suis aussi servi du blog pour documenter des résultats bizarres, faire des suggestions sur l’enseignement avec RStudio, et tenter des petites expériences avec jQuery, telles que celle-ci avec l’API Pinboard.

Il s’agit vraiment de notes plus que d’un blog : tout est rédigé dans un jargon pas très amusant, et il n’y a pas de commentaires, ni même de lien évident pour me contacter — d’où cette nouvelle publication en dehors du ‘bistro.

Dernière petite chose, vous pouvez désormais apercevoir les derniers billets du Polit’bistro et de R / Notes sur ma homepage universitaire, encore une fois grâce à jQuery, et plus précisément grâce au plugin FeedEk, qui permet de récupérer des contenus de fils RSS :

blogs-rss-feedek

Pour les fans, il y a aussi un peu de jQuery (avec beaucoup de JavaScript et un peu d’animations CSS3) sur la page où j’héberge ma frimousse.

Bonne(s) lecture(s) !

Une liste de ressources sur l’analyse de réseaux

Mon obsession pour les structures relationnelles a difficilement pu échapper aux lecteurs de ce blog. Bonne nouvelle : cette obsession est désormais sous la forme d’une liste de plus de 200 300 ressources en ligne.

awesome-network-analysis

La liste recense les ouvrages, conférences, cours, jeux de données, revues scientifiques, collectifs de recherche, articles de synthèse, logiciels et tutoriels qui me paraissent, ainsi qu’à quelques autres, très recommandables sur le sujet.

La liste étant collaborative, vous êtes bien sûr invités à y contribuer, en y rajoutant vos ressources recommandées, ou même en proposant d’en retrancher certaines, afin de s’en tenir à une liste de ressources strictly awesome.

La liste fait pleinement usage des fonctionnalités de GitHub : sa feuille de route (des idées sur sa future diffusion) se trouve sur son wiki, et les améliorations déjà prévues sont listées à cette adresse. Voici les améliorations déjà prévues :

awesome-network-analysis-issues

Cette liste est donc aussi peut-être aussi l’occasion de vous mettre à Git, un logiciel de gestion de versions concurrentes, et surtout, à GitHub, qui simplifie énormément son apprentissage.

Annonce préliminaire en supplément : une description un peu plus technique de la liste présentée ci-dessus se trouve à cette adresse, sur un blog (en anglais) dont je reviendrai faire la publicité ici dans une semaine.

Mise à jour : la liste mentionnée ci-dessus a rejoint la liste des Awesome Lists, ainsi que la liste Awesome R et son très joli site Internet, qui contient plein de ressources utiles sur R. À explorer sans modération :

awesome-R-website

Hypothesosphère : le réseau des blogs d’Hypothèses, (presque) cinq ans plus tard

Il y a quelques années (en décembre 2010, pour être précis), Josquin Debaz avait rédigé un billet sur le réseau des blogs de la plateforme Hypothèses, “Hypothesosphère”, où il reconstituait le réseau des blogs indexés par la plateforme à partir des hyperliens entre les articles de ces blogs. Je me suis demandé si ça ne valait pas le coup d’actualiser son analyse, en récoltant des données permettant d’assembler ce réseau à différents points temporels, puis d’identifier les thèmes traités par les communautés qui forment ce réseau.

Le résultat montre qu’environ un tiers des blogs de la plateforme Hypothèses a, au moins une fois, renvoyé ses lecteurs vers un autre blog de la plateforme. Au cours des années 2009 à 2015, la plateforme s’est enrichie de nombreux blogs, ce qui donne, même lorsque l’on se concentre sur un échantillon de ces blogs, comme ci-dessous, un réseau qui contient de nombreuses “sous-communautés” (linguistiques, notamment), et quelques blogs (dont Polit’bistro !) nettement plus centraux que les autres :

hyponet

Cliquer le graphe ci-dessus pour la version PDF plus lisible, où l’on aperçoit clairement le blog des concepteurs de la plateforme (en plein milieu), ainsi que la partie germanophone d’Hypothèses (au sud). Ci-dessous, une longue notice technique, avec une visualisation temporelle du réseau à chaque année d’existence de la plateforme, et une modélisation des thématiques abordées dans les billets de chacune des communautés au fil du temps.

Échantillonnage des données

Depuis le billet de Josquin Debaz, l’index d’Hypothèses s’est beaucoup enrichi, et a aussi certainement changé au niveau du code, car les “vieux” billets (ceux de la page 300, par exemple) n’y sont pas indexés comme les nouveaux. Du coup, pour actualiser l’Hypothesosphère, mieux vaut peut-être passer par le catalogue OpenEdition, qui recense actuellement 1 071 blogs dont on peut ensuite récupérer les articles :

openedition-catalogue

Pour effectuer cette dernière opération, j’ai simplement essayé de lire chaque “page” de chaque blog, de la première à la dernière. Certains blogs, comme celui-ci par exemple, n’utilisent pas de pagination (ce que l’on peut raisonnablement considérer comme un événement survenant de manière aléatoire parmi les blogs de la plateforme), et sont en conséquence exclus de l’échantillon que l’on va constituer1.

Dans un premier temps, il faut donc lister les blogs et essayer de lister tous leurs articles. En une demi-heure d’essais-erreurs avec le code HTML des blogs, qui tournent tous sur WordPress mais pas avec les mêmes gabarits et donc avec des balises HTML différentes, j’en suis arrivé à ce script, qui est certainement plus lent que celui qu’a rédigé Josquin Debaz (en Python), mais qui fonctionne suffisamment bien sur la plateforme Hypothèses actuelle.

Le résultat est un échantillon qui contient 622 blogs, soit 60 % du catalogue total d’OpenEdition, et un total de 77 608 articles, soit 124 articles par blog en moyenne2. Si l’on compare les années de création des blogs du catalogue OpenEdition à celles des blogs contenus dans l’échantillon, les différences de proportion de chaque année à l’intérieur de chaque groupe sont minimes et aléatoires, ce qui est plutôt bon signe pour la qualité de l’échantillon.

Année Catalogue % Échantillon %
2009 76 7 65 10
2010 81 8 61 10
2011 138 13 78 13
2012 282 26 149 24
2013 233 22 118 19
2014 126 12 61 10
2015 133 12 88 14

Construction des réseaux temporels

Dans un second temps, il faut ensuite scanner le contenu des articles des blogs sélectionnés, et en extraire les liens vers des adresses de blogs hébergés sur Hypothèses. Alors que l’opération précédente n’a pas demandé plus de quelques heures, celle-ci risquait de prendre beaucoup plus longtemps, étant donné la quantité de données à parcourir. Du coup, j’ai à nouveau échantillonné dans les données, en ne téléchargeant que 25% des 77 608 articles, soit 19 402 articles3.

Vu que l’on va vouloir observer la manière dont l’Hypothesesosphère a changé au cours du temps, on va ensuite scanner ces articles pour y trouver les inter-citations entre blogs, en notant également la date de parution des articles et le nombre d’inter-citations par article, qui pourra faire office de coefficient de pondération si besoin. Je ne vais pas jusqu’à sous-échantillonner pour limiter le nombre d’articles par blog, mais c’est envisageable4.

Enfin, on va écrire le code de visualisation de l’Hypothesesosphère de chaque année, en mettant des couleurs sur les huit “communautés” de blogs les plus larges, que l’on identifie grâce à un algorithme qui maximise la modularité (le degré de ségrégation) du réseau. Le code ressemble fortement à ce que j’ai déjà décrit dans plusieurs billets précédents, et notamment dans ce petit tutoriel, qui couvre aussi la récupération des données.

Ci-dessous, un exemple de visualisation produit par ce code. Je dis “exemple” car le placement des blogs est en partie aléatoire, comme l’exige n’importe quel algorithme de placement à force dirigée. À noter aussi : la visualisation ne montre pas que le réseau est dirigé, mais il suffit de faire attention à la couleur des liens pour la deviner (lorsque les liens sont plus foncés, c’est qu’ils sont réciproques : les blogs se font mutuellement référence).

hyponet

Pour obtenir un résultat plus exhaustif, il suffit d’augmenter le seuil précité de 25%, ce qui permettra de scanner un plus grand nombre d’articles, et donc potentiellement de rendre l’Hypothesesosphère de chaque année un peu plus dense. Le seuil que j’ai choisi devrait toutefois suffire pour se faire une première idée de ce à quoi ressemble le réseau complet des inter-citations entre les blogs de la plateforme.

Modélisation des communautés

Les réseaux présentés ci-dessus contiennent des blogs, liés entre eux par des articles. Chacun de ces articles contient des mots-clés, ou a minima une catégorie qui correspond, elle-même, à un mot-clé. La plupart des mots-clés sont en français, sauf dans les sous-communautés linguistiques d’Hypothèses, qui utilisent des mots-clés, en allemand, en anglais, en espagnol.

De plus, on a segmenté chaque réseau de manière algorithmique, en communautés optimales. Par conséquent, il est facile de créer des groupes de mots-clés correspondant à une communauté de blogs connectés par leurs inter-citations, ce qui est ici une manière de passer de la forme “réseau” à la forme textuelle en intégrant l’information structurelle du réseau dans la constitution du corpus textuel.

On va donc représenter les données de nos réseaux temporels sous la forme d’un corpus, où chaque document correspond aux mots-clés d’une communauté. Le corpus produit par cette opération contient autant de documents que n’apparaissent de communautés au fil des sept années d’existence de la plateforme, soit un corpus de 127 documents : 3 pour 2009, 7 pour 2010, jusqu’à 29 documents pour 2015.

On peut nettoyer des documents de manière approximative, en nettoyant les termes comme s’ils étaient tous français—ce qui n’est pas très grave : la langue va, quoique l’on fasse, fortement discriminer les communautés de blogs non francophones. Et enfin, on envoie ces documents à un topic model structurel, qui, un peu comme dans cet exemple, prend en compte l’année et la communauté de chaque document5.

Le résultat de cette opération sera un certain nombre de “thèmes” traités par les sous-communautés d’Hypothèses, identifiés à partir de quelque chose qui se rapproche d’un modèle multi-niveaux quant au type d’information qu’on fournit à l’estimateur. Le nombre de thèmes identifiés est arbitraire : j’ai choisi d’en identifier 20, un chiffre proche du nombre moyen de communautés identifiées dans chacun des réseaux (18)6.

Résultats : les thèmes de l’Hypothesesosphère

Dans les résultats ci-dessous, chaque ligne correspond à un regroupement thématique, ordonné du plus au moins fréquent dans le corpus, et représenté par ses trois premiers mots-clés (sans les suffixes, qui ont sauté au nettoyage). On aperçoit les thèmes constitués autour des billets en langue allemande, ou ceux créés autour de zones géographiques (“chin” ou “arab”) :

hypotopics

On aperçoit aussi, dans les thèmes, certains sujets bien précis : “polit” et “scienc”, par exemple, dans le thème n°2, correspond au séminaire “Politique des Sciences” de l’EHESS. Ce dernier constat est un peu embêtant : concrètement, le modèle que l’on a utilisé a “sur-identifié” certains sujets, plutôt que d’identifier des thèmes réellement transverses au corpus.

Le modèle fournit une probabilité d’occurrence de chaque thème dans chaque document, ce qui permet de connecter les thèmes entre eux en corrélant ces probabilités. On obtient ainsi, pour terminer, le réseau de thèmes suivants, où les couleurs correspondent à nouveau aux communautés optimales, et où l’on aperçoit distinctement l’espace thématique germanophone de la plateforme Hypothèses, de même que les thèmes les plus génériques (“actualités”, “lectures”, “colloques”, …) :

hyponet_topics

Pour améliorer cette visualisation, il faudrait déjà envisager d’augmenter l’échantillon des articles au-delà des 25% précités. Ensuite, il faudrait réfléchir à un découpage temporel plus intelligent que celui proposé ici. En effet, segmenter l’Hypothesesosphère par année civile n’est probablement pas très pertinent : on pourrait essayer d’utiliser plutôt les années universitaires, ou même un découpage plus fin se rapprochant des semestres.

Enfin, et surtout, une modélisation plus robuste des thèmes de l’Hypothesesosphère nécessiterait d’affiner trois des paramètres de la modélisation proposée ci-dessus : (1) le nettoyage des mots-clés en fonction de leur langue, (2) le nombre de thèmes à identifier, et (3) l’identification des thèmes, de manière à jouer à la fois sur la prévalence et le contenu des termes du corpus, comme l’explique la documentation du package stm :

stm-metadata

Ces améliorations demanderaient de passer plus de temps sur la collecte des données et sur le calibrage du modèle. Avis aux intéressé(e)s !

Pour aller plus loin

Ce billet explique comment actualiser les données initialement imaginées par Josquin Debaz, et suggère de modéliser ces données à mi-chemin entre l’analyse de réseaux et l’analyse textuelle. Ce croisement méthodologique est assez fréquent : voir, par exemple, ce papier récemment présenté au Congrès de l’AFSP, qui étudie la “web-sphère” créée autour du hashtag #CharlieHebdo sur Twitter.

Quelques liens, donc, pour terminer.

Pour reproduire l’analyse, allez voir ce dossier, qui inclut la liste des blogs à partir de laquelle on a constitué l’échantillon, et l’exemple de corpus sur lequel on a travaillé pour ce billet. Le code n’est pas particulièrement compliqué, et il est facilement amendable (on pourrait, par exemple, étudier le réseau bipartite des blogs d’Hypothèses citant des articles publiés sur revues.org).

Pour analyser du texte, la méthode que j’ai employée (et que j’avais déjà évoquée ici et , notamment) n’est pas la plus simple, ni même la plus conclusive. Pour des alternatives aux topic models, cf. notamment les méthodes de classification hiérarchiques implémentées par Iramuteq, ainsi que ce billet d’Étienne, qui explique clairement ce qu’est un topic model et qui recense d’autres autres méthodes disponibles.

Pour visualiser des réseaux, je passe systématiquement par la fonction ggnet (voir le billet de présentation et d’autres exemples), mais vous voudrez peut-être passer par igraph (qui vient de passer en version 1.0.0 ! et le bouquin a l’air génial), ou par une librairie permettant de visualiser le réseau par périodes. Dans ces deux cas, jetez un coup d’oeil à cet excellent tutoriel de visualisation réseau, par Katherine Ognyanova.

Pour illustrer ce que l’on peut apprendre en lisant le tutoriel ci-dessus, voici un dernier graphe, qui montre la croissance cumulée de l’Hypothesesosphère, de janvier 2009 à juin 2015. Si vous utilisez Google Chrome, vous pouvez également jouer avec la version interactive, réalisée avec le package (encore très expérimental) ndtv, que j’ai découvert grâce au tutoriel.

hypodyn

Contrairement aux autres graphes du billet, ces deux animations utilisent un échantillon beaucoup plus large de presque 85 000 billets publiés sur la plateforme, au fil desquels 340 blogs ont renvoyé leurs lecteurs vers 484 blogs, pour un total de 605 blogs différents actuellement présents dans l’Hypothesesosphère.

  1. Le meilleur moyen de travailler sur l’intégralité de la base serait bien sûr de l’obtenir auprès de la plateforme (à laquelle je contribue très épisodiquement), mais le texte intégral pèse certainement trop lourd pour pouvoir être facilement transféré. De plus, la base intégrale doit contenir les brouillons des articles des blogs, ou ceux publiés de manière privée. Pour ne pas rentrer dans ces problèmes, je n’ai accédé qu’aux données publiques de la plateforme. []
  2. En relançant le script plusieurs fois pour pallier aux erreurs réseau, je suis arrivé jusqu’à 885 blogs et 104 844 articles, soit 118 articles par blog en moyenne. []
  3. Il est fortement recommandé, à ce stade, de laisser une seconde entre chaque téléchargement, pour ne pas stresser la plateforme. []
  4. Cette étape serait nécessaire si l’on souhaitait contrôler (éliminer) les différences de volume de publication d’une année sur l’autre, de manière comparer des probabilités d’occurrence (ou plutôt, des écarts par rapport à une hypothèse d’équiprobabilité, qui peut s’estimer de différentes manières) dans chacun des réseaux temporels. []
  5. Très grossièrement, un topic model structurel est un topic model (soit une technique de regroupement de termes discriminants en thèmes, ou topics) qui peut prendre en compte de l’information supplémentaire sur les documents (des “méta-données”, comme ici l’année de “parution” du document formé par les mots-clés, et la communauté qui a “produit” ce document cette année-là, au fil de ses billets de blogs). Pour des exemples de topic models, cf. cette synthèse, cet article, et ce projet, sur le même thème que ce billet. []
  6. À noter : il y a de plusieurs manières d’identifier le nombre de thèmes à rechercher dans un corpus. Certaines d’entre elles sont expliquées dans les documents cités dans la note précédente. []

Les “unes” de Charlie Hebdo : quelques réseaux de plus

Le 6e Congrès de l’Association Française de Sociologie commence après-demain. Le Réseau Thématique 37 « Sociologie des médias » y organise une réunion autour des événements “Charlie Hebdo”, à laquelle Gaël devait participer, sans finalement pouvoir s’y rendre. Sur son invitation, je le remplacerai pour évoquer cette petite note, qui reprend une partie de ce que vous avez pu lire sur ce blog au sujet des « unes » de Charlie Hebdo et de l’analyse des associations thématiques qu’elles contiennent.

charlie-afs2015

La note ne procède pas tout à fait de la même manière que les billets du blog. J’ai retiré tout ce qui avait trait aux ERGM pour utiliser quelque chose d’un peu moins sophistiqué mais de tout aussi parlant. Dans un premier temps, j’ai affiné les catégories thématiques dans lesquelles j’ai regroupé les mots-clés utilisés par le blog Strips Journal pour coder les “unes” de Charlie Hebdo. L’échantillon reste très réduit : le blog ne couvre que les années 2009 à 2015, soit un peu plus de 300 “unes”.

J’ai ensuite fait figurer ces “unes” dans des réseaux bipartites où apparaissent à la fois les “unes” et leurs catégories thématiques. Voici par exemple le réseau des “unes” et de leurs thèmes pour l’année 2011 (cliquer sur le réseau pour le voir en plus grand) :

themes_network_2011

La topologie du réseau renvoie aux deux grands pôles thématiques traités par Charlie Hebdo dans ses “unes”, avec l’actualité politique nationale d’un côté (catégories en bleu), et tous les autres thèmes de l’autre, dont l’actualité internationale et la religion. Cette représentation permet d’effectuer des calculs de distance pondérée, à partir il est facile de repérer les catégories thématiques “proches” ou “éloignées” dans le réseau tissé par les “unes”. Voici les distances entre les catégories thématiques de l’année 2011 (cliquer…) :

distance_matrix_2011

La matrice de distance traduit la même information que le réseau : les catégories les plus “proches” de la catégorie “Religion” sont les catégories “Violence” et “International”, dans cet ordre. La note systématise cette grille de lecture à toutes les catégories sur toutes les années de 2009 à 2015, où il apparaît clairement que la catégorie “Religion” est régulièrement associée à la catégorie “Violence”, sans entretenir toutefois de lien privilégié avec cette catégorie, qui est également associée à d’autres thématiques que la religion.

Bref, je ne sais toujours pas si Charlie Hebdo est “obsédé” par l’islam, si tant est que cela veuille dire quelque chose1. En revanche, je pense qu’on peut établir, au moyen de ses “unes”, que Charlie Hebdo ne réserve pas ses critiques qu’à la seule institution religieuse—sur la période étudiée, le personnel politique en prend au moins autant, sinon plus, pour son grade—,et qu’en plus, sa critique de la religion en “une” survient au sein d’une “triade thématique”, où elle se retrouve liée, sans grande surprise, à l’actualité internationale.

Si vous êtes à l’UVSQ après-demain, j’aurai quelques minutes pour expliquer tout ça. Et comme je n’ai jamais mis les pieds dans un Congrès AFS, ce sera l’occasion de voir à quoi ça ressemble.

Dernière petite chose. Dans le billet précédent, je terminais en mentionnant le blog elementR, pour apprendre à utiliser R dans un contexte de recherche en sciences sociales. En ce qui concerne les réseaux, il faut cette fois-ci mentionner l’excellent blog du groupe fmr (“flux, matrices, réseaux”), qui publie depuis longtemps de très bonnes ressources pour apprendre l’analyse de réseaux, avec R ou d’autres logiciels (voir, par exemple, ce texte sur les ERGM, que j’aurais dû citer dans plusieurs billets précédents sur les “unes” de Charlie Hebdo).

  1. Comme Gaël, et comme les auteurs de cette tribune, j’aurais plutôt tendance à penser que non, même si la “une” me semble être un bon dispositif de mesure des orientations stratégiques que peut prendre la direction d’un hebdomadaire. Il faudrait néanmoins avoir accès à d’autres données (qualitatives), ainsi qu’à un échantillon de “unes” s’étalant sur une période plus longue, pour pouvoir étudier cette question, un peu sur le modèle de ce qu’a fait Nicolas Hubé sur la presse allemande et française. []

Un modèle spatial de l’espace partisan sur Twitter

Note : ce billet est une version modifiée du billet publié le 17 avril. Les résultats sont à jour de la présentation que nous en avons fait, avec Ewen, à la journée d’étude « Science Po Quanti » qui s’est tenue hier. Si le fond du truc vous intéresse et/ou que vous avez un accès à l’API REST de Twitter dont vous ne vous servez pas, faîtes signe dans les commentaires, ou envoyez un tweet à @phnk ou @3wen (ou les deux).

Rappel des faits

Fin mars, j’ai rapidement expliqué comment utiliser les “followers” des comptes Twitter de la classe politique pour en positionner les différentes personnalités les unes par rapport aux autres. En partant du principe que Marine Le Pen va avoir plusieurs “followers” en commun avec Éric Ciotti, quelques-uns avec Valérie Pécresse, mais beaucoup moins avec François Hollande et encore moins avec Pierre Larrouturou, on peut reconstituer l’équivalent d’un spectre gauche-droite où la seule information de départ est la liste des “followers” de chaque personnalité, et où le résultat final est un positionnement sur une échelle unidimensionnelle allant de gauche à droite1.

Cette méthodologie, dite d’estimation de positions idéales, est bien connue en science politique : il s’agit, fondamentalement, d’identifier la dimension principale d’un espace latent, à partir d’une variable binaire comme un vote positif ou négatif. Cette méthode est généralement appliquée aux parlementaires à partir de leurs votes sur les scrutins publics, mais il y a plusieurs autres applications connues : à partir du moment où l’on dispose de votes publics, on peut par exemple s’en servir sur les décisions des juges de la Cour Suprême, ou sur les votes des pays membres des Nations Unies.

L’originalité de l’approche de Barberá (version gratuite), que j’ai déjà cité abondamment dans le billet précédent, est d’avoir transposé cette méthodologie à Twitter2, et de l’avoir appliquée avec succès aux États-Unis et à cinq pays européens. En regardant son fil Twitter récent, j’ai pu constater que sa méthodologie fonctionne également assez bien sur des personnalités politiques brésiliennes, et plusieurs papiers publiés (version gratuite) ou en cours de publication s’apprêtent à montrer que cela marche bien aussi dans d’autres contextes, y compris au-delà des frontières nationales (à suivre…).

Qu’en est-il des personnalités politiques françaises ?

Bon, notez bien que tout ce qui suit est un résultat préliminaire, car le modèle n’a pas fini de converger, malgré la très bonne machine sur laquelle Ewen est en train de le faire tourner. Vous avez bien noté la nature préliminaire des résultats ? Go :

ideal_points_parties

Le graphique ci-dessus correspond au modèle #1 de Barberá, appliqué à 418 personnalités politiques françaises, qui correspondent aux “n” en bas du graphique. Les barres verticales indiquent les positions minimales et maximales pour chaque parti, et le cercle indique la moyenne. Pour le moment, l’échantillon de “followers informatifs” est légèrement inférieur à 18 000. Pour revoir le tout premier résultat obtenu sur un échantillon encore plus petit, cliquer ici, et pour les résultats finaux sur 721 personnalités politiques, attendez encore quelques semaines. Le code de réplication (en cours d’amélioration) et la liste complète des personnalités politiques sont déjà en ligne3.

Sur le graphique, les petites croix correspondent aux scores gauche-droite des partis selon la moyenne établie par ParlGov, ce qui permet de comparer nos résultats aux mesures conventionnelles du positionnement de ces partis. Comme on peut déjà le voir, ça commence bien : “l’ordre” des partis politiques est presque celui attendu. En d’autres termes, les individus qui suivent les personnalités politiques françaises sur Twitter permettent de reconstituer l’espace partisan gauche-droite de ces personnalités de manière quasi-identique à ce que produisent des enquêtes d’experts comme la Chapel Hill Expert Survey, qui va néanmoins plus loin que cette seule dimension.

Vers quoi se dirige-t-on ?

Ce billet ne fait que résumer à très grands traits la méthode que nous sommes en train d’appliquer avec Ewen pour obtenir des estimations de points idéaux à partir de données issues de Twitter. Le point de départ de cette entreprise était un défi d’ordre strictement méthodologique : peut-on faire pareil, avec nos propres données, sur une matrice (d’adjacence) plus large, et en comprenant, à peu près, ce que l’on fait subir à cette pauvre matrice, par l’intermédiaire d’une modélisation assez compliquée ?

Les résultats finaux sont en cours de calcul, mais les résultats intermédiaires ont encourageants, et le code nous a d’ores et déjà permis de produire toutes sortes de résultats supplémentaires assez originaux. Le graphique présenté ci-dessus n’est que le point de départ de ces résultats : toute une batterie de tests montre des corrélations intéressantes au niveau géographique, par exemple. Voici un exemple de ces corrélations, qui se situent toutes entre 0.4 et 0.5 :

map_vote

Le panel de gauche montre le point idéal moyen des départements, calculé à partir des “followers informatifs” que l’on a réussi à localiser au niveau départemental ou municipal. Le panel de droite donne la carte du vote Sarkozy au second tour de la présidentielle de 2012. La corrélation est à 0.5, ce qui permet simplement de constater que les positions idéales générées par le modèle ne sont pas complètement décorrélées des comportement électoraux au niveau géographique.

Vous l’avez compris en lisant le paragraphe précédent : le modèle que l’on utilise n’estime pas des points idéaux que pour les seules personnalités politiques, mais aussi pour les “followers informatifs” que l’on y inclut (ce que ne produit pas vraiment une estimation “classique” de points idéaux à partir de données comme les votes parlementaires). Je n’ai pas évoqué cette spécificité du modèle jusqu’à présent, mais cela vous donne une petite idée de ce vers quoi se dirige l’analyse.

  1. Concrètement, la seule hypothèse nécessaire est celle d’une homophilie entre les personnalités politiques et leurs “followers”, ce qui s’établit sans difficulté quand on parle de plusieurs milliers de “followers” par personnalité. La raison pour laquelle on tombe sur un axe gauche/droite est qu’il s’agit de la dimension principale la plus forte (le clivage le plus fort). []
  2. Je comprends cette transposition comme un renversement de la proposition habituelle des modèles existants : en termes strictement utilitaristes, au lieu de considérer les votes comme “l’offre” et les personnalités politiques comme “la demande”, on considère les comptes Twitter de personnalités politiques comme constituant “l’offre”, et la liste des “followers” comme “la demande”. []
  3. Comme l’indiquent les différents totaux cités, le modèle repose sur une stratégie de sous-échantillonnage assez difficile à résumer en quelques mots. Pour indication, le nombre de “followers informatifs” sur lequel tourne actuellement le modèle final est légèrement supérieur à 44 000, après application de tous les critères cités dans le papier de Barberá. []