Analyse d’opinion « temps réel » à partir de Twitter/FicheSuivi
Présentation du projet
Ce projet de 5ème année s'établit sur une durée de 2 mois, en partenariat avec l'entreprise Viseo.
Dans une problématique de disposer d'un outil d'aide à la décision en lien avec des produits cosmétiques, une application basée sur l'analyse sentimentale de Tweets devra être développée. Celle-ci devra permettre de déterminer le sentiment général exprimé autour d'une marque. Les informations traitées devront ensuite être restituées en temps réel au sein d'interfaces multi-display.
- Démonstration : http://vodinteprwes01.viseo.net/
- Présentation : Ricm5-s10-projet-twitter-presentation.pdf
- Flyer : Ricm5-s10-projet-twitter-flyer.pdf
- Poster : Ricm5-s10-projet-twitter-poster.pdf
- Screenshots : Screenshots
À propos de l'équipe
Etudiants :
- Jordan Calvi <jordan.calvi@hotmail.fr> <-- Chef de projet
- Xu Feng <x.feng@outlook.com>
- Mame Daba Diouf <diouf-daba@hotmail.com>
Encadrant Polytech :
- Didier Donsez
Encadrants Viseo :
- Fatoumata Camara
- Cédric Lopez
Téléchargements
- Cahier des charges
- Software Requirements Specification
- Dossier de conception
- Code source
- Manuel
- Rapport
Progression
Sprint 1 : 27/01/2014 - 03/02/2014
- Première compréhension du sujet
- Premier état de l'art des technologies
- Prise de contact avec les encadrants Viseo
- Élaboration d'une liste de questions pour les encadrants Viseo
- Première réunion avec les encadrants Viseo pour relever le besoin
Sprint 2 : 04/02/2014 - 10/02/2014
- Daba, Xu, Jordan
- Relève du besoin
- Cahier des charges
- Début de rédaction du document de spécifications
- Etat de l'art des technologies
- Jordan
- Etude de l’API Twitter et de Twitter Storm (connecter Storm à l’API Twitter, dictionnaire cosmétique et traitement de données en flux avec dictionnaire émotions)
- Restitution des données (données pertinentes et exemples de graphes axé aide à la décision librairie nvd3.js VS highcharts) : Pie chart (positive negative neutral), Line Chart (trends), Bar chart (actual sentiment)
- Daba
- Etude de Tweetping (nodejs, socket.io, processing.js, (backbone.js))
- liste des données extraites par Tweetping et autres applications
- leur type
- Aspect temps réel coté front (mettre en place une mini appli fonctionnelle issu d’un tuto -> nodejs + websocket)
- Etude de Tweetping (nodejs, socket.io, processing.js, (backbone.js))
- Xu
- Etude de mongodb
- (Etude de hadoop)
- lien entre les deux (connecteurs ?), début de recherche sur l’organisation des données JSON (stockage des tweets préfiltrés et prétraité) ex: nom_du_twittos, date, contenu, langue, negative, neutre, positive -> 0 à 1 ou 0 à 100, opinion(somme), etc.
Sprint 3 : 11/02/2014 - 17/02/2014
- Daba, Xu, Jordan
- Implémentations partiales pour validation des technologies
- Jordan
- Apache Storm, Twitter4j, Twitter API et Holmes API
- Xu
- MongoDB et NVD3
Sprint 4 : 18/02/2014 - 26/02/2014
- Daba, Xu, Jordan
- Preuve de concepte
- Interconnexion des parties
Sprint 5 : 27/02/2014 - 10/03/2014 (interruption du 1 au 9 mars)
- Daba, Xu, Jordan
- Recenser les fonctionnalités orienté utilisateur et apporter une représentation graphique adaptée
- Conception IHM (mobile en priorité)
- Validation de la conception du frontal pour implémentation
- Jordan
- Storm
- Ajout des champs "retweeted" et "favorite_count" aux tweets traités, en base
- Insertion des mots clés du fichier txt en base, à la première lecture -> pour la recherche par tagué et le top des mots clés recherchés
- Rédaction d'une procédure de déploiement de Storm (commandes à taper, variables d'environnement à modifier, liste des dépendances) pour déploiement ultérieur
- Storm
- Daba
- Migration de la webapp sur Sails (MVC -> réponse aux requêtes sur telle ou telle URL)
- Rédaction d'une procédure de déploiement de la partie webapp (commandes à taper, variables d'environnement à modifie, liste des dépendances) pour déploiement ultérieur
- Xu
- Résolution du problème de responsive design des graphes NVD3
- Résolution des beugs liés à la présence de plusieurs graphes sur une même page web
- Combinaison d'une multi bar chart avec line chart avec NVD3 ? Pour représenter l'évolution du négatif, neutre, positif + score
Sprint 6 : 11/02/2014 - 19/03/2014
- Daba, Xu, Jordan
- Développement
- Jordan
- Storm
- MAJ champs RT favoris et retweet
- MAJ du package Holmes suite à l’update de l’API
- MAJ du pom.xml et de l'appel aux méthodes suite à la MAJ de la librairie twitter4j
- Corriger le bug tweets démultiplés
- Changer l'insertion des données dans la base depuis Storm : remplacement d'une structure JSON par des DBObject de la librairie mongodb-driver
- Exemple fini avec barre de recherche tags (bouchonné puis depuis la BD)
- Créer un autre compte Twitter pour le dev
- Ne pas inclure les fichiers properties dans l'archive JAR
- Ajout pondération adj x2
- Déployer l’application
- WebApp
- Création d'une structure Express comme base
- Examples bouchonnés des graphes nvd3
- Storm
- Daba
- Hello-twitter-nodejs
- Ajouter connexion à la base mongoDB + requetes basiques (find + filtre mot clé et sur l’heure de la dernière requête)
- Timer de 15 secondes associé à une websocket, tant que active) -> Plus de timer cat le Watcher apporte du vrai temps réel
- Watcher nodejs MongoDB
- Affichage temps reel des tweets inserés dans une collection
- Affichage temps réel des résultats du watcher sur une page web
- Affichage temps réel des résultats du watcher sur une page web en n'envoyant à la page web que les résultats filtré pas des TAGs
- Ajouter la prise en charge "multi-utilisateurs"
- Comment savoir à qui distribuer un tweet récupéré par le watcher?(association mot-clés/ socket active)
- Requêtes MongoDB pour les graphes
- Hello-twitter-nodejs
- Xu
- WebApp
- Implémentation de la structure Twitter Bootstrap (mobile first) telle que décrite par la conception IHM concrète Balsamiq Mockup et discuté avec Viseo.
- Intégrations des graphes bouchonnés sur le front
- Affichage des tweets
- WebApp
Liens associés
Big Data :
Frameworks :
BD :
IHM :
Tutoriels
- NodeJS (avec Express et SocketIO pour les websockets)
Ce tutoriel permet d'ouvrir un stream sur un mot et d'afficher en temps-réel les tweets qui lui sont associés. Les token d'accès dans le fichier credentials.js doivent être créés au préalable dans "Twitter administration tools". (Il faut disposer d'un compte Twitter).
- Installer NodeJS ( Node.js )
- Lancer mongod
- Unzip hello-twitter-nodejs.zip
- cd <Répertoire>
- npm install
- node app.js
- Aller à localhost:3000 puis taper un mot dans la barre de recherche.