Analyse des réseaux sociaux dans R et Gephi : creuser dans Twitter
Publié: 2022-03-11L'analyse des réseaux sociaux est née en 1934 lorsque Jacob Levy Moreno a créé des sociogrammes, des abstractions des interactions sociales. Plus précisément, un sociogramme est un graphique dans lequel chaque nœud représente une personne et les arêtes représentent les interactions entre eux. Moreno a utilisé des sociogrammes pour étudier le comportement de petits groupes de personnes.
Pourquoi petit ? Car à l'époque où il travaillait, il était difficile d'obtenir des informations granulaires sur un grand nombre d'interactions personnelles. Cela a changé avec l'avènement des réseaux sociaux en ligne tels que Twitter. De nos jours, n'importe qui peut télécharger gratuitement de volumineuses données Twitter, ce qui ouvre la porte à des analyses intéressantes, nous conduisant à de nouvelles compréhensions de la façon dont nous nous comportons et de l'impact de divers comportements sur la société.
Dans cette première partie de notre série d'analyses de réseaux sociaux, nous montrons comment effectuer certaines de ces analyses en utilisant le langage R pour obtenir et pré-traiter les données, et Gephi pour produire des visualisations étonnantes. Gephi est une application open-source spécialement conçue pour visualiser tout type de réseau. Il permet aux utilisateurs de configurer facilement les visualisations à travers plusieurs critères et propriétés.
Téléchargement des données Twitter pour l'analyse des réseaux sociaux dans R
Si vous n'avez pas de compte de développeur Twitter, créez-en un et demandez un accès Essential. Ensuite, pour télécharger les données Twitter, créez une application dans le portail des développeurs Twitter. Ensuite, sélectionnez votre application dans la section Projets et applications et accédez à l'onglet Clés et jetons. Là, vous devrez générer vos informations d'identification. Ceux-ci seront utilisés pour accéder à l'API Twitter et télécharger les données.
Une fois que vous avez généré vos informations d'identification, vous pouvez commencer l'analyse. Nous utiliserons trois bibliothèques R :
- igraph , pour créer le graphe d'interaction.
- tidyverse , pour préparer les données.
- rtweet , pour communiquer avec l'API Twitter Dev.
Vous pouvez installer ces bibliothèques avec la fonction install.packages() . Pour nos besoins, nous supposerons que vous avez installé R et RStudio et que vous en avez une compréhension de base.
Dans notre démonstration, nous analyserons la discussion en ligne animée sur le célèbre footballeur argentin Lionel Messi lors de sa première semaine avec le club de football du Paris Saint-Germain (PSG). Il est important de noter qu'avec l'API Twitter gratuite, vous ne pouvez télécharger des tweets que sept jours avant la date actuelle. Vous ne pourrez pas télécharger les mêmes données que nous citons, mais vous pourrez télécharger les discussions en cours.
Commençons par le téléchargement. Tout d'abord, nous allons charger les bibliothèques, puis créer un jeton d'autorisation à l'aide des informations d'identification, et enfin définir les critères de téléchargement.
Ce bloc de code détaille comment implémenter les trois étapes :
## Load libraries library(rtweet) library(igraph) library(tidyverse) ## Create Twitter token token <- create_token( app = <YOUR_APP_NAME>, consumer_key = <YOUR_CONSUMER_KEY>, consumer_secret = <YOUR_CONSUMER_SECRET>, access_token =<YOUR_ACCESS_TOKEN>, access_secret = <YOUR_ACCESS_SECRET>) ## Download Tweets tweets.df <- search_tweets("messi", n=250000,token=token,retryonratelimit = TRUE,until="2021-08-13") ## Save R context image save.image("filename.RData")Remarque : Remplacez toutes les balises entre <> par les informations que vous avez créées à l'étape précédente des informations d'identification.
Avec ce code, nous avons interrogé l'API Twitter pour tous les tweets (jusqu'à 250 000) contenant le mot "messi" et publiés entre le 8 août 2021 et le 13 août 2021. Nous avons fixé une limite de 250 000 tweets car Twitter exige un valeur quantitative et parce que le nombre est suffisamment grand pour permettre une analyse intéressante.
Le taux de téléchargement de Twitter est de 45 000 tweets par 15 minutes, donc le téléchargement de 250 000 tweets a pris plus d'une heure.
Enfin, nous avons enregistré toutes les variables de contexte dans un fichier RData pour pouvoir le restaurer si nous fermions RStudio ou éteignons la machine.
Création du graphique d'interaction
Une fois le téléchargement terminé, nous aurons les tweets à l'intérieur de la trame de tweets.df . Cette matrice de trame de données contient une ligne par tweet et une colonne par champ de tweet. Premièrement, nous allons l'utiliser pour créer le graphe d'interaction dans lequel chaque nœud représente un utilisateur, et les bords représentent les interactions (retweets ou mentions) entre eux. Avec tidyverse et igraph, on peut créer ce graphe rapidement et en une seule instruction :
## Create graph filter(tweets.df, retweet_count > 0) %>% select(screen_name, mentions_screen_name) %>% unnest(mentions_screen_name) %>% filter(!is.na(mentions_screen_name)) %>% graph_from_data_frame() -> net Après avoir exécuté cette ligne, nous avons un graphique dans la variable net qui est prêt pour l'analyse. Par exemple, pour voir combien de nœuds et d'arêtes sont présents :
summary(net) # IGRAPH fd955b4 DN-- 138963 217362 --Nos données d'échantillon donnent 138 000 nœuds et 217 000 arêtes. C'est un gros graphique. Nous pourrions générer des visualisations via R si nous le voulions, mais d'après mon expérience, elles prennent trop de temps à calculer et ne sont pas aussi attrayantes visuellement que les visualisations Gephi. Par conséquent, continuons avec Gephi.
Visualiser le graphique avec Gephi
Nous devrons d'abord créer un fichier que Gephi peut lire. C'est facile, car nous pouvons générer un fichier .gml en utilisant la fonction write_graph :
write_graph(simplify(net), "messi_network.gml", format = "gml") Maintenant, ouvrez Gephi, allez dans "Ouvrir le fichier graphique", recherchez le fichier messi_network.gml et ouvrez-le. Il lancera une fenêtre qui résume les informations du graphique. Sélectionnez Accepter. Cela apparaîtra :
Inutile de dire que ce n'est pas très instructif. C'est parce que nous n'avons pas encore appliqué de mise en page.
Disposition du réseau
Dans un graphe avec des milliers de nœuds et d'arêtes, le positionnement des nœuds dans le graphique est vital. C'est le but des mises en page. Ils placent les nœuds dans des positions définies par des critères définis.
Pour notre didacticiel d'analyse des réseaux sociaux, nous utiliserons la disposition ForceAtlas2, qui est une option standard pour ce type d'analyse. Il positionne les nœuds en simulant des forces physiques d'attraction et de répulsion entre eux. Si deux nœuds sont connectés, ils seront plus proches l'un de l'autre ; s'ils ne sont pas connectés, ils seront plus éloignés. Cette disposition donne un graphique informatif en termes de communautés, car les utilisateurs appartenant à la même communauté seront regroupés tandis que les utilisateurs de différentes communautés seront dans des régions différentes.
Pour appliquer cette mise en page à notre cas, nous accédons à la fenêtre Mise en page (dans le coin inférieur gauche), sélectionnons ForceAltas 2 et cliquez sur Exécuter. Lorsque vous faites cela, vous verrez les nœuds commencer à bouger et à former de nombreux « nuages ». Au bout de quelques secondes, vous aurez un pattern très stable et vous pourrez cliquer sur Stop. Veuillez noter que l'arrêt automatique peut prendre beaucoup de temps.
Comme il s'agit d'un algorithme stochastique, vous aurez des sorties légèrement différentes à chaque exécution. Votre sortie devrait ressembler à ceci :

Le graphique commence à être attrayant. Maintenant, ajoutons-y un peu de couleur.
Détection communautaire
Nous pouvons colorer les nœuds en utilisant plusieurs critères ; l'approche la plus courante est par communauté. Si nous avons quatre communautés dans notre graphique, nous aurons quatre couleurs. Grâce à la couleur, il est plus facile de comprendre comment les groupes interagissent, compte tenu de vos données.
Pour colorer les nœuds, nous devons d'abord identifier les communautés. Dans Gephi, cliquez sur le bouton Modularité dans la fenêtre sous l'onglet Statistiques. Ce bouton applique le célèbre algorithme de grappe de graphes de Louvain, l'un des algorithmes disponibles les plus rapides, considéré comme à la pointe de la technologie en raison de ses hautes performances. Dans la fenêtre qui apparaît, cliquez sur Accepter. Une autre fenêtre apparaîtra, contenant un nuage de points des communautés réparties par taille. Nous avons maintenant un nouvel attribut dans chaque nœud nommé Modularity Class, qui contient la communauté appartenant à l'utilisateur.
Après avoir terminé les étapes précédentes, nous pouvons maintenant colorer le graphique par clusters. Pour ce faire, dans l'onglet Apparence, cliquez sur Appliquer.
Ici, nous pouvons voir la taille (en termes de pourcentage d'utilisateurs) de chaque communauté. Dans notre cas, les principales communautés (violette et verte) regroupent respectivement 11,34% et 9,29% de la population totale.
En utilisant la mise en page et la palette actuelles, le graphique ressemblera à ceci :
Détection des influenceurs Twitter
Enfin, nous aimerions identifier les principaux participants à la discussion pour comprendre, par exemple, qui appartient à quelle communauté. On peut mesurer l'influence de chaque utilisateur par différentes propriétés ; l'un d'eux est par leur diplôme . Cela indique combien d'utilisateurs les ont retweetés ou mentionnés.
Pour mettre en évidence les utilisateurs avec beaucoup d'interactions, nous allons modifier la taille des nœuds à l'aide de la propriété Degree :
Le graphique affichera désormais les influenceurs sous forme de nœuds représentés par des cercles plus grands :
Maintenant que nous avons identifié les utilisateurs avec un nombre élevé d'interactions, nous pouvons révéler leurs noms. Pour cela, cliquez sur la flèche noire dans la barre en bas de l'écran :
Ensuite, cliquez sur Libellés et configuration. Dans la fenêtre qui apparaît, cochez la case Nom et cliquez sur Accepter. Ensuite, cochez la case Nœuds. De petites lignes noires apparaîtront dans le graphique. Ce sont les noms de tous les utilisateurs. Mais nous ne voulons pas tous les voir, juste les plus importants.
Pour les définir, modifiez leur taille par degré de nœud en utilisant la même fenêtre que celle que nous avons utilisée pour la taille du nœud. Nous avons augmenté la taille minimale de 0,1 à 10 et augmenté la taille maximale de 10 à 300.
Avec l'ajout de noms, le graphique devient beaucoup plus informatif, car il montre comment différentes communautés interagissent avec les influenceurs :
Nous en savons maintenant beaucoup plus sur cette discussion particulière sur Twitter. Par exemple, l'inclusion par la communauté verte de comptes comme mundodabola et neymarjrdepre révèle son locus brésilien. Les communautés orange et grise contiennent des utilisateurs hispanophones comme sc_espn et InvictosSomos. En particulier, les communautés grises et noires semblent être hispanophones car elles ont des utilisateurs comme IbaiOut, LaScaloneta et le populaire streamer IbaiLlanos. Enfin, les communautés violettes et rouges semblent être anglophones car elles présentent des comptes tels que ESPNFC et brfootball.
On comprend mieux maintenant pourquoi ces utilisateurs forment des communautés différentes en termes de sociologie et pas seulement de calcul de graphes : ils parlent des langues différentes ! Ils tweetent tous à propos de Messi et de sa nouvelle équipe, mais il est logique que les hispanophones interagissent davantage avec d'autres hispanophones qu'avec des lusophones ou des anglophones. De plus, nous pouvons également comprendre que même si les communautés grises et oranges parlent espagnol, elles le font sous des angles différents. La communauté grise utilise une approche plus humoristique qui explique pourquoi ils interagissent davantage les uns avec les autres qu'avec les comptes officiels du football ou des journalistes.
Libérer le potentiel de R et Gephi
Si nous n'avions pas utilisé Gephi pour représenter graphiquement, nous aurions pu utiliser la bibliothèque Ggplot de R. Cependant, de mon point de vue, cette bibliothèque est beaucoup plus limitée en termes de représentation graphique de réseau. Il n'est pas dynamique comme Gephi, il est plus difficile à paramétrer, et l'affichage résultant est moins clair.
Dans la suite de la série, nous approfondirons cette analyse. Nous effectuerons des analyses de texte de modélisation de sujet pour voir combien les utilisateurs parlent et quels sujets les intéressent ; nous effectuerons une analyse des sentiments pour voir s'ils sont positifs ou négatifs ; et nous ferons une analyse graphique plus approfondie pour analyser les plus grands influenceurs de Twitter.
Vous pouvez utiliser ces étapes pour analyser de nouvelles discussions sur Twitter et voir quelles informations vous pouvez tirer de vos graphiques de tracé.
