Difference between revisions of "Analyse d’opinion « temps réel » à partir de Twitter/FicheSuivi"
Jordan.Calvi (talk | contribs) |
|||
(15 intermediate revisions by 3 users not shown) | |||
Line 3: | Line 3: | ||
Ce projet de 5ème année s'établit sur une durée de 2 mois, en partenariat avec l'entreprise Viseo. |
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 |
+ | 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/ 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 : [[Analyse_d’opinion_«_temps_réel_»_à_partir_de_Twitter/Screenshots|Screenshots]] |
||
= À propos de l'équipe = |
= À propos de l'équipe = |
||
Line 9: | Line 15: | ||
Etudiants : |
Etudiants : |
||
* Jordan Calvi <jordan.calvi@hotmail.fr> <-- Chef de projet |
* Jordan Calvi <jordan.calvi@hotmail.fr> <-- Chef de projet |
||
− | * Xu Feng < |
+ | * Xu Feng <x.feng@outlook.com> |
* Mame Daba Diouf <diouf-daba@hotmail.com> |
* Mame Daba Diouf <diouf-daba@hotmail.com> |
||
Line 64: | Line 70: | ||
* '''Jordan''' |
* '''Jordan''' |
||
− | ** Apache Storm, Twitter4j, Twitter API et Holmes API |
+ | ** [[Apache Storm]], Twitter4j, Twitter API et Holmes API |
* '''Daba''' |
* '''Daba''' |
||
− | ** Node.js et Sails.js |
+ | ** [[Node.js]] et [[Sails.js]] |
* '''Xu''' |
* '''Xu''' |
||
− | ** MongoDB et NVD3 |
+ | ** [[MongoDB]] et NVD3 |
== Sprint 4 : 18/02/2014 - 26/02/2014 == |
== Sprint 4 : 18/02/2014 - 26/02/2014 == |
||
Line 105: | Line 111: | ||
* '''Jordan ''' |
* '''Jordan ''' |
||
− | ** Storm |
+ | ** ''Storm'' |
*** MAJ champs RT favoris et retweet |
*** MAJ champs RT favoris et retweet |
||
*** MAJ du package Holmes suite à l’update de l’API |
*** MAJ du package Holmes suite à l’update de l’API |
||
Line 116: | Line 122: | ||
*** Ajout pondération adj x2 |
*** Ajout pondération adj x2 |
||
*** Déployer l’application |
*** Déployer l’application |
||
− | ** WebApp |
+ | ** ''WebApp'' |
*** Création d'une structure Express comme base |
*** Création d'une structure Express comme base |
||
*** Examples bouchonnés des graphes nvd3 |
*** Examples bouchonnés des graphes nvd3 |
||
* '''Daba''' |
* '''Daba''' |
||
− | *Hello-twitter-nodejs |
+ | ** ''Hello-twitter-nodejs'' |
− | ** Ajouter connexion à la base mongoDB + requetes basiques (find + filtre mot clé et sur l’heure de la dernière requête) |
+ | *** 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 |
+ | *** 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 |
+ | *** Watcher nodejs MongoDB |
− | *** Affichage temps reel des tweets inserés dans une collection |
+ | **** 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 |
− | *** 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 |
+ | **** 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" |
+ | **** 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) |
+ | ***** Comment savoir à qui distribuer un tweet récupéré par le watcher?(association mot-clés/ socket active) |
− | *** Requêtes MongoDB pour les graphes |
+ | **** Requêtes MongoDB pour les graphes |
* '''Xu''' |
* '''Xu''' |
||
− | * WebApp |
+ | ** ''WebApp'' |
− | ** Implémentation de la structure Twitter Bootstrap (mobile first) |
+ | *** 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 |
+ | *** Intégrations des graphes bouchonnés sur le front |
+ | *** Affichage des tweets |
||
= Liens associés = |
= Liens associés = |
||
Line 157: | Line 164: | ||
IHM : |
IHM : |
||
* [http://nvd3.org/ NVD3] |
* [http://nvd3.org/ 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 ( [http://nodejs.org/ Node.js] ) |
||
+ | |||
+ | - Lancer mongod |
||
+ | |||
+ | - Unzip [[Media:hello-twitter-nodejs.zip|hello-twitter-nodejs.zip]] |
||
+ | |||
+ | - cd <Répertoire> |
||
+ | |||
+ | - npm install |
||
+ | |||
+ | - node app.js |
||
+ | |||
+ | - Aller à localhost:3000 puis taper un mot dans la barre de recherche. |
Latest revision as of 08:45, 23 August 2015
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.