Analyse d’opinion « temps réel » à partir de Twitter/FicheSuivi

From air
Jump to: navigation, search

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.