Top 5 des Miss France
Top 5 des Miss France 2016 - Crédit @TF1

L’élection Miss France rassemble chaque année plusieurs millions de français derrière leur petit écran. Le système de vote a souvent été source de controverses. Il a évolué ces dernières années pour permettre aujourd’hui au public de voter via SMS. Le jury et le public contribuent chacun à 50% dans le résultat final.

La question que je me pose souvent: « Qui vote ? » .

Qui va dépenser 0,5€ en SMS surtaxé pour donner un coup de pouce à sa favorite ?

D’où l’idée d’analyser cette élection au travers d’un réseau social gratuit et public. Avec une question simple: « Quelle Miss aurait été élue par Twitter ? »

Analyse globale des tweets

Périmètre

Pour rappel, voici le déroulement de la soirée:

  • 21h00: démarrage de l’émission

  • 22h00: fin de la présentation de toutes les candidates

  • 22h45: sélection des 12 demi-finalistes

  • 23h15: interview des candidates

  • 23h35: sélection des 5 finalistes

  • 00h10: Deuxième interview

  • 00h15: clôture des votes Résultat:

  • 5: Réunion

  • 4: Provence

  • 3: Tahiti

  • 2: Martinique

  • 1: Nord Pas de Calais

Sur la soirée, j’ai récupéré près de 400 000 tweets en provenance de 77 000 utilisateurs. Les tweets ont été collectés avec un filtre sur le hashtag officiel #MissFrance2016.

(A noter que j’ai ensuite supprimé ce hashtag de mes données car il n’apportait rien dans les analyses.)

Miss France 2016 - Dashboard Miss France 2016 - Dashboard

Comme on le voit, les tweets ont démarré vraiment vers 21h au début de l’émission.

On remarque également que les hashtags sont relativement peu utilisés. Seulement 4000 tweets pour le hashtag le plus populaire #missmartinique.

Twitter est l’outil de prédilection des professionnels qui s’en servent généralement pour communiquer sur des évènements ou des publications intéressantes: les tweets sont formatés et usent (ou abusent) des hashtags ou des mentions (@).

Le soir de l’élection de Miss France, les utilisateurs ont plutôt engagé des conversations, délaissant au passage les habituels outils de publication en masse.

Outils de publication Outils de publication

Suite à ce constat, j’ai donc privilégié l’analyse des tweets à partir des mots clés au détriment des hashtags.Pour se faire, j’ai décomposé ensuite les mots clés en deux groupes. Le premier groupe se rapporte aux Miss (provence, missprovence, etc.) et me servira à raccrocher les tweets aux différentes miss. Le deuxième groupe de mots clés sera expurgés des termes précédent et ne servira qu’à qualifier les messages.

Miss Provence est la Miss France 2016 Twitter

Miss Provence Miss Provence - Crédit @TF1

Comparatif par Miss Comparatif par Miss

Les premiers résultats sont éloquents: Miss Provence se détache très nettement avec près de 24 000 tweets qui la citent.

Sans surprise, on retrouve nos 5 finalistes aux 6 premières places.

Miss Normandie vient se glisser dans ce classement. Malheureusement, elle a plutôt été l’objet de moquerie sur le réseau social.

Moqueries Miss Normandie Moqueries sur Miss Normandie

Comparatif détaillé du top 5

Analyse horaire Analyse horaire du top 5

L’analyse horaire détaillée montre que Miss Provence a été remarquée très tôt et que tout au long de la soirée, elle a devancée largement ses concurrentes.

Les candidates de Martinique ou de Tahiti ont fait également de bons scores et arrivent juste derrière.

A contrario, Miss Nord Pas de Calais a été très discrète et est finalement sortie du lot que sur la fin, au moment de la remise de la couronne, un peu à la surprise générale de la twittosphère.

Si l’on filtre les données jusqu’à 00h10 (juste avant la clôture des votes), voici donc notre classement Twitter:

Classement Twitter Classement Twitter avant la clôture des votes

Il est possible d’aller plus loin et d’analyser plus finement le texte des messages.

J’ai essayé de faire ressortir les qualificatifs que l’on utilise habituellement lorsqu’on évoque de jolies femmes. Certains internautes n’hésitant pas à croquer, j’ai également intégré les termes antonymes. Enfin, j’ai également intégré quelques termes d’anatomie pour déterminer les atouts les plus remarqués de nos candidates.

Analyse sémantique
Analyse sémantique Top 5

Spark pour collecter et traiter les données

Pour ceux que ça intéresse, voici quelques informations techniques concernant le pré-traitement des données en amont avec Spark.

Présentation

Il existe de nombreuses manières de collecter puis de traiter les données Twitter.

Dans un précédent post, j’avais utilisé Flume avec Hive.

Cette fois-ci, j’ai opté pour Spark.

Si vous ne connaissez pas Spark, je vous invite à consulter également un précédent post pour une présentation synthétique des atouts de cette solution.

J’ai réalisé ce projet sur une machine virtuelle avec une configuration très légère (2 cores, 3 Go de RAM).

La collecte a été réalisé en utilisant la librairie de streaming de Spark et les package TwitterUtils et Twitter4j qui permettent de récupérer très simplement les données de Twitter.

Collecte des tweets toutes les 10 minutes

Spark streaming ne fait pas réellement de temps réel mais fonctionne plutôt en micro-batchs qui s’éxécutent à fréquence régulière.

Dans ce projet, j’ai configuré ma fenêtre de traitement à 10 mn.

Sur cette fenêtre, les données sont collectées. A la fin des 10 minutes, le traitement fait une première analyse (nombre de tweets postés, principaux hashtags utilisés). Les données pertinentes (id, user, text, etc.) des tweets sont extraites et écrites sur disque.

Extraction des hashtags et des mots-clés

Je procède ensuite à l’analyse du texte contenu dans les tweets. Le texte est normalisé en minuscule. Il est ensuite décomposé en mots.

Les hashtags sont extraits très simplement: ce sont les mots préfixés par « # ».

Je crée ensuite un fichier résultat contenant pour chaque correspondance trouvée l’id du tweet et le hashtag associé.

Pour les mots-clés, c’est plus complexe.

Je ne retiens tout d’abord que les mots dont la longueur est supérieure à 3 pour éliminer la plupart des mots sans forte valeur sémantique.

Je complète le nettoyage au moyen d’un dictionnaire contenant les mots que je ne souhaite pas retenir.

Pour terminer, j’établis la liste des mots par ordre décroissant d’usage et ne retiens que les 500 premiers.

Je n’ai plus ensuite qu’à créer un fichier résultat contenant pour chaque correspondance trouvée l’id du tweet et le mot clé associé.

Cette approche me permet de concilier pertinence et performance en limitant la volumétrie générée. A l’année prochaine pour la Miss France 2017 😉