Catégories
Tech

SwissGames Map

SwissGames Map agrège les données Twitter du compte @gameculture_ch pour représenter le paysage de la création vidéoludique en Suisse.

Je travaille depuis plusieurs semaines sur SwissGames Map, un projet de génération de graphe à partir de données Twitter.

SwissGames Map agrège les données Twitter du compte @gameculture_ch. À partir de ces données, il est possible de dresser une carte et d’isoler les communautés au sein du réseau #swissgames.

Les sources du projet sont disponibles sur Github sous Licence Creative Commons.

Une carte interactive permet de visualiser le graphe ici : greaby.github.io/swissgames-map

Dans quel but ?

Je ne suis pas Data Analyst et je ne travaille pas dans la recherche. Si j’ai fait ce projet, c’est uniquement par curiosité technique. Je dois également reconnaître que naviguer dans le réseau est fascinant.

Tout a commencé quand j’ai regardé la dernière vidéo de la chaîne Fouloscopie du 19 mars 2020 : « La science des réseaux sociaux »

Pour celles et ceux qui ne connaitraient pas, Fouloscopie traite de la science du comportement des foules. La vidéo a été réalisée par Mehdi Moussaid (@Mehdi_Moussaid), chercheur en science cognitive à l’institut Max Planck de Berlin.

Dans sa vidéo, il a extrait les données Twitter de deux chaînes de vulgarisation scientifique. Un graphe est ensuite généré à partir des relations des abonnés.

Je vous invite à aller regarder sa chaîne, toutes ces vidéos sont passionnantes.

Suite à ça, je me suis donné pour objectif de reproduire un graphe similaire.

Aperçu du graphe extrait de la vidéo « La science des réseaux sociaux »

Les outils techniques

Je tombe rapidement sur Gephi, un outil open source spécialement créé pour explorer et visualiser des graphes

Bien que Gephi propose quelques données d’exemple, je trouve plus intéressant de visualiser un graphe plus grand avec plus de nœuds.

Pourquoi ne pas analyser mon réseau sur Twitter ? Pour cela j’ai besoin de savoir quelles sont les relations entre mes abonnés. Mais comment extraire les données ? Le faire à la main me prendrait beaucoup trop de temps.

Ce que j’aime bien avec Internet, c’est qu’on tombe toujours sur quelqu’un qui a développé un outil pour notre besoin. Après quelques recherches, je trouve Nucoll, un programme en ligne de commande qui permet d’extraire les données Twitter. Ce logiciel est spécialement conçu pour créer un fichier compatible avec Gephi.

Vous devez détenir une clé d’API Twitter pour pouvoir utiliser Nucoll. Si vous n’en possédez pas déjà une, la demande peut prendre un certain temps. Ces dernières années, les réseaux sociaux sont devenus très restrictifs sur l’utilisation de leurs données.

Extraire les données à l’aide de Nucoll

Avant de pouvoir visualiser notre graphe, nous avons besoin de données. Nous devons générer un tableau qui comporte les informations de base des comptes ainsi que la liste des utilisateurs qu’ils suivent.

La première étape consiste à récupérer la liste des comptes sur la base desquels nous allons générer notre graphe. Cela peut être un compte Twitter, une série de tweets ou un hashtag.

Prenons par exemple mon compte @mrgreaby. Je souhaite extraire tous mes followers.

./nucoll init mrgreaby -o

Une fois notre liste générée, nous allons extraire les relations entre les comptes. Il s’agit de l’étape la plus longue, car elle nécessite une requête à l’API par compte. Je vous conseille de lancer la commande durant une nuit.

./nucoll fetch mrgreaby

En dernière étape, nous avons besoin d’un fichier compatible avec Gephi. Pour cela nous allons exécuter cette commande qui va créer un document .gml.

./nucoll edgelist mrgreaby

Après environ 6 h de traitement de mes 350 followers (l’API Twitter limite à 15 appels par 15 minutes), voici le graphe que j’ai pu générer avec Gephi.

Relations entre mes followers sur Twitter. Comme on peut le voir, je fais partie de trois groupes. La plus grosse communauté, en bas, regroupe les personnes qui me suivent pour mon activité Minecraft, plus particulièrement sur les #DifficilesAventures. En haut, on retrouve les développeurs de jeux vidéo suisses et la communauté francophone autour du moteur Godot Engine.

Génération du graphe avec Gephi

Prenons cette fois la communauté Game Dev Suisse. Le principe d’extraction reste le même, la différence ici se situe dans l’échelle.

La première étape a été de trouver le jeu de données le plus pertinent pour créer mon graphique. J’ai commencé par extraire une liste de comptes associés au hashtag #swissgames. Je me retrouve avec un ensemble d’environ 90 000 comptes. Après un rapide calcule, le temps nécessaire à l’extraction des données aurait été de 62 jours, ce qui est un peu long pour moi. De plus, les données comprennent beaucoup de bots ou de comptes hors sujets qui ne sont pas intéressants pour ma carte.

Après nettoyage des données, je dispose d’une liste de 30 000 comptes. Ce qui représente toujours 20 jours d’extraction, la liste comporte encore beaucoup de comptes inutiles.

Je me suis finalement limité aux followers de @gameculture_ch. Le compte suit et retweet tout ce qui touche de près ou de loin à la création vidéoludique en Suisse.

GameCulture suit environ 3 500 comptes. L’extraction des données me prendra 2,4 jours, ce qui est beaucoup plus abordable.

Je peux maintenant ouvrir dans Gephi le fichier .gml créé.

Gephi va me permettre de faire plusieurs choses :

  • Premièrement de spatialiser les nœuds du réseau en fonction de leurs relations. Ici en utilisant l’algorithme « Force Atlas 2 »
  • De modifier la taille des points en fonction de leur importance. Je prends le nombre de nœuds entrants (les followers dans la communauté) pour déterminer sa grandeur.
  • De détecter et coloriser les sous-groupes à partir d’un algorithme.

Après traitement, voici le résultat :

Élégant n’est-ce pas ? 🙂

Carte interactive

Pour créer la carte interactive que vous pouvez retrouver ici, j’ai utilisé le plug-in d’export SigmaJs.

Sur cette carte, vous avez la possibilité d’explorer le réseau en détail. Sélectionnez un compte en particulier pour voir ses relations.

Par exemple, voici mon propre réseau dans la communauté.

En conclusion

J’espère que vous avez apprécié cette petite excursion dans le monde de la data.

Le projet est disponible sur Github. Vous êtes libre de le reprendre et de l’utiliser comme bon vous semble.

Actuellement, je dois effectuer la synchronisation manuellement. Je compte le faire environ une fois par mois. Sur le long terme, j’ai pour objectif de faire tourner le projet en totale autonomie. Je travaille sur un script qui s’exécutera automatiquement pour récupérer les données.

Je compte par la suite faire d’autres expérimentations, notamment ajouter une dimension temporelle au graphe pour pouvoir suivre l’évolution de la communauté au fil du temps.