Difference between revisions of "Analyse d’opinion « temps réel » à partir de Twitter/FicheSuivi"

From air
Jump to navigation Jump to search
 
(19 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 l'opinion générale vis-à-vis d'un produit. Les informations traitées devront ensuite être restituées au sein d'interfaces multi-display.
+
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 <fengxu1989@gmail.com>
+
* Xu Feng <x.feng@outlook.com>
 
* Mame Daba Diouf <diouf-daba@hotmail.com>
 
* Mame Daba Diouf <diouf-daba@hotmail.com>
   
Line 26: Line 32:
 
* Manuel
 
* Manuel
 
* Rapport
 
* Rapport
 
= Backlog =
 
   
 
= Progression =
 
= Progression =
== Sprint 1 : 27/01/2014 - 04/02/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 37: Line 41:
 
* 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 : 05/02/2014 - 18/02/2014 ==
+
== Sprint 2 : 04/02/2014 - 10/02/2014 ==
  +
 
* '''Daba, Xu, Jordan'''
 
* '''Daba, Xu, Jordan'''
  +
** Relève du besoin
**Cahier des charges
 
  +
** Cahier des charges
  +
** Début de rédaction du document de spécifications
  +
** Etat de l'art des technologies
   
 
* '''Jordan'''
 
* '''Jordan'''
Line 55: Line 63:
 
**(Etude de hadoop)
 
**(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.
 
*** 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 =
 
= Liens associés =
  +
Big Data :
 
* [http://storm-project.net/ Storm project]
 
* [http://storm-project.net/ Storm project]
 
* [http://hadoop.apache.org/ Apache Hadoop]
 
* [http://hadoop.apache.org/ Apache Hadoop]
 
* [http://en.wikipedia.org/wiki/MapReduce MapReduce]
 
* [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 :
 
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.

À 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)
  • 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

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 :


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.