Retour sur une expérience de collecte de tweets

Cela fait quelques temps que les réseaux sociaux m’intéressent. J’ai commencé à collecter quelques données issues de twitter pour des conférences, notamment ici. La possibilité de récupérer – dans ce cas-là – des tweets qui ont formé des conversations parallèles à une conférence est très appréciable. C’est une archive de la conférence, qui restitue des discussions en complément de la publication des contributions.

L’outil que j’avais alors utilisé1 est toutefois limité, par son utilisation de Google Drive mais aussi par l’API de recherche de Twitter, qui ne permet pas de récupérer plus de 1500 tweets à la fois sur quelques jours (une semaine). Au delà de 6000 lignes, Google Spreadsheets a de grandes chances de voir ses capacités dépassées2.

Pendant la campagne présidentielle française, il y a un an, voyant l’incroyable flux de tweets émis pendant le débat Hollande-Sarkozy3, j’ai essayé de les capturer. Résultat des courses: 1% des tweets récupérés et ma clé twitter bannie pour non respect des conditions d’utilisation de ce réseau social. Un corpus inexploitable.

J’ai depuis cherché et trouvé le framework PHP 140dev, qui utilise non l’API de recherche mais de streaming. On peut récupérer nettement plus d’éléments, mais on ne peut faire de recherche, c’est-à-dire fouiller les sept jours précédents. J’ai pu collecter ce qui se disait sur la loi ouvrant le mariage aux couples homosexuels. Le corpus a intéressé Fred Pailler, sociologue, qui l’évoque sur son blog.

En conséquence, il a fallu passer à un niveau moins artisanal. J’ai doublé mon serveur – l’API de twitter et 140dev n’étant pas parfaits, mon serveur plantait régulièrement – et Fred Pailler a mis en place de son côté sa propre collecte. Même avec trois serveurs, nous avons connus quelques problèmes, mais, dans l’ensemble, nous avons pu récupérer plusieurs gigas de données, en étendant la recherche à une dizaine de mots-clés.

Si l’on n’arrive pas à collecter les bons #hashtags au bon moment, il n’existe que peu de solutions pour compenser les manques du corpus. S’il existe une archive de tous les tweets émis depuis la création du service, hébergée à la Library of Congress, mais qui est pour le moment inexploitable. On peut faire appel à des services privés (des entreprises qui ont un accès – payant – à une API spécifique de twitter) pour récupérer les données mais le coût est conséquent, comme le raconte Melissa Terras.

Autre problème: que deviendront les données collectées? Ces gigabytes de données risquent de se perdre – d’abord parce que mon serveur finira par mourir, ensuite parce que, même sauvegardée, ces données finiront par échouer sur un disque dur dont je vais oublier l’existence. C’est aussi un problème d’accès libre aux données de la science4. Si l’on perd le corpus, l’article qui l’a exploité est moins rigoureux.

Tous ces problèmes ne sont pas équivalents. De plus en plus de plateformes liés à la recherche permettent – ou permettront – de pérenniser des données. La bibliothèque du congrès archivant twitter, les chercheurs finiront par y accéder. Mais après un délai relativement long, vraisemblablement, ce qui ne peut pas satisfaire les sociologues (mais pas non plus certains historiens) qui étudient des sujets récents. Il ne me semble pas raisonnable de travailler sur, par exemple, un débat parlementaire sans regarder les réseaux sociaux si les débats s’y reportent, ce qui est le cas pour la loi en cours de vote au Parlement sur le mariage.

Il n’existe pas de plateforme d' »alerte » permettant de signaler des données qu’il faudrait capturer sur un sujet important, en dehors, peut-être, de ce que fait la BnF qui, assurant le dépôt légal des sites web, indexe le domaine « .fr » et peut, sur demande, indexer un site précis. Peut-être devrions nous réfléchir à une telle plateforme pour les sciences humaines et sociales (ou, chers lecteurs, signalez-moi si elle existe).

Quelles sont les quelques leçons que l’on peut tirer de cette expérience?

  • La solution à adopter (notamment le type d’API utilisée) doit être adaptée au nombre de tweets à récupérer et à la durée de collecte;
  • Il faut anticiper, monitorer les mots dièse (enfin, hashtags) pour avoir le corpus le plus complet possible;
  • Il faut plusieurs serveurs pour éviter les risques de pertes ou, plutôt, de non-collecte de tweets;
  • Il est impossible de savoir si le corpus contient tous les tweets contenant un ou plusieurs hashtags / mots clés;
  • Il faudrait disposer d’une sorte de stockage pour les données, afin de préserver les corpus de données fondant nos articles scientifiques

Une fois le corpus collecté et stocké dans une base de données, peut alors commencer l’étude du corpus ainsi constitué, par divers moyens: analyse de texte, visualisation réseau, etc. Là aussi, une certaine prudence s’impose, sur le nettoyage des données. Garder un journal de toutes les opérations faites, dès le début de la collecte et jusqu’à la fin du travail sur le corpus, est particulièrement utile.

Pour ma part, la rapide analyse de texte faite sur le corpus centré sur les manifestations opposées à cette loi montre d’abord une opposition politique à la présidence de la République et ensuite une préoccupation affirmée pour les enfants5.

  1. TAGS de M. Hawksey – à l’époque dans une version 3, aujourd’hui en version 5 []
  2. D’autres systèmes de collecte des tweets utilisant l’API de recherche existent: R et son paquet TwitteR ou encore NodeXL, une très bonne macro pour Excel. []
  3. Un article d’Atlantico – dont je n’ai pas retrouvé trace – estimait le flux à 600 000 tweets []
  4. Mais Fred Pailler a probablement résolu ce problème. []
  5. J’attire l’attention sur le fait que c’est une analyse très rapide, recouvrant des événements assez variés sur la période février-avril), et avec un nettoyage des données assez relatif – notez la présence de « this » qui est un résidu d’URLs. []

3 réflexions au sujet de « Retour sur une expérience de collecte de tweets »

  1. jokerozen

    j’ai aussi collecté une campagne électorale (#qc2012) sur Twitter, et ai été confronté aux mêmes problèmes que toi. En plus de la limitation du streaming : 1% du total de twitter, les limitations du serveur de collecte (la sauvegarde parfois plus lente que la collecte) j’ai aussi été confronté aux problèmes de stockage de l’information et son organisation. Stocker des 10aines de milliers de tweets dans une base mysql … je n’y croyais pas trop. J’ai donc essayé une base de données en graphe (orientDB) puisque la BDD de twitter utilise cette technologie. Ca marchouille, mes tests sont concluants, mais cela requiert des ressources importantes. Mon corpus de cet évènement n’est pas utilisable, trop de pertes, et quelques erreurs de codage au début du projet…
    Ce commentaire était juste pour préciser sur quels écueils je me suis frotté dans ma quête similaire a la tienne.
    Merci pour ce billet qui résume bien les difficultés pour dataminer/analyser/archiver Twitter 🙂

    Répondre
    1. malika charlah

      comment collecter les tweets avec un mot clée ,pays specifique et langue dans le language java netbeans
      et aprés comment faire le stockage dans mysql et enfin comment faire le netoyage ,
      j’ai besoin des codes sources

      Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *