Fiche de suivi - Recommandation intelligente de films

Voici la Fiche de suivi du projet de fin d'études DeepMovies 2016-2017

Page d'accueil du projet

= Équipe =
 * Rachex Coralie (Chef de projet - Scrum Master)
 * Niogret Edwin (Responsable innovation)
 * Hattinguais Julian (Responsable qualité)
 * Navarro Elsa (Responsable communication, Médiatrice)
 * Dunand Quentin (Responsable des deadlines,Responsable du front-end)

= Avancée du projet =

Sprint dédié aux travaux préparatoires du projet

 * Debriefing autour du projet
 * Renseignements sur les technologies et principaux défis techniques
 * Maquette de tests sur la faisabilité du projet (recherche de solutions pour les principaux problèmes techniques afin de guider nos choix technologiques et choix de fonctionnalités)
 * Choix technologiques
 * Préparation des environnements
 * Établissement de la liste des exigences fonctionnelles et non fonctionnelles



Semaine 1 : 23/01 - 29/01

 * Mise en place du wiki (Edwin)
 * Recherche sur les technologies et les problèmes techniques (Tous)
 * Prise RDV avec Massih-Reza Amini pour renseignements (Coralie)
 * Mise en place d'un agenda pour le suivi du projet (Coralie)
 * Comment lier l'API au front-end ? AngularJS ou Polymer ? ... (Quentin)


 * Mise en place de l'architecture (Tous) avant de faire un prototype comme prévu.
 * Installation, compréhension et manipulation de Keras (Tous)
 * Recherche mise en place API-REST Python pour le back-end (Julian)
 * Mise en place du front-end - première requêtes - choix Angular pour communiquer avec une API-REST (Quentin)
 * Traitement de données simple en se basant juste sur le vote des utilisateurs de TMDb sur les films (Edwin, Coralie, Elsa)
 * Mise en place d'un prototype capable de récolter grâce à l'API de TMDB les informations de films ciblés. Puis construction d'un modèle de Deep Learning capable de prédire si une personne va aimer un film ou non en fonction de sa note. (Edwin, Coralie)
 * Recherche de la transformation de texte en valeurs numériques (String to Float) et plus généralement du prétraitement des données (Elsa, Coralie, Quentin) : découvertes de Word2Vec et de GloVe.


 * Rendez-vous avec Massih-Reza Amini pour éclaircir le sujet, notamment au sujet du pré-traitement du texte. (Tous)
 * Premiers scripts Python pour le prétraitement des données : import depuis un script JSON (Julian) et transformation sous forme de vecteur moyen pour un film donné (Elsa), recherche d'une méthode plus approfondie pour traiter le Résumé (Coralie).
 * Réflexion sur les choix des différents layers de traitement des données et sur l'étape d'embedding des données (premier traitement) (Edwin).
 * Mise en place d'un système de notation fonctionnel qui permet d'enregistrer les données à partir du front (Quentin).

Sprint 1
Le scrumboard utilisé pour le projet est visible dans l'onglet Projet de l'organisation DeepLearningMovies que nous avons créé sur Github. Chaque tâche est réalisée par un ou plusieurs membre(s) de l'équipe et testée par un autre membre de l'équipe.



Tâches du Sprint1

 * Établissement des vues principales côté client (recherche et annotation de films)
 * Mise en place de tout le processus de pré-traitement des données et du premier layer (Embedding)
 * Création du classifieur (réseau neuronal) et de la structure de test du modèle crée
 * Récolter des données pour pouvoir tester le classifieur
 * Commencer l'entrainement et l'ajustement du classifieur une fois la structure mise en place

Lundi

 * Préparation du premier sprint :
 * Mise au point sur le travail réalisé la semaine passée et sur le travail à réaliser durant le sprint
 * Établissement d'une liste de fonctionnalités, avec une estimation de l'importance et du temps de réalisation de chaque tâche
 * Sélection des fonctionnalités à réaliser au cours du Sprint, remplissage du Scrumboard
 * Mise au point sur l'arborescence du git / architecture du projet
 * Installation d'une version GPU pour Keras et Tensor-Flow sur les machines équipées d'un bon GPU

Mardi

 * Réunion avec Didier Donsez :
 * Technologies : storm, spark, flint (temps réel) pour Twitter
 * Distribution : préparer un déploiement sur GRID5000, contacter Olivier Richard et préparer un container Docker
 * Utiliser Github pour héberger le site web


 * Vues "recherche de films", "annotation de film" et "consultation des films annotés" (Quentin)
 * Creation d'un premier classifieur simple sur les données "titre", "mots clés", "résumé", "notes" (Edwin, Elsa, Coralie, Julian)
 * prétraitement des textes via Doc2Vec (Coralie)
 * prétraitement des mots via Glove (Elsa, Edwin, Julian)
 * récupération des données (Julian)
 * mise en place de l'embedding (Edwin)
 * mise en place d'une librairie pour le pré-traitement des données envoyées aux classifieur (Julian)
 * Import des modules (Julian)

Mercredi

 * Recherche d'un moyen de distribuer le classifieur sous Keras - Elephas ? (Coralie)
 * Chargement des images de films côté client (Quentin)
 * Poursuite du premier classifieur simple sur les données "titre", "mots clés", "résumé", "notes" + Ajout "genre" (Edwin, Elsa, Coralie, Julian)
 * prétraitement des textes via Doc2Vec (Coralie)
 * extraction des données JSON via l'API (Elsa)
 * prétraitement des genres (Julian)
 * prétraitement général (mise en forme de la matrice de données) (Edwin)
 * revue de code (Julian)

Jeudi

 * Cours de MPI - travail sur la communication au sein d'un groupe
 * Recherche d'un moyen de distribuer le classifieur Keras - Elephas (Coralie)
 * Pagination et chargement d'images (Quentin)
 * Lien classifieur simple - preprocessing terminé (Elsa, aide d'Edwin)
 * Installation version GPU sur PC (Julian)
 * Validation croisée pour pouvoir tester le classifieur correctement (Edwin & Elsa)

Vendredi

 * Revue du classifieur pour obtenir une meilleure précision (Elsa & Edwin)
 * Mise en place d'un système de test du classifieur automatisé avec k validations croisées pour les films enregistrés dans un fichier JSON (Elsa)
 * Insertion de Doc2Vec dans le classifieur (Julian)
 * Auto-formation sur Docker (Coralie, Edwin)
 * Déploiement sur github.io (Quentin)
 * Annotation de films pour constituer la base d'apprentissage/test (Tous)

Lundi

 * Cours de MPI - Cours sur la gestion de projet
 * Mise en place de l'image Docker avec Python, Keras et Tensorflow en partant d'un Ubuntu 14 (Edwin)
 * Mise en place de l'image Docker avec Spark en partant d'un Ubuntu 14 (Coralie)
 * Recherche sur la mise en place de tests avec Python (Elsa)
 * Fix de bugs dans preprocessing (Julian)
 * Ajout d'un boite de dialogue permettant de visualiser les infos d'un film (Quentin)

Mardi

 * Rendez-vous avec Mr. Amini
 * Finalisation de l'image Docker avec Python, Keras et Tensorflow (Edwin)
 * Test le modèle D2V sur un analyseur de sentiment de tweets, beaucoup plus objectif que les gouts utilisateurs vis à vis des films (Coralie).
 * Mise en place de modules de test unitaires dans MovieProject/tests/unit et suppression de fichiers inutiles dans MovieProject/tests (Elsa)
 * Ajout de nouveaux fichiers de tests (json) et évaluation du classifieur de façon générique sur les fichiers json dans MovieProject/resources/evaluation (Elsa)
 * Evaluation du classifieur avec la méthode Doc2Vec (Elsa)
 * Preprocessing des acteurs et des realisateurs et ajout des fonction de test associées (Julian)
 * Amélioration de la boîte de dialogue pour les infos (Quentin)

Mercredi

 * Début de la mise en place des différents modèles d'apprentissage en vue de leur comparaison :
 * Réseau neuronal avec Keras (Elsa)
 * Perceptron (Coralie)
 * Modification du prétraitement afin de pouvoir récupérer les matrices de chacune des variables caractérisant un film (Julian)
 * Ajout de Spark à l'image Docker (Edwin)
 * Création de statistiques sur les goûts utilisateurs côté client (Quentin)

Jeudi

 * Poursuite des tests de performance :
 * Test de l'influence de chaque variable des films sur le modèle du perceptron, afin de ne sélectionner que les variables pertinentes (Coralie)
 * Test du réseau neuronal (Elsa)
 * Mise en place d'un SVM pour concurrencer les performances des deux autres modèles (Julian)
 * Test de l'image Docker (Edwin)
 * Poursuite de la création de statistiques sur les goûts utilisateurs côté client (Quentin)

Vendredi

 * Documentation sur Spark (Edwin & Coralie)
 * Finalisation perceptron + intégration dans evaluation (Coralie)
 * Finalisation SVM + intégration dans evaluation (Julian)
 * Mise en place du module evaluation et intégration des modifications de classifieur & preprocessing (Elsa)
 * Visualisation des statistiques + explications sur la page d'accueil (Quentin)