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 : [[Media:Ricm5-s10-projet-twitter-presentation.pdf|Ricm5-s10-projet-twitter-presentation.pdf]]
 * Flyer : [[Media:Ricm5-s10-projet-twitter-flyer.pdf|Ricm5-s10-projet-twitter-flyer.pdf]]
 * Poster : [[Media:Ricm5-s10-projet-twitter-poster.pdf|Ricm5-s10-projet-twitter-poster.pdf]]
 * Screenshots : Screenshots

= À propos de l'équipe =

Etudiants :
 * Jordan Calvi  <-- Chef de projet
 * Xu Feng 
 * Mame Daba Diouf 

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)


 * 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


 * Daba
 * Node.js et Sails.js


 * 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


 * 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


 * 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


 * 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

= Liens associés = Big Data :
 * Storm project
 * Apache Hadoop
 * MapReduce

Frameworks :
 * Node.js
 * Expressjs
 * Socket.io
 * Sails.js

BD :
 * MongoDB

IHM :
 * NVD3

= 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 [[Media:hello-twitter-nodejs.zip|hello-twitter-nodejs.zip]]

- cd 

- npm install

- node app.js

- Aller à localhost:3000 puis taper un mot dans la barre de recherche.