20 Jan 2014

Je ne sais pas si on peut encore parler de phénomènes pour les réseaux sociaux tellement ces derniers ont pénétré nos vies. Nous les utilisons et parfois en abusons, mais leur utilisation ne se fait pour le moment que dans un sens : de l'utilisateur envoyant de la donné aux serveurs de réseaux. Nous nous sommes ici posé la question de savoir comment se réapproprier ses données... Pour savoir d'où venait les tweets qui parlent de Géotribu.

Ce travail est issu d'une réflexion, ou une envie de travailler sur la géolocalisation de twitter avec un copain (@fabio_zottele). Nous travaillons tous les deux sur la viticulture et nous voulions l'observer sous l'angle des réseaux sociaux, ici ce ne sera pas l'objet, mais le principe est extensible à tout objet. Ici l'objectif est la partie traitement des données, l’esthétique de la carte restera en retrait, jusqu'à ce que quelqu'un se lance :-).

Nous allons dans ce tutoriel procéder à la récupération de tweets, pour ensuite les afficher sur une carte en utilisant ggplot. Ce qui nous permettra de survoler à la fois la collecte d'info sur twitter, mais aussi ggplot qui est un package de R, proposant de nouveaux paradigmes de graph (j'y vais peut être un peut fort là, mais c'est relativement déconcertant quand on a l'habitude de faire des cartes ou des graphes de manière plus traditionnelle).

La récupération de l'information sur Twitter

Un joli package a été développé par Jeff Gentry pour se connecter à twitter et récupérer de l'information, mais cette récupération passe par plusieurs étapes préalables :

Il va falloir vous créer un compte développeur Twitter pour demander un accès, cela se fait ici pour récupérer une Consumer Key et Consumer Secret dont on aura besoin dans le script R.

twitter dev

Ensuite nous pouvons nous lancer dans R avec le package twitteR . Cette première partie du script ne fonctionne pas très bien dans mon IDE (Rstudio), je vous conseille donc de la lancer pas à pas directement dans votre console R.

Une petite note pour les utilisateurs de Windows, visiblement vous avez besoin d'autres packages que ceux cités ici (ROAuth, RCurl, bitops, digest, rjson), à voir donc. Pour les utilisateurs unixiens, ils sont compilés en tant que dépendance de twitteR.

<script src="https://gist.github.com/ElCep/8438427.js"></script>

Voilà vous avez normalement passé la première partie du travail ! On va maintenant s'attaquer à la récupération de la donnée. L'API est limitée à la récupération de 45 twittes, ce qui fait que si vous voulez lancer une étude sur plusieurs jours semaine, il va falloir relancer régulièrement cette seconde partie du script...

<script src="https://gist.github.com/ElCep/8438475.js"></script>

Ici les variables qui vont nous intéresser sont dataToMap qui est une simplification du data frame tweets. Ce qui veut dire que l'intégralité des données est stockée dans la variable tweets. Si vous voulez vous lancer dans une analyse textuelle, c'est sur cette variable qu'il faudra jouer.

La variable dataToMap fait deux choses :

  • Elle simplifie le data frame pour ne conserver que quelques colonnes
  • Elle utilise l'API de google dans le cas ou le tweet n'est pas référencé pour reéssayer avec Geonames de le placer sur la carte en fonction de la position que le twittos a indiqué dans son profil. Malheureusement, il peut y avoir beaucoup de déchet !

Vous pouvez ensuite créer une petite carte de la manière suivante :

<script src="https://gist.github.com/ElCep/8438532.js"></script>

Et voilà, une carte loin d'être jolie, mais c'est un bon début. La doc ggplot vous permettra sans doute de l'améliorer.

localisation des tweets géotribu

Si vous êtes sur un sujet brûlant, et donc que clairement 45 tweets (qui en plus ne sont clairement pas tous géolocalisables) est un handicap, vous pouvez mettre en place une petite tache CRON.

Chez moi avec systemd  elle a cette frome (édition de systemd avec crontab -l)

 0  8,12,16,20      *   *     *           Rscript /home/twitteR/getTwittes.R

Le script est alors lancé à 8h, 12h, 16, 20h

A propos de l'auteur: 
Etienne DELAY

Doctorant à GEOLAB UMR 6042 CNRS (université de Limoges), , , géographie et informatique, réseau et logiciel libre ... Viticulture territoire et modélisation. Rien d'antinomique. ;-)