Notes supplémentaires sur l’analyse de réseaux

J’ai récemment présenté mes recherches sur les réseaux de collaboration législative à Marseille, où j’ai aussi donné, grâce à Joël, une formation à l’analyse de réseaux.

Les slides de la première présentation, donnée au RUG Aix-Marseille, sont en ligne sur le site Internet de Datactivi.st, et sur Google Slides ; il s’agit d’une traduction de notes déjà présentées, et qui m’a permis de récolter plusieurs idées et commentaires très utiles pour améliorer mes recherches.

Quant aux slides de la formation en analyse de réseaux, qui m’a permis de rencontrer ou de revoir les amis du Centre pour l’édition électronique ouverte, sont ci-dessous, et aussi sur Google Slides.

La plupart des illustrations de ces slides proviennent de l’excellent manuel de Mark E. J. Newman sur les réseaux.

J’y mentionne aussi cette liste de ressources sur l’analyse de réseaux, dont j’ai fait la publicité ici et ailleurs, l’excellent tutoriel de visualisation de réseaux de Katherine Ognyanova (mentionné ici et ), un autre manuel de graph mining avec R, et évidemment, l’excellent guide à l’utilisation du package igraph, par Eric D. Kolaczyk et Gábor Csárdi.

Journée d’étude « réseaux » à Lille, jeudi 8 juin 2017

Jeudi 8 juin à Lille, nous organisons, avec Sylvain Mignot et Fabien Éloire, une journée d’étude qui vise à fédérer les chercheurs en sciences humaines et sociales intéressés par l’analyse de réseaux.

Le programme (anglais, français) est en ligne, et les inscriptions se font avec ce formulaire, ou auprès de moi par email, comme indiqué dans l’affiche. Attention, les places sont limitées, donc inscrivez-vous vite si vous souhaitez venir !

La journée est co-financée par le Groupement de recherche Analyse de réseaux en sciences humaines et sociales (GDR AR-SHS), à qui nous enverrons un compte-rendu de la journée pour publication sur son blog.

L’un des objectifs à moyen terme de cette journée est de monter un collectif de recherche en analyse de réseaux sur Lille, puis de connecter ce collectif à des équipes de recherche idoines dans la région, à Paris ou en Belgique.

Si le projet vous intéresse, idem, écrivez-moi !

La même annonce est disponible sur le site Internet d’ESPOL, qui co-finance et co-organise l’événement avec quelques autres unités de recherche basées à Lille – l’Anthropo-Lab, la FGES et le CLERSÉ.

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. []