Difference between revisions of "Analyse d’opinion « temps réel » à partir de Twitter/FicheSuivi"
Jordan.Calvi (talk | contribs) |
|||
(29 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 = |
||
Etudiants : |
Etudiants : |
||
− | * Jordan Calvi <-- Chef de projet |
+ | * Jordan Calvi <jordan.calvi@hotmail.fr> <-- Chef de projet |
− | * Xu Feng |
+ | * Xu Feng <x.feng@outlook.com> |
− | * Mame Daba Diouf |
+ | * Mame Daba Diouf <diouf-daba@hotmail.com> |
Encadrant Polytech : |
Encadrant Polytech : |
||
Line 19: | Line 25: | ||
* Cédric Lopez |
* Cédric Lopez |
||
+ | = Téléchargements = |
||
+ | * Cahier des charges |
||
+ | * Software Requirements Specification |
||
+ | * Dossier de conception |
||
+ | * Code source |
||
+ | * Manuel |
||
+ | * Rapport |
||
= Progression = |
= Progression = |
||
− | == Sprint 1 : 27/01/2014 - |
+ | == Sprint 1 : 27/01/2014 - 03/02/2014 == |
* Première compréhension du sujet |
* Première compréhension du sujet |
||
* Premier état de l'art des technologies |
* Premier état de l'art des technologies |
||
Line 27: | Line 40: | ||
* Élaboration d'une liste de questions pour 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 |
* 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 : |
||
+ | * [http://storm-project.net/ Storm project] |
||
+ | * [http://hadoop.apache.org/ Apache Hadoop] |
||
+ | * [http://en.wikipedia.org/wiki/MapReduce MapReduce] |
||
+ | |||
+ | |||
+ | Frameworks : |
||
+ | * [http://nodejs.org/ Node.js] |
||
+ | * [http://expressjs.com/ Expressjs] |
||
+ | * [http://socket.io/ Socket.io] |
||
+ | * [http://sailsjs.org/ Sails.js] |
||
+ | |||
+ | |||
+ | BD : |
||
+ | * [http://www.mongodb.org/ MongoDB] |
||
+ | |||
+ | |||
+ | IHM : |
||
+ | * [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.