https://air.imag.fr/api.php?action=feedcontributions&user=Coralie.Rachex&feedformat=atomair - User contributions [en]2024-03-28T21:18:02ZUser contributionsMediaWiki 1.35.13https://air.imag.fr/index.php?title=Fiche_de_suivi_-_Recommandation_intelligente_de_films&diff=34864Fiche de suivi - Recommandation intelligente de films2017-03-16T12:38:36Z<p>Coralie.Rachex: /* Mercredi */</p>
<hr />
<div>Voici la Fiche de suivi du projet de fin d'études DeepMovies 2016-2017<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin (Responsable innovation)<br />
* Hattinguais Julian (Responsable qualité)<br />
* Navarro Elsa (Responsable communication, Médiatrice)<br />
* Dunand Quentin (Responsable des deadlines,Responsable du front-end)<br />
<br />
= Avancée du projet =<br />
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.<br />
<br />
== Sprint 0 ==<br />
<br />
===Sprint dédié aux travaux préparatoires du projet===<br />
* Debriefing autour du projet<br />
* Renseignements sur les technologies et principaux défis techniques<br />
* 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) <br />
* Choix technologiques<br />
* Préparation des environnements<br />
* Établissement de la liste des exigences fonctionnelles et non fonctionnelles<br />
<br />
<br />
[[File:Sprint0-Semaine1.jpg|1400px|middle]]<br />
<br />
=== Semaine 1 : 23/01 - 29/01 ===<br />
* Mise en place du wiki (Edwin)<br />
* Recherche sur les technologies et les problèmes techniques (Tous)<br />
* Prise RDV avec Massih-Reza Amini pour renseignements (Coralie)<br />
* Mise en place d'un agenda pour le suivi du projet (Coralie)<br />
* Comment lier l'API au front-end ? AngularJS ou Polymer ? ... (Quentin)<br />
<br />
* Mise en place de l'architecture (Tous) avant de faire un prototype comme prévu.<br />
* Installation, compréhension et manipulation de Keras (Tous)<br />
* Recherche mise en place API-REST Python pour le back-end (Julian)<br />
* Mise en place du front-end - première requêtes - choix Angular pour communiquer avec une API-REST (Quentin)<br />
* Traitement de données simple en se basant juste sur le vote des utilisateurs de TMDb sur les films (Edwin, Coralie, Elsa)<br />
* 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)<br />
* 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 [http://nlp.stanford.edu/projects/glove/ GloVe].<br />
<br />
<br />
* Rendez-vous avec Massih-Reza Amini pour éclaircir le sujet, notamment au sujet du pré-traitement du texte. (Tous)<br />
* 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).<br />
* 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).<br />
* Mise en place d'un système de notation fonctionnel qui permet d'enregistrer les données à partir du front (Quentin).<br />
<br />
== Sprint 1 ==<br />
<br />
===Tâches du Sprint1===<br />
* T1. Établissement des vues principales côté client (recherche et annotation de films)<br />
* T2. Mise en place du processus de pré-traitement des données (titre, mots clés, résumé, note, artiste, producteur)<br />
* T3. Mise en place du réseau neuronal (réseau neuronal simple)<br />
* T4. Mise en place de la structure de test du réseau neuronal (former les corpus de données, cross validation, test de précision)<br />
* T5. Mise en place de l'environnement système (Docker)<br />
<br />
=== Semaine 2 : 30/01 - 05/02 ===<br />
<br />
[[File:Sprint1-Semaine2.jpg|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* Préparation du premier sprint :<br />
** Mise au point sur le travail réalisé la semaine passée et sur le travail à réaliser durant le sprint<br />
** Établissement d'une liste de fonctionnalités, avec une estimation de l'importance et du temps de réalisation de chaque tâche<br />
** Sélection des fonctionnalités à réaliser au cours du Sprint, remplissage du Scrumboard<br />
* Mise au point sur l'arborescence du git / architecture du projet<br />
* Installation d'une version GPU pour Keras et Tensor-Flow sur les machines équipées d'un bon GPU<br />
<br />
====Mardi====<br />
<br />
* Réunion avec Didier Donsez : <br />
** Technologies : storm, spark, flint (temps réel) pour Twitter<br />
** Distribution : préparer un déploiement sur GRID5000, contacter Olivier Richard et préparer un container Docker<br />
** Utiliser Github pour héberger le site web<br />
<br />
* T1. -> Vues "recherche de films", "annotation de film" et "consultation des films annotés" (Quentin)<br />
* T2. -> Prétraitement des données "titre", "mots clés", "résumé", "notes" (Edwin, Elsa, Coralie, Julian)<br />
** prétraitement des textes via Doc2Vec (Coralie)<br />
** prétraitement des mots via Glove (Elsa, Edwin, Julian)<br />
** récupération des données (Julian)<br />
** mise en place de l'embedding (Edwin)<br />
** mise en place d'une librairie pour le pré-traitement des données envoyées aux classifieur (Julian)<br />
** Import des modules (Julian)<br />
<br />
====Mercredi====<br />
<br />
* T1. -> Chargement des images de films côté client (Quentin)<br />
* T2. -> Prétraitement des données "titre", "mots clés", "résumé", "notes" + Ajout "genre" (Edwin, Elsa, Coralie, Julian)<br />
** prétraitement des textes via Doc2Vec (Coralie)<br />
** extraction des données JSON via l'API (Elsa)<br />
** prétraitement des genres (Julian)<br />
** prétraitement général (mise en forme de la matrice de données) (Edwin)<br />
** revue de code (Julian)<br />
* T5. -> Recherche d'un moyen de distribuer le classifieur sous Keras - Elephas ? (Coralie)<br />
<br />
====Jeudi====<br />
<br />
* Cours de MPI - travail sur la communication au sein d'un groupe<br />
* T1. -> Pagination et chargement d'images (Quentin)<br />
* T3. -> Création d'une première version du classifieur (Elsa, Edwin)<br />
* T4. -> Validation croisée pour pouvoir tester le classifieur correctement (Edwin & Elsa)<br />
* T5. -> Installation version GPU sur PC (Julian)<br />
* T5. -> Recherche d'un moyen de distribuer le classifieur Keras - Elephas (Coralie)<br />
<br />
====Vendredi====<br />
<br />
* T1. -> Déploiement sur github.io (Quentin)<br />
* T3. -> Insertion de Doc2Vec dans le classifieur (Julian)<br />
* T3. -> Revue du classifieur pour obtenir une meilleure précision (Elsa & Edwin)<br />
* T4. -> 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)<br />
* T4. -> Annotation de films pour constituer la base d'apprentissage/test (Tous)<br />
* T5. -> Auto-formation sur Docker (Coralie, Edwin)<br />
<br />
=== Semaine 3 : 06/02 - 12/02 ===<br />
<br />
[[File:Sprint1-Semaine3.jpg|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* Cours de MPI - gestion de projet<br />
* T1. -> Ajout d'un boite de dialogue permettant de visualiser les infos d'un film (Quentin)<br />
* T2. -> Fix de bugs dans preprocessing (Julian)<br />
* T4. -> Recherche sur la mise en place de tests avec Python (Elsa)<br />
* T5. -> Mise en place de l'image Docker avec Python, Keras et Tensorflow en partant d'un Ubuntu 14 (Edwin)<br />
* T5. -> Mise en place de l'image Docker avec Spark en partant d'un Ubuntu 14 (Coralie)<br />
<br />
====Mardi====<br />
<br />
* Rendez-vous avec Mr. Amini<br />
* T1. -> Amélioration de la boîte de dialogue pour les infos (Quentin)<br />
* T2. -> Preprocessing des acteurs et des realisateurs et ajout des fonction de test associées (Julian)<br />
* T2. -> Test le modèle D2V sur un analyseur de sentiment de tweets, beaucoup plus objectif que les gouts utilisateurs vis à vis des films (Coralie).<br />
* T2. -> Mise en place de modules de test unitaires dans MovieProject/tests/unit et suppression de fichiers inutiles dans MovieProject/tests (Elsa)<br />
* T4. -> 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)<br />
* T4. -> Evaluation du classifieur avec la méthode Doc2Vec (Elsa)<br />
* T5. -> Finalisation de l'image Docker avec Python, Keras et Tensorflow (Edwin)<br />
<br />
====Mercredi====<br />
<br />
* T1. -> Création de statistiques sur les goûts utilisateurs côté client (Quentin)<br />
* T4. -> Début de la mise en place des différents modèles d'apprentissage en vue de leur comparaison : <br />
** Réseau neuronal avec Keras (Elsa)<br />
** Perceptron (Coralie)<br />
** Modification du prétraitement afin de pouvoir récupérer les matrices de chacune des variables caractérisant un film (Julian)<br />
* T5. -> Ajout de Spark à l'image Docker (Edwin)<br />
<br />
====Jeudi====<br />
<br />
* T1. -> Poursuite de la création de statistiques sur les goûts utilisateurs côté client (Quentin)<br />
* T4. -> Poursuite des tests de performance :<br />
** 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)<br />
** Test du réseau neuronal (Elsa)<br />
** Mise en place d'un SVM pour concurrencer les performances des deux autres modèles (Julian)<br />
* T5. -> Test de l'image Docker (Edwin)<br />
<br />
====Vendredi====<br />
<br />
* T1. -> Visualisation des statistiques + explications sur la page d'accueil (Quentin)<br />
* T4. -> Finalisation perceptron + intégration dans evaluation (Coralie)<br />
* T4. -> Finalisation SVM + intégration dans evaluation (Julian)<br />
* T4. -> Mise en place du module evaluation et intégration des modifications de classifieur & preprocessing (Elsa)<br />
* T5. -> Documentation sur Spark (Edwin & Coralie)<br />
<br />
===État du scrumboard en fin du Sprint1===<br />
<br />
[[File:Sprint1-end-Scrumboard.png|1080px|middle]]<br />
<br />
== Sprint 2 ==<br />
<br />
===Tâches du Sprint2===<br />
<br />
*T1.2. Amélioration du front-end (mise en cache, etc.)<br />
*T2.2. Ajout de descripteurs (durée, budget, année de production, compagnie de production, appartenance à une sage) en vue d'améliorer notre modèle d'apprentissage.<br />
*T3.2 Amélioration du réseau neuronal (comparaison avec Perceptron simple, SVM, RN Convolutif)<br />
*T4. Mise en place de la suggestion de films (vue côté front-end et logique côté back-end)<br />
*T5. Distribution de l'apprentissage sur plusieurs machines (Docker - Spark - Mesos - Elephas) & Parallélisation requêtes<br />
*T6 Communication front/back, établissement des routes et mise en place du système d'authentification<br />
*T7. Analyse de sentiment sur les flux Twitter<br />
*T8. Mise en place de la base de données<br />
<br />
=== Semaine 4 : 13/02 - 19/02 ===<br />
<br />
[[File:Sprint2-Semaine4.png|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* Réunion de fin de sprint1 et de début de sprint0 : discussion autour des avancées, difficultés, retards & établissement fonctionnalités à implémenter au cours du sprint2<br />
*T1.2 -> Mise en place d'un cache local côté front pour éviter de faire trop de requêtes à l'API TMDB (Quentin)<br />
*T2.2. -> Revue de la structure du code (Julian)<br />
*T3.2. -> Mise en place d'un réseau neuronal de convolution (Coralie)<br />
*T4. -> Amélioration de la prédiction de film (Elsa)<br />
*T5. -> Mise en place d'un cluster Spark via Mesos (Edwin)<br />
<br />
====Mardi====<br />
<br />
*T1.2 -> Mise en place d'un cache local côté front pour éviter de faire trop de requêtes à l'API TMDB (Quentin)<br />
*T3.2 -> Amélioration du classifieur (Elsa/Quentin)<br />
*T3.2. -> Mise en place d'un réseau neuronal de convolution (Coralie)<br />
*T4. -> Amélioration de la prédiction de film (Elsa)<br />
*T5. -> Mise en place d'un cluster Spark via Mesos (Edwin)<br />
*T5. -> Parallélisation des requêtes à l'API TMDB (Julian)<br />
<br />
====Mercredi====<br />
<br />
*T1.2 -> Finalisation du cache local côté front pour éviter de faire trop de requêtes à l'API TMDB (Quentin)<br />
*T1.2 -> Finalisation des statistiques cinématographique utilisateurs (Quentin)<br />
*T2.2. -> Ajout du descripteurs "budget" avec normalisation (Edwin)<br />
*T3.2 -> Mise en place de la fonction de comparaison des combinaisons de descripteurs de films pour faciliter le travail des DUT (Julian)<br />
*T3.2. -> Mise en place d'un réseau neuronal LSTM (Coralie)<br />
*T4. -> Changement de la méthode de prédiction de film (Elsa)<br />
*T6. -> Communication front-back test (Elsa/Quentin)<br />
* SRS (Edwin)<br />
<br />
====Jeudi====<br />
<br />
* Rendez-vous avec les DUT : aide sur l'installation du projet, clone du projet Github. <br />
* Préparation de la présentation (Elsa & Edwin)<br />
* Préparation démo (Quentin & Elsa)<br />
* Mise à jour Wiki, SRS, Scrumboard (Elsa & Edwin)<br />
* Aide des DUT (Edwin & Julian)<br />
* T3.2 -> Evaluation du modèle et comparaison avec SVM et Perceptron de manière graphique (extraire les données et construire des graphes - csv ou matplotlib) (Sébastien & Marceau)<br />
* T7. -> Prétraitement des Tweet(Coralie)<br />
* T5. -> Avancement sur le distribué (Julian)<br />
* T1.2 -> Page de login du front, fix problème de CSS sur les graphes (Quentin)<br />
* T3.2 -> Amélioration du classifieur, tests en changeant les layers, le batch-size, etc. (Quentin)<br />
<br />
====Vendredi====<br />
* Préparation du travail qu'Edwin pourra réaliser durant la semaine de vacances (Edwin travaillera en décalé avec le reste du groupe)<br />
* Début de la mise en place de la base de données (Edwin)<br />
<br />
=== Semaine 5 : 20/02 - 26/02 (Edwin) ===<br />
(Edwin a travaillé la semaine précédente, en décalé avec le reste du groupe)<br />
====Lundi====<br />
*T8. -> Installation des outils liés à la gestion de la base de données MySQL et début de la conception de l'API de communication avec cette base. (Edwin)<br />
====Mardi====<br />
*T8. -> Finalisation de l'API, début des tests et des corrections de bug. (Edwin)<br />
====Mercredi====<br />
*T8. -> Ajout de nouvelles fonctionnalités SQL à l'API et tests de l'API. Création d'un readme et d'un fichier d'exemple complet pour l'utilisation de l'API de MySQL. (Edwin)<br />
*T8. -> Amélioration de l'image Docker, correction de bugs de paths et de librairies manquantes. (Edwin)<br />
====Jeudi====<br />
*T8. -> Review générale du travail lié à la base de données. (Edwin)<br />
*T8. -> Mise en place de MySQL pour Docker. (Edwin)<br />
*Mise à jour du Scrumboard et du wiki-air. (Edwin)<br />
<br />
====Vendredi====<br />
*T8. -> Amélioration du Docker pour tenter de régler des problèmes de ports liés à MySQL (non terminé). (Edwin) <br />
*T8. -> Tests unitaires de fonctionnement de serveurs apaches. (Edwin)<br />
<br />
=== Semaine 5 : 27/02 - 28/02 ===<br />
<br />
[[File:Sprint2-Semaine5.png|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* T1.2 -> Mise en place de la page de recommendations (Quentin)<br />
* Merge du classifieur sur la branche develop, avec la prédiction (Elsa)<br />
* T8. -> Revue de la BD et sécurisation (Julian) puis merge sur develop<br />
* T7. -> Finalisation de l'analyse de sentiments (Coralie) pour merge sur develop<br />
* T3.2 -> Recherche sur une construction différente des matrices (basée sur la factorisation de matrices, cf Prix Netflix) (Quentin & Elsa)<br />
<br />
====Mardi====<br />
* Harmonisation des données merge sur le git (Sentiment analysis, evaluation du classifieur et prediction) (Elsa)<br />
* T6. -> Recherche et premiers tests pour l'authentification (Quentin pour le front et Julian pour le back)<br />
* T8. & T5. -> Creation d'une instance de BD Amazon RDS dans un VPC (Coralie)<br />
* T1.2 -> Finalisation page de recommendations (Quentin)<br />
* Insertion en BD des films annotés par les users (Julian)<br />
<br />
====Mercredi====<br />
* Réunion avec Massih-Reza Amini pour parler d'un nouveau modèle de machine learning (Cf Quentin & Elsa lundi)<br />
* T4. -> Amélioration de la prédiction (Elsa)<br />
* T5. -> Essais déploiement du back sur une instance Amazon EC2 (Coralie)<br />
* T6. -> Mise en place de l'authentification simple (login) (Quentin & Julian)<br />
<br />
====Jeudi====<br />
* T4. -> Amélioration de la prédiction et module de test pour la prédiction (Elsa)<br />
* T5. -> Essais déploiement du back sur une instance Amazon EC2 (Coralie)<br />
* T1.2 -> Création des vues d'inscription (sign up) et début vue des paramètres (Quentin)<br />
* T6. -> Sécurisation des appels à l'API par Token (Julian)<br />
<br />
====Vendredi====<br />
* Nettoyage de develop + mise en place de nouveaux tests et état des lieux des tests et de la doc à faire (Elsa)<br />
* T5. -> Essais déploiement du back sur une instance Amazon EC2 (Coralie)<br />
* T6. -> Finalisation de l'inscription et test des premiers appels de récupération des films annotés d'un user (Quentin & Julian)<br />
<br />
===État du scrumboard en fin du Sprint2===<br />
<br />
[[File:Sprint2-end-Scrumboard.png|1080px|middle]]<br />
<br />
== Sprint 3 ==<br />
<br />
===Tâches du Sprint3===<br />
<br />
*T1.1 Lier le back et le front, mettre en place les routes (suggestion, annotation) - Authentification faite<br />
*T1.2 Revoir et enrichir les vues du front<br />
*T2. Déployer l'API sur un serveur Amazon (SQL dans Docker, environnement d'exécution avec Docker)<br />
*T3. Enrichir l'ensemble de tests et la documentation<br />
*T4. Mettre en place le nouveau modèle pour avoir une autre base de comparaison<br />
<br />
=== Semaine 6 : 27/02 - 05/03 ===<br />
<br />
[[File:Sprint3-Semaine6.png|1400px|middle]]<br />
<br />
====Lundi====<br />
* Conclusion sur le sprint précédent<br />
* Discussion au sujet du nouveau Sprint<br />
* T2. -> Problème de mise en place de Docker sur les machines Amazon : discussion de l'équipe pour essayer de trouver une solution (Swap)<br />
<br />
====Mardi====<br />
* T1.1 -> Ajout des routes pour gérer les ajouts/suppressions en base de données (Julian)<br />
* T1.1 -> Ajout de la logique côté front pour gérer les ajouts/suppressions en base de données (Quentin)<br />
* T1.1 -> Tests de la communication front - back(api) - base de données (Coralie, Julian, Quentin)<br />
* T2 -> Finalisation du déploiement de l'API sur un serveur Amazon + tests (Coralie)<br />
* T3 -> Tests unitaires sur apiTMDB (Elsa) et sur sql (Edwin)<br />
* T1.2 -> Charte graphique (Elsa)<br />
<br />
====Mercredi====<br />
* T1.1 -> Finalisation de l'authentification côté front (Quentin)<br />
* T4 -> Mise en place du nouveau model (factorisation machine) sur un exemple simple d'apprentissage (Quentin, Elsa)<br />
* T3 -> Tests unitaires sur sql (Edwin)<br />
* T3 -> Tests unitaires sur texts, words et tweets (Coralie)<br />
* T3 -> Tests unitaires sur preprocessing (Julian)<br />
* T1.2 -> Charte graphique (Elsa)<br />
<br />
====Jeudi====<br />
* T1.1 -> Modification de l'API pour sauvegarder et charger les modèles utilisateurs : maj routes entrainement + prédiction (Elsa)<br />
* T1.2 -> Page d'accueil côté front (Quentin)<br />
* T3 -> Tests unitaires sur preprocessing (Julian)<br />
* T3 -> Revue de code (Coralie)<br />
* T4 -> Mise en place du prétraitement pour le nouveau modèle (Edwin)<br />
<br />
====Vendredi====<br />
* T1.1 -> Revue de l'apprentissage et de la prédiction de films côté back (Elsa)<br />
* T1.2 -> Liaison du front avec l'apprentissage et la prédiction côté back (Quentin)<br />
* T1.2 -> Ajout de l'analyse de sentiment twitter côté front lors de la suggestion de films (Quentin)<br />
* T3 -> Revue de code des DUT (Julian)<br />
* T3 -> Documentation du code et du projet git (Coralie)<br />
* T4 -> Mise en place du prétraitement pour le nouveau modèle (Edwin)<br />
* Mise à jour de la documentation (Edwin et Coralie)<br />
<br />
=== Semaine 7 : 06/03 - 12/03 ===<br />
<br />
[[File:Sprint3-Semaine7.png|1400px|middle]]<br />
<br />
====Lundi====<br />
* T1.1 -> Mise en place de la prédiction via le nouveau modèle d'apprentissage (Elsa)<br />
* T1.2 -> Liaison du front avec l'apprentissage et la prédiction côté back (Quentin)<br />
* T1.2 -> Ajout de l'analyse de sentiment twitter côté front lors de la suggestion de films (Quentin) + Mise en jours du back-end en conséquent (Coralie)<br />
* T3 -> Revue de code + Commentaires (Julian)<br />
* Mise à jour de la documentation + Préparation soutenance + Préparation de la démonstration (Edwin et Coralie)<br />
<br />
====Mardi====<br />
* T1.1 -> Mise en place de la prédiction via le nouveau modèle d'apprentissage (Elsa)<br />
* T1.2 -> Liaison du front avec l'apprentissage et la prédiction du nouveau modèle (Quentin)<br />
* T2 -> Détacher le processus faisant tourner l'api du terminal et rediriger ses sorties dans un fichier (Coralie)<br />
* T3 -> Test et incorporation du travail des DUT et production des graphes correspondant (Julian + Edwin)<br />
* Mise à jour de la documentation + Préparation soutenance + Préparation de la démonstration (Coralie)<br />
<br />
====Mercredi====<br />
* Remise à zéro de la base de données pour entrer des informations propres<br />
* Préparation de la soutenance et de la démonstration<br />
* Correction des bugs persistants<br />
<br />
====Jeudi====<br />
* Soutenance de fin de projet avec Didier Donsez et Massih-Reza Amini</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=File:Sprint3-Semaine7.png&diff=34863File:Sprint3-Semaine7.png2017-03-16T12:38:12Z<p>Coralie.Rachex: </p>
<hr />
<div></div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Fiche_de_suivi_-_Recommandation_intelligente_de_films&diff=34862Fiche de suivi - Recommandation intelligente de films2017-03-16T12:36:04Z<p>Coralie.Rachex: /* Semaine 7 : 06/03 - 12/03 */</p>
<hr />
<div>Voici la Fiche de suivi du projet de fin d'études DeepMovies 2016-2017<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin (Responsable innovation)<br />
* Hattinguais Julian (Responsable qualité)<br />
* Navarro Elsa (Responsable communication, Médiatrice)<br />
* Dunand Quentin (Responsable des deadlines,Responsable du front-end)<br />
<br />
= Avancée du projet =<br />
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.<br />
<br />
== Sprint 0 ==<br />
<br />
===Sprint dédié aux travaux préparatoires du projet===<br />
* Debriefing autour du projet<br />
* Renseignements sur les technologies et principaux défis techniques<br />
* 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) <br />
* Choix technologiques<br />
* Préparation des environnements<br />
* Établissement de la liste des exigences fonctionnelles et non fonctionnelles<br />
<br />
<br />
[[File:Sprint0-Semaine1.jpg|1400px|middle]]<br />
<br />
=== Semaine 1 : 23/01 - 29/01 ===<br />
* Mise en place du wiki (Edwin)<br />
* Recherche sur les technologies et les problèmes techniques (Tous)<br />
* Prise RDV avec Massih-Reza Amini pour renseignements (Coralie)<br />
* Mise en place d'un agenda pour le suivi du projet (Coralie)<br />
* Comment lier l'API au front-end ? AngularJS ou Polymer ? ... (Quentin)<br />
<br />
* Mise en place de l'architecture (Tous) avant de faire un prototype comme prévu.<br />
* Installation, compréhension et manipulation de Keras (Tous)<br />
* Recherche mise en place API-REST Python pour le back-end (Julian)<br />
* Mise en place du front-end - première requêtes - choix Angular pour communiquer avec une API-REST (Quentin)<br />
* Traitement de données simple en se basant juste sur le vote des utilisateurs de TMDb sur les films (Edwin, Coralie, Elsa)<br />
* 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)<br />
* 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 [http://nlp.stanford.edu/projects/glove/ GloVe].<br />
<br />
<br />
* Rendez-vous avec Massih-Reza Amini pour éclaircir le sujet, notamment au sujet du pré-traitement du texte. (Tous)<br />
* 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).<br />
* 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).<br />
* Mise en place d'un système de notation fonctionnel qui permet d'enregistrer les données à partir du front (Quentin).<br />
<br />
== Sprint 1 ==<br />
<br />
===Tâches du Sprint1===<br />
* T1. Établissement des vues principales côté client (recherche et annotation de films)<br />
* T2. Mise en place du processus de pré-traitement des données (titre, mots clés, résumé, note, artiste, producteur)<br />
* T3. Mise en place du réseau neuronal (réseau neuronal simple)<br />
* T4. Mise en place de la structure de test du réseau neuronal (former les corpus de données, cross validation, test de précision)<br />
* T5. Mise en place de l'environnement système (Docker)<br />
<br />
=== Semaine 2 : 30/01 - 05/02 ===<br />
<br />
[[File:Sprint1-Semaine2.jpg|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* Préparation du premier sprint :<br />
** Mise au point sur le travail réalisé la semaine passée et sur le travail à réaliser durant le sprint<br />
** Établissement d'une liste de fonctionnalités, avec une estimation de l'importance et du temps de réalisation de chaque tâche<br />
** Sélection des fonctionnalités à réaliser au cours du Sprint, remplissage du Scrumboard<br />
* Mise au point sur l'arborescence du git / architecture du projet<br />
* Installation d'une version GPU pour Keras et Tensor-Flow sur les machines équipées d'un bon GPU<br />
<br />
====Mardi====<br />
<br />
* Réunion avec Didier Donsez : <br />
** Technologies : storm, spark, flint (temps réel) pour Twitter<br />
** Distribution : préparer un déploiement sur GRID5000, contacter Olivier Richard et préparer un container Docker<br />
** Utiliser Github pour héberger le site web<br />
<br />
* T1. -> Vues "recherche de films", "annotation de film" et "consultation des films annotés" (Quentin)<br />
* T2. -> Prétraitement des données "titre", "mots clés", "résumé", "notes" (Edwin, Elsa, Coralie, Julian)<br />
** prétraitement des textes via Doc2Vec (Coralie)<br />
** prétraitement des mots via Glove (Elsa, Edwin, Julian)<br />
** récupération des données (Julian)<br />
** mise en place de l'embedding (Edwin)<br />
** mise en place d'une librairie pour le pré-traitement des données envoyées aux classifieur (Julian)<br />
** Import des modules (Julian)<br />
<br />
====Mercredi====<br />
<br />
* T1. -> Chargement des images de films côté client (Quentin)<br />
* T2. -> Prétraitement des données "titre", "mots clés", "résumé", "notes" + Ajout "genre" (Edwin, Elsa, Coralie, Julian)<br />
** prétraitement des textes via Doc2Vec (Coralie)<br />
** extraction des données JSON via l'API (Elsa)<br />
** prétraitement des genres (Julian)<br />
** prétraitement général (mise en forme de la matrice de données) (Edwin)<br />
** revue de code (Julian)<br />
* T5. -> Recherche d'un moyen de distribuer le classifieur sous Keras - Elephas ? (Coralie)<br />
<br />
====Jeudi====<br />
<br />
* Cours de MPI - travail sur la communication au sein d'un groupe<br />
* T1. -> Pagination et chargement d'images (Quentin)<br />
* T3. -> Création d'une première version du classifieur (Elsa, Edwin)<br />
* T4. -> Validation croisée pour pouvoir tester le classifieur correctement (Edwin & Elsa)<br />
* T5. -> Installation version GPU sur PC (Julian)<br />
* T5. -> Recherche d'un moyen de distribuer le classifieur Keras - Elephas (Coralie)<br />
<br />
====Vendredi====<br />
<br />
* T1. -> Déploiement sur github.io (Quentin)<br />
* T3. -> Insertion de Doc2Vec dans le classifieur (Julian)<br />
* T3. -> Revue du classifieur pour obtenir une meilleure précision (Elsa & Edwin)<br />
* T4. -> 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)<br />
* T4. -> Annotation de films pour constituer la base d'apprentissage/test (Tous)<br />
* T5. -> Auto-formation sur Docker (Coralie, Edwin)<br />
<br />
=== Semaine 3 : 06/02 - 12/02 ===<br />
<br />
[[File:Sprint1-Semaine3.jpg|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* Cours de MPI - gestion de projet<br />
* T1. -> Ajout d'un boite de dialogue permettant de visualiser les infos d'un film (Quentin)<br />
* T2. -> Fix de bugs dans preprocessing (Julian)<br />
* T4. -> Recherche sur la mise en place de tests avec Python (Elsa)<br />
* T5. -> Mise en place de l'image Docker avec Python, Keras et Tensorflow en partant d'un Ubuntu 14 (Edwin)<br />
* T5. -> Mise en place de l'image Docker avec Spark en partant d'un Ubuntu 14 (Coralie)<br />
<br />
====Mardi====<br />
<br />
* Rendez-vous avec Mr. Amini<br />
* T1. -> Amélioration de la boîte de dialogue pour les infos (Quentin)<br />
* T2. -> Preprocessing des acteurs et des realisateurs et ajout des fonction de test associées (Julian)<br />
* T2. -> Test le modèle D2V sur un analyseur de sentiment de tweets, beaucoup plus objectif que les gouts utilisateurs vis à vis des films (Coralie).<br />
* T2. -> Mise en place de modules de test unitaires dans MovieProject/tests/unit et suppression de fichiers inutiles dans MovieProject/tests (Elsa)<br />
* T4. -> 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)<br />
* T4. -> Evaluation du classifieur avec la méthode Doc2Vec (Elsa)<br />
* T5. -> Finalisation de l'image Docker avec Python, Keras et Tensorflow (Edwin)<br />
<br />
====Mercredi====<br />
<br />
* T1. -> Création de statistiques sur les goûts utilisateurs côté client (Quentin)<br />
* T4. -> Début de la mise en place des différents modèles d'apprentissage en vue de leur comparaison : <br />
** Réseau neuronal avec Keras (Elsa)<br />
** Perceptron (Coralie)<br />
** Modification du prétraitement afin de pouvoir récupérer les matrices de chacune des variables caractérisant un film (Julian)<br />
* T5. -> Ajout de Spark à l'image Docker (Edwin)<br />
<br />
====Jeudi====<br />
<br />
* T1. -> Poursuite de la création de statistiques sur les goûts utilisateurs côté client (Quentin)<br />
* T4. -> Poursuite des tests de performance :<br />
** 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)<br />
** Test du réseau neuronal (Elsa)<br />
** Mise en place d'un SVM pour concurrencer les performances des deux autres modèles (Julian)<br />
* T5. -> Test de l'image Docker (Edwin)<br />
<br />
====Vendredi====<br />
<br />
* T1. -> Visualisation des statistiques + explications sur la page d'accueil (Quentin)<br />
* T4. -> Finalisation perceptron + intégration dans evaluation (Coralie)<br />
* T4. -> Finalisation SVM + intégration dans evaluation (Julian)<br />
* T4. -> Mise en place du module evaluation et intégration des modifications de classifieur & preprocessing (Elsa)<br />
* T5. -> Documentation sur Spark (Edwin & Coralie)<br />
<br />
===État du scrumboard en fin du Sprint1===<br />
<br />
[[File:Sprint1-end-Scrumboard.png|1080px|middle]]<br />
<br />
== Sprint 2 ==<br />
<br />
===Tâches du Sprint2===<br />
<br />
*T1.2. Amélioration du front-end (mise en cache, etc.)<br />
*T2.2. Ajout de descripteurs (durée, budget, année de production, compagnie de production, appartenance à une sage) en vue d'améliorer notre modèle d'apprentissage.<br />
*T3.2 Amélioration du réseau neuronal (comparaison avec Perceptron simple, SVM, RN Convolutif)<br />
*T4. Mise en place de la suggestion de films (vue côté front-end et logique côté back-end)<br />
*T5. Distribution de l'apprentissage sur plusieurs machines (Docker - Spark - Mesos - Elephas) & Parallélisation requêtes<br />
*T6 Communication front/back, établissement des routes et mise en place du système d'authentification<br />
*T7. Analyse de sentiment sur les flux Twitter<br />
*T8. Mise en place de la base de données<br />
<br />
=== Semaine 4 : 13/02 - 19/02 ===<br />
<br />
[[File:Sprint2-Semaine4.png|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* Réunion de fin de sprint1 et de début de sprint0 : discussion autour des avancées, difficultés, retards & établissement fonctionnalités à implémenter au cours du sprint2<br />
*T1.2 -> Mise en place d'un cache local côté front pour éviter de faire trop de requêtes à l'API TMDB (Quentin)<br />
*T2.2. -> Revue de la structure du code (Julian)<br />
*T3.2. -> Mise en place d'un réseau neuronal de convolution (Coralie)<br />
*T4. -> Amélioration de la prédiction de film (Elsa)<br />
*T5. -> Mise en place d'un cluster Spark via Mesos (Edwin)<br />
<br />
====Mardi====<br />
<br />
*T1.2 -> Mise en place d'un cache local côté front pour éviter de faire trop de requêtes à l'API TMDB (Quentin)<br />
*T3.2 -> Amélioration du classifieur (Elsa/Quentin)<br />
*T3.2. -> Mise en place d'un réseau neuronal de convolution (Coralie)<br />
*T4. -> Amélioration de la prédiction de film (Elsa)<br />
*T5. -> Mise en place d'un cluster Spark via Mesos (Edwin)<br />
*T5. -> Parallélisation des requêtes à l'API TMDB (Julian)<br />
<br />
====Mercredi====<br />
<br />
*T1.2 -> Finalisation du cache local côté front pour éviter de faire trop de requêtes à l'API TMDB (Quentin)<br />
*T1.2 -> Finalisation des statistiques cinématographique utilisateurs (Quentin)<br />
*T2.2. -> Ajout du descripteurs "budget" avec normalisation (Edwin)<br />
*T3.2 -> Mise en place de la fonction de comparaison des combinaisons de descripteurs de films pour faciliter le travail des DUT (Julian)<br />
*T3.2. -> Mise en place d'un réseau neuronal LSTM (Coralie)<br />
*T4. -> Changement de la méthode de prédiction de film (Elsa)<br />
*T6. -> Communication front-back test (Elsa/Quentin)<br />
* SRS (Edwin)<br />
<br />
====Jeudi====<br />
<br />
* Rendez-vous avec les DUT : aide sur l'installation du projet, clone du projet Github. <br />
* Préparation de la présentation (Elsa & Edwin)<br />
* Préparation démo (Quentin & Elsa)<br />
* Mise à jour Wiki, SRS, Scrumboard (Elsa & Edwin)<br />
* Aide des DUT (Edwin & Julian)<br />
* T3.2 -> Evaluation du modèle et comparaison avec SVM et Perceptron de manière graphique (extraire les données et construire des graphes - csv ou matplotlib) (Sébastien & Marceau)<br />
* T7. -> Prétraitement des Tweet(Coralie)<br />
* T5. -> Avancement sur le distribué (Julian)<br />
* T1.2 -> Page de login du front, fix problème de CSS sur les graphes (Quentin)<br />
* T3.2 -> Amélioration du classifieur, tests en changeant les layers, le batch-size, etc. (Quentin)<br />
<br />
====Vendredi====<br />
* Préparation du travail qu'Edwin pourra réaliser durant la semaine de vacances (Edwin travaillera en décalé avec le reste du groupe)<br />
* Début de la mise en place de la base de données (Edwin)<br />
<br />
=== Semaine 5 : 20/02 - 26/02 (Edwin) ===<br />
(Edwin a travaillé la semaine précédente, en décalé avec le reste du groupe)<br />
====Lundi====<br />
*T8. -> Installation des outils liés à la gestion de la base de données MySQL et début de la conception de l'API de communication avec cette base. (Edwin)<br />
====Mardi====<br />
*T8. -> Finalisation de l'API, début des tests et des corrections de bug. (Edwin)<br />
====Mercredi====<br />
*T8. -> Ajout de nouvelles fonctionnalités SQL à l'API et tests de l'API. Création d'un readme et d'un fichier d'exemple complet pour l'utilisation de l'API de MySQL. (Edwin)<br />
*T8. -> Amélioration de l'image Docker, correction de bugs de paths et de librairies manquantes. (Edwin)<br />
====Jeudi====<br />
*T8. -> Review générale du travail lié à la base de données. (Edwin)<br />
*T8. -> Mise en place de MySQL pour Docker. (Edwin)<br />
*Mise à jour du Scrumboard et du wiki-air. (Edwin)<br />
<br />
====Vendredi====<br />
*T8. -> Amélioration du Docker pour tenter de régler des problèmes de ports liés à MySQL (non terminé). (Edwin) <br />
*T8. -> Tests unitaires de fonctionnement de serveurs apaches. (Edwin)<br />
<br />
=== Semaine 5 : 27/02 - 28/02 ===<br />
<br />
[[File:Sprint2-Semaine5.png|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* T1.2 -> Mise en place de la page de recommendations (Quentin)<br />
* Merge du classifieur sur la branche develop, avec la prédiction (Elsa)<br />
* T8. -> Revue de la BD et sécurisation (Julian) puis merge sur develop<br />
* T7. -> Finalisation de l'analyse de sentiments (Coralie) pour merge sur develop<br />
* T3.2 -> Recherche sur une construction différente des matrices (basée sur la factorisation de matrices, cf Prix Netflix) (Quentin & Elsa)<br />
<br />
====Mardi====<br />
* Harmonisation des données merge sur le git (Sentiment analysis, evaluation du classifieur et prediction) (Elsa)<br />
* T6. -> Recherche et premiers tests pour l'authentification (Quentin pour le front et Julian pour le back)<br />
* T8. & T5. -> Creation d'une instance de BD Amazon RDS dans un VPC (Coralie)<br />
* T1.2 -> Finalisation page de recommendations (Quentin)<br />
* Insertion en BD des films annotés par les users (Julian)<br />
<br />
====Mercredi====<br />
* Réunion avec Massih-Reza Amini pour parler d'un nouveau modèle de machine learning (Cf Quentin & Elsa lundi)<br />
* T4. -> Amélioration de la prédiction (Elsa)<br />
* T5. -> Essais déploiement du back sur une instance Amazon EC2 (Coralie)<br />
* T6. -> Mise en place de l'authentification simple (login) (Quentin & Julian)<br />
<br />
====Jeudi====<br />
* T4. -> Amélioration de la prédiction et module de test pour la prédiction (Elsa)<br />
* T5. -> Essais déploiement du back sur une instance Amazon EC2 (Coralie)<br />
* T1.2 -> Création des vues d'inscription (sign up) et début vue des paramètres (Quentin)<br />
* T6. -> Sécurisation des appels à l'API par Token (Julian)<br />
<br />
====Vendredi====<br />
* Nettoyage de develop + mise en place de nouveaux tests et état des lieux des tests et de la doc à faire (Elsa)<br />
* T5. -> Essais déploiement du back sur une instance Amazon EC2 (Coralie)<br />
* T6. -> Finalisation de l'inscription et test des premiers appels de récupération des films annotés d'un user (Quentin & Julian)<br />
<br />
===État du scrumboard en fin du Sprint2===<br />
<br />
[[File:Sprint2-end-Scrumboard.png|1080px|middle]]<br />
<br />
== Sprint 3 ==<br />
<br />
===Tâches du Sprint3===<br />
<br />
*T1.1 Lier le back et le front, mettre en place les routes (suggestion, annotation) - Authentification faite<br />
*T1.2 Revoir et enrichir les vues du front<br />
*T2. Déployer l'API sur un serveur Amazon (SQL dans Docker, environnement d'exécution avec Docker)<br />
*T3. Enrichir l'ensemble de tests et la documentation<br />
*T4. Mettre en place le nouveau modèle pour avoir une autre base de comparaison<br />
<br />
=== Semaine 6 : 27/02 - 05/03 ===<br />
<br />
[[File:Sprint3-Semaine6.png|1400px|middle]]<br />
<br />
====Lundi====<br />
* Conclusion sur le sprint précédent<br />
* Discussion au sujet du nouveau Sprint<br />
* T2. -> Problème de mise en place de Docker sur les machines Amazon : discussion de l'équipe pour essayer de trouver une solution (Swap)<br />
<br />
====Mardi====<br />
* T1.1 -> Ajout des routes pour gérer les ajouts/suppressions en base de données (Julian)<br />
* T1.1 -> Ajout de la logique côté front pour gérer les ajouts/suppressions en base de données (Quentin)<br />
* T1.1 -> Tests de la communication front - back(api) - base de données (Coralie, Julian, Quentin)<br />
* T2 -> Finalisation du déploiement de l'API sur un serveur Amazon + tests (Coralie)<br />
* T3 -> Tests unitaires sur apiTMDB (Elsa) et sur sql (Edwin)<br />
* T1.2 -> Charte graphique (Elsa)<br />
<br />
====Mercredi====<br />
* T1.1 -> Finalisation de l'authentification côté front (Quentin)<br />
* T4 -> Mise en place du nouveau model (factorisation machine) sur un exemple simple d'apprentissage (Quentin, Elsa)<br />
* T3 -> Tests unitaires sur sql (Edwin)<br />
* T3 -> Tests unitaires sur texts, words et tweets (Coralie)<br />
* T3 -> Tests unitaires sur preprocessing (Julian)<br />
* T1.2 -> Charte graphique (Elsa)<br />
<br />
====Jeudi====<br />
* T1.1 -> Modification de l'API pour sauvegarder et charger les modèles utilisateurs : maj routes entrainement + prédiction (Elsa)<br />
* T1.2 -> Page d'accueil côté front (Quentin)<br />
* T3 -> Tests unitaires sur preprocessing (Julian)<br />
* T3 -> Revue de code (Coralie)<br />
* T4 -> Mise en place du prétraitement pour le nouveau modèle (Edwin)<br />
<br />
====Vendredi====<br />
* T1.1 -> Revue de l'apprentissage et de la prédiction de films côté back (Elsa)<br />
* T1.2 -> Liaison du front avec l'apprentissage et la prédiction côté back (Quentin)<br />
* T1.2 -> Ajout de l'analyse de sentiment twitter côté front lors de la suggestion de films (Quentin)<br />
* T3 -> Revue de code des DUT (Julian)<br />
* T3 -> Documentation du code et du projet git (Coralie)<br />
* T4 -> Mise en place du prétraitement pour le nouveau modèle (Edwin)<br />
* Mise à jour de la documentation (Edwin et Coralie)<br />
<br />
=== Semaine 7 : 06/03 - 12/03 ===<br />
<br />
[[File:Sprint3-Semaine7.png|1400px|middle]]<br />
<br />
====Lundi====<br />
* T1.1 -> Mise en place de la prédiction via le nouveau modèle d'apprentissage (Elsa)<br />
* T1.2 -> Liaison du front avec l'apprentissage et la prédiction côté back (Quentin)<br />
* T1.2 -> Ajout de l'analyse de sentiment twitter côté front lors de la suggestion de films (Quentin) + Mise en jours du back-end en conséquent (Coralie)<br />
* T3 -> Revue de code + Commentaires (Julian)<br />
* Mise à jour de la documentation + Préparation soutenance + Préparation de la démonstration (Edwin et Coralie)<br />
<br />
====Mardi====<br />
* T1.1 -> Mise en place de la prédiction via le nouveau modèle d'apprentissage (Elsa)<br />
* T1.2 -> Liaison du front avec l'apprentissage et la prédiction du nouveau modèle (Quentin)<br />
* T2 -> Détacher le processus faisant tourner l'api du terminal et rediriger ses sorties dans un fichier (Coralie)<br />
* T3 -> Test et incorporation du travail des DUT et production des graphes correspondant (Julian + Edwin)<br />
* Mise à jour de la documentation + Préparation soutenance + Préparation de la démonstration (Coralie)<br />
<br />
====Mercredi====<br />
* Remise à zéro de la base de données pour entrer des informations propres<br />
* Préparation de la soutenance et de la démonstration<br />
* Correction des bugs persistants<br />
<br />
<br />
====Jeudi====<br />
* Soutenance de fin de projet avec Didier Donsez et Massih-Reza Amini</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Fiche_de_suivi_-_Recommandation_intelligente_de_films&diff=34618Fiche de suivi - Recommandation intelligente de films2017-03-14T17:02:23Z<p>Coralie.Rachex: /* Mardi */</p>
<hr />
<div>Voici la Fiche de suivi du projet de fin d'études DeepMovies 2016-2017<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin (Responsable innovation)<br />
* Hattinguais Julian (Responsable qualité)<br />
* Navarro Elsa (Responsable communication, Médiatrice)<br />
* Dunand Quentin (Responsable des deadlines,Responsable du front-end)<br />
<br />
= Avancée du projet =<br />
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.<br />
<br />
== Sprint 0 ==<br />
<br />
===Sprint dédié aux travaux préparatoires du projet===<br />
* Debriefing autour du projet<br />
* Renseignements sur les technologies et principaux défis techniques<br />
* 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) <br />
* Choix technologiques<br />
* Préparation des environnements<br />
* Établissement de la liste des exigences fonctionnelles et non fonctionnelles<br />
<br />
<br />
[[File:Sprint0-Semaine1.jpg|1400px|middle]]<br />
<br />
=== Semaine 1 : 23/01 - 29/01 ===<br />
* Mise en place du wiki (Edwin)<br />
* Recherche sur les technologies et les problèmes techniques (Tous)<br />
* Prise RDV avec Massih-Reza Amini pour renseignements (Coralie)<br />
* Mise en place d'un agenda pour le suivi du projet (Coralie)<br />
* Comment lier l'API au front-end ? AngularJS ou Polymer ? ... (Quentin)<br />
<br />
* Mise en place de l'architecture (Tous) avant de faire un prototype comme prévu.<br />
* Installation, compréhension et manipulation de Keras (Tous)<br />
* Recherche mise en place API-REST Python pour le back-end (Julian)<br />
* Mise en place du front-end - première requêtes - choix Angular pour communiquer avec une API-REST (Quentin)<br />
* Traitement de données simple en se basant juste sur le vote des utilisateurs de TMDb sur les films (Edwin, Coralie, Elsa)<br />
* 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)<br />
* 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 [http://nlp.stanford.edu/projects/glove/ GloVe].<br />
<br />
<br />
* Rendez-vous avec Massih-Reza Amini pour éclaircir le sujet, notamment au sujet du pré-traitement du texte. (Tous)<br />
* 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).<br />
* 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).<br />
* Mise en place d'un système de notation fonctionnel qui permet d'enregistrer les données à partir du front (Quentin).<br />
<br />
== Sprint 1 ==<br />
<br />
===Tâches du Sprint1===<br />
* T1. Établissement des vues principales côté client (recherche et annotation de films)<br />
* T2. Mise en place du processus de pré-traitement des données (titre, mots clés, résumé, note, artiste, producteur)<br />
* T3. Mise en place du réseau neuronal (réseau neuronal simple)<br />
* T4. Mise en place de la structure de test du réseau neuronal (former les corpus de données, cross validation, test de précision)<br />
* T5. Mise en place de l'environnement système (Docker)<br />
<br />
=== Semaine 2 : 30/01 - 05/02 ===<br />
<br />
[[File:Sprint1-Semaine2.jpg|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* Préparation du premier sprint :<br />
** Mise au point sur le travail réalisé la semaine passée et sur le travail à réaliser durant le sprint<br />
** Établissement d'une liste de fonctionnalités, avec une estimation de l'importance et du temps de réalisation de chaque tâche<br />
** Sélection des fonctionnalités à réaliser au cours du Sprint, remplissage du Scrumboard<br />
* Mise au point sur l'arborescence du git / architecture du projet<br />
* Installation d'une version GPU pour Keras et Tensor-Flow sur les machines équipées d'un bon GPU<br />
<br />
====Mardi====<br />
<br />
* Réunion avec Didier Donsez : <br />
** Technologies : storm, spark, flint (temps réel) pour Twitter<br />
** Distribution : préparer un déploiement sur GRID5000, contacter Olivier Richard et préparer un container Docker<br />
** Utiliser Github pour héberger le site web<br />
<br />
* T1. -> Vues "recherche de films", "annotation de film" et "consultation des films annotés" (Quentin)<br />
* T2. -> Prétraitement des données "titre", "mots clés", "résumé", "notes" (Edwin, Elsa, Coralie, Julian)<br />
** prétraitement des textes via Doc2Vec (Coralie)<br />
** prétraitement des mots via Glove (Elsa, Edwin, Julian)<br />
** récupération des données (Julian)<br />
** mise en place de l'embedding (Edwin)<br />
** mise en place d'une librairie pour le pré-traitement des données envoyées aux classifieur (Julian)<br />
** Import des modules (Julian)<br />
<br />
====Mercredi====<br />
<br />
* T1. -> Chargement des images de films côté client (Quentin)<br />
* T2. -> Prétraitement des données "titre", "mots clés", "résumé", "notes" + Ajout "genre" (Edwin, Elsa, Coralie, Julian)<br />
** prétraitement des textes via Doc2Vec (Coralie)<br />
** extraction des données JSON via l'API (Elsa)<br />
** prétraitement des genres (Julian)<br />
** prétraitement général (mise en forme de la matrice de données) (Edwin)<br />
** revue de code (Julian)<br />
* T5. -> Recherche d'un moyen de distribuer le classifieur sous Keras - Elephas ? (Coralie)<br />
<br />
====Jeudi====<br />
<br />
* Cours de MPI - travail sur la communication au sein d'un groupe<br />
* T1. -> Pagination et chargement d'images (Quentin)<br />
* T3. -> Création d'une première version du classifieur (Elsa, Edwin)<br />
* T4. -> Validation croisée pour pouvoir tester le classifieur correctement (Edwin & Elsa)<br />
* T5. -> Installation version GPU sur PC (Julian)<br />
* T5. -> Recherche d'un moyen de distribuer le classifieur Keras - Elephas (Coralie)<br />
<br />
====Vendredi====<br />
<br />
* T1. -> Déploiement sur github.io (Quentin)<br />
* T3. -> Insertion de Doc2Vec dans le classifieur (Julian)<br />
* T3. -> Revue du classifieur pour obtenir une meilleure précision (Elsa & Edwin)<br />
* T4. -> 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)<br />
* T4. -> Annotation de films pour constituer la base d'apprentissage/test (Tous)<br />
* T5. -> Auto-formation sur Docker (Coralie, Edwin)<br />
<br />
=== Semaine 3 : 06/02 - 12/02 ===<br />
<br />
[[File:Sprint1-Semaine3.jpg|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* Cours de MPI - gestion de projet<br />
* T1. -> Ajout d'un boite de dialogue permettant de visualiser les infos d'un film (Quentin)<br />
* T2. -> Fix de bugs dans preprocessing (Julian)<br />
* T4. -> Recherche sur la mise en place de tests avec Python (Elsa)<br />
* T5. -> Mise en place de l'image Docker avec Python, Keras et Tensorflow en partant d'un Ubuntu 14 (Edwin)<br />
* T5. -> Mise en place de l'image Docker avec Spark en partant d'un Ubuntu 14 (Coralie)<br />
<br />
====Mardi====<br />
<br />
* Rendez-vous avec Mr. Amini<br />
* T1. -> Amélioration de la boîte de dialogue pour les infos (Quentin)<br />
* T2. -> Preprocessing des acteurs et des realisateurs et ajout des fonction de test associées (Julian)<br />
* T2. -> Test le modèle D2V sur un analyseur de sentiment de tweets, beaucoup plus objectif que les gouts utilisateurs vis à vis des films (Coralie).<br />
* T2. -> Mise en place de modules de test unitaires dans MovieProject/tests/unit et suppression de fichiers inutiles dans MovieProject/tests (Elsa)<br />
* T4. -> 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)<br />
* T4. -> Evaluation du classifieur avec la méthode Doc2Vec (Elsa)<br />
* T5. -> Finalisation de l'image Docker avec Python, Keras et Tensorflow (Edwin)<br />
<br />
====Mercredi====<br />
<br />
* T1. -> Création de statistiques sur les goûts utilisateurs côté client (Quentin)<br />
* T4. -> Début de la mise en place des différents modèles d'apprentissage en vue de leur comparaison : <br />
** Réseau neuronal avec Keras (Elsa)<br />
** Perceptron (Coralie)<br />
** Modification du prétraitement afin de pouvoir récupérer les matrices de chacune des variables caractérisant un film (Julian)<br />
* T5. -> Ajout de Spark à l'image Docker (Edwin)<br />
<br />
====Jeudi====<br />
<br />
* T1. -> Poursuite de la création de statistiques sur les goûts utilisateurs côté client (Quentin)<br />
* T4. -> Poursuite des tests de performance :<br />
** 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)<br />
** Test du réseau neuronal (Elsa)<br />
** Mise en place d'un SVM pour concurrencer les performances des deux autres modèles (Julian)<br />
* T5. -> Test de l'image Docker (Edwin)<br />
<br />
====Vendredi====<br />
<br />
* T1. -> Visualisation des statistiques + explications sur la page d'accueil (Quentin)<br />
* T4. -> Finalisation perceptron + intégration dans evaluation (Coralie)<br />
* T4. -> Finalisation SVM + intégration dans evaluation (Julian)<br />
* T4. -> Mise en place du module evaluation et intégration des modifications de classifieur & preprocessing (Elsa)<br />
* T5. -> Documentation sur Spark (Edwin & Coralie)<br />
<br />
===État du scrumboard en fin du Sprint1===<br />
<br />
[[File:Sprint1-end-Scrumboard.png|1080px|middle]]<br />
<br />
== Sprint 2 ==<br />
<br />
===Tâches du Sprint2===<br />
<br />
*T1.2. Amélioration du front-end (mise en cache, etc.)<br />
*T2.2. Ajout de descripteurs (durée, budget, année de production, compagnie de production, appartenance à une sage) en vue d'améliorer notre modèle d'apprentissage.<br />
*T3.2 Amélioration du réseau neuronal (comparaison avec Perceptron simple, SVM, RN Convolutif)<br />
*T4. Mise en place de la suggestion de films (vue côté front-end et logique côté back-end)<br />
*T5. Distribution de l'apprentissage sur plusieurs machines (Docker - Spark - Mesos - Elephas) & Parallélisation requêtes<br />
*T6 Communication front/back, établissement des routes et mise en place du système d'authentification<br />
*T7. Analyse de sentiment sur les flux Twitter<br />
*T8. Mise en place de la base de données<br />
<br />
=== Semaine 4 : 13/02 - 19/02 ===<br />
<br />
[[File:Sprint2-Semaine4.png|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* Réunion de fin de sprint1 et de début de sprint0 : discussion autour des avancées, difficultés, retards & établissement fonctionnalités à implémenter au cours du sprint2<br />
*T1.2 -> Mise en place d'un cache local côté front pour éviter de faire trop de requêtes à l'API TMDB (Quentin)<br />
*T2.2. -> Revue de la structure du code (Julian)<br />
*T3.2. -> Mise en place d'un réseau neuronal de convolution (Coralie)<br />
*T4. -> Amélioration de la prédiction de film (Elsa)<br />
*T5. -> Mise en place d'un cluster Spark via Mesos (Edwin)<br />
<br />
====Mardi====<br />
<br />
*T1.2 -> Mise en place d'un cache local côté front pour éviter de faire trop de requêtes à l'API TMDB (Quentin)<br />
*T3.2 -> Amélioration du classifieur (Elsa/Quentin)<br />
*T3.2. -> Mise en place d'un réseau neuronal de convolution (Coralie)<br />
*T4. -> Amélioration de la prédiction de film (Elsa)<br />
*T5. -> Mise en place d'un cluster Spark via Mesos (Edwin)<br />
*T5. -> Parallélisation des requêtes à l'API TMDB (Julian)<br />
<br />
====Mercredi====<br />
<br />
*T1.2 -> Finalisation du cache local côté front pour éviter de faire trop de requêtes à l'API TMDB (Quentin)<br />
*T1.2 -> Finalisation des statistiques cinématographique utilisateurs (Quentin)<br />
*T2.2. -> Ajout du descripteurs "budget" avec normalisation (Edwin)<br />
*T3.2 -> Mise en place de la fonction de comparaison des combinaisons de descripteurs de films pour faciliter le travail des DUT (Julian)<br />
*T3.2. -> Mise en place d'un réseau neuronal LSTM (Coralie)<br />
*T4. -> Changement de la méthode de prédiction de film (Elsa)<br />
*T6. -> Communication front-back test (Elsa/Quentin)<br />
* SRS (Edwin)<br />
<br />
====Jeudi====<br />
<br />
* Rendez-vous avec les DUT : aide sur l'installation du projet, clone du projet Github. <br />
* Préparation de la présentation (Elsa & Edwin)<br />
* Préparation démo (Quentin & Elsa)<br />
* Mise à jour Wiki, SRS, Scrumboard (Elsa & Edwin)<br />
* Aide des DUT (Edwin & Julian)<br />
* T3.2 -> Evaluation du modèle et comparaison avec SVM et Perceptron de manière graphique (extraire les données et construire des graphes - csv ou matplotlib) (Sébastien & Marceau)<br />
* T7. -> Prétraitement des Tweet(Coralie)<br />
* T5. -> Avancement sur le distribué (Julian)<br />
* T1.2 -> Page de login du front, fix problème de CSS sur les graphes (Quentin)<br />
* T3.2 -> Amélioration du classifieur, tests en changeant les layers, le batch-size, etc. (Quentin)<br />
<br />
====Vendredi====<br />
* Préparation du travail qu'Edwin pourra réaliser durant la semaine de vacances (Edwin travaillera en décalé avec le reste du groupe)<br />
* Début de la mise en place de la base de données (Edwin)<br />
<br />
=== Semaine 5 : 20/02 - 26/02 (Edwin) ===<br />
(Edwin a travaillé la semaine précédente, en décalé avec le reste du groupe)<br />
====Lundi====<br />
*T8. -> Installation des outils liés à la gestion de la base de données MySQL et début de la conception de l'API de communication avec cette base. (Edwin)<br />
====Mardi====<br />
*T8. -> Finalisation de l'API, début des tests et des corrections de bug. (Edwin)<br />
====Mercredi====<br />
*T8. -> Ajout de nouvelles fonctionnalités SQL à l'API et tests de l'API. Création d'un readme et d'un fichier d'exemple complet pour l'utilisation de l'API de MySQL. (Edwin)<br />
*T8. -> Amélioration de l'image Docker, correction de bugs de paths et de librairies manquantes. (Edwin)<br />
====Jeudi====<br />
*T8. -> Review générale du travail lié à la base de données. (Edwin)<br />
*T8. -> Mise en place de MySQL pour Docker. (Edwin)<br />
*Mise à jour du Scrumboard et du wiki-air. (Edwin)<br />
<br />
====Vendredi====<br />
*T8. -> Amélioration du Docker pour tenter de régler des problèmes de ports liés à MySQL (non terminé). (Edwin) <br />
*T8. -> Tests unitaires de fonctionnement de serveurs apaches. (Edwin)<br />
<br />
=== Semaine 5 : 27/02 - 28/02 ===<br />
<br />
[[File:Sprint2-Semaine5.png|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* T1.2 -> Mise en place de la page de recommendations (Quentin)<br />
* Merge du classifieur sur la branche develop, avec la prédiction (Elsa)<br />
* T8. -> Revue de la BD et sécurisation (Julian) puis merge sur develop<br />
* T7. -> Finalisation de l'analyse de sentiments (Coralie) pour merge sur develop<br />
* T3.2 -> Recherche sur une construction différente des matrices (basée sur la factorisation de matrices, cf Prix Netflix) (Quentin & Elsa)<br />
<br />
====Mardi====<br />
* Harmonisation des données merge sur le git (Sentiment analysis, evaluation du classifieur et prediction) (Elsa)<br />
* T6. -> Recherche et premiers tests pour l'authentification (Quentin pour le front et Julian pour le back)<br />
* T8. & T5. -> Creation d'une instance de BD Amazon RDS dans un VPC (Coralie)<br />
* T1.2 -> Finalisation page de recommendations (Quentin)<br />
* Insertion en BD des films annotés par les users (Julian)<br />
<br />
====Mercredi====<br />
* Réunion avec Massih-Reza Amini pour parler d'un nouveau modèle de machine learning (Cf Quentin & Elsa lundi)<br />
* T4. -> Amélioration de la prédiction (Elsa)<br />
* T5. -> Essais déploiement du back sur une instance Amazon EC2 (Coralie)<br />
* T6. -> Mise en place de l'authentification simple (login) (Quentin & Julian)<br />
<br />
====Jeudi====<br />
* T4. -> Amélioration de la prédiction et module de test pour la prédiction (Elsa)<br />
* T5. -> Essais déploiement du back sur une instance Amazon EC2 (Coralie)<br />
* T1.2 -> Création des vues d'inscription (sign up) et début vue des paramètres (Quentin)<br />
* T6. -> Sécurisation des appels à l'API par Token (Julian)<br />
<br />
====Vendredi====<br />
* Nettoyage de develop + mise en place de nouveaux tests et état des lieux des tests et de la doc à faire (Elsa)<br />
* T5. -> Essais déploiement du back sur une instance Amazon EC2 (Coralie)<br />
* T6. -> Finalisation de l'inscription et test des premiers appels de récupération des films annotés d'un user (Quentin & Julian)<br />
<br />
===État du scrumboard en fin du Sprint2===<br />
<br />
[[File:Sprint2-end-Scrumboard.png|1080px|middle]]<br />
<br />
== Sprint 3 ==<br />
<br />
===Tâches du Sprint3===<br />
<br />
*T1.1 Lier le back et le front, mettre en place les routes (suggestion, annotation) - Authentification faite<br />
*T1.2 Revoir et enrichir les vues du front<br />
*T2. Déployer l'API sur un serveur Amazon (SQL dans Docker, environnement d'exécution avec Docker)<br />
*T3. Enrichir l'ensemble de tests et la documentation<br />
*T4. Mettre en place le nouveau modèle pour avoir une autre base de comparaison<br />
<br />
=== Semaine 6 : 27/02 - 05/03 ===<br />
<br />
[[File:Sprint3-Semaine6.png|1400px|middle]]<br />
<br />
====Lundi====<br />
* Conclusion sur le sprint précédent<br />
* Discussion au sujet du nouveau Sprint<br />
* T2. -> Problème de mise en place de Docker sur les machines Amazon : discussion de l'équipe pour essayer de trouver une solution (Swap)<br />
<br />
====Mardi====<br />
* T1.1 -> Ajout des routes pour gérer les ajouts/suppressions en base de données (Julian)<br />
* T1.1 -> Ajout de la logique côté front pour gérer les ajouts/suppressions en base de données (Quentin)<br />
* T1.1 -> Tests de la communication front - back(api) - base de données (Coralie, Julian, Quentin)<br />
* T2 -> Finalisation du déploiement de l'API sur un serveur Amazon + tests (Coralie)<br />
* T3 -> Tests unitaires sur apiTMDB (Elsa) et sur sql (Edwin)<br />
* T1.2 -> Charte graphique (Elsa)<br />
<br />
====Mercredi====<br />
* T1.1 -> Finalisation de l'authentification côté front (Quentin)<br />
* T4 -> Mise en place du nouveau model (factorisation machine) sur un exemple simple d'apprentissage (Quentin, Elsa)<br />
* T3 -> Tests unitaires sur sql (Edwin)<br />
* T3 -> Tests unitaires sur texts, words et tweets (Coralie)<br />
* T3 -> Tests unitaires sur preprocessing (Julian)<br />
* T1.2 -> Charte graphique (Elsa)<br />
<br />
====Jeudi====<br />
* T1.1 -> Modification de l'API pour sauvegarder et charger les modèles utilisateurs : maj routes entrainement + prédiction (Elsa)<br />
* T1.2 -> Page d'accueil côté front (Quentin)<br />
* T3 -> Tests unitaires sur preprocessing (Julian)<br />
* T3 -> Revue de code (Coralie)<br />
* T4 -> Mise en place du prétraitement pour le nouveau modèle (Edwin)<br />
<br />
====Vendredi====<br />
* T1.1 -> Revue de l'apprentissage et de la prédiction de films côté back (Elsa)<br />
* T1.2 -> Liaison du front avec l'apprentissage et la prédiction côté back (Quentin)<br />
* T1.2 -> Ajout de l'analyse de sentiment twitter côté front lors de la suggestion de films (Quentin)<br />
* T3 -> Revue de code des DUT (Julian)<br />
* T3 -> Documentation du code et du projet git (Coralie)<br />
* T4 -> Mise en place du prétraitement pour le nouveau modèle (Edwin)<br />
* Mise à jour de la documentation (Edwin et Coralie)<br />
<br />
=== Semaine 7 : 06/03 - 12/03 ===<br />
<br />
[[File:Sprint3-Semaine7.png|1400px|middle]]<br />
<br />
====Lundi====<br />
* T1.1 -> Mise en place de la prédiction via le nouveau modèle d'apprentissage (Elsa)<br />
* T1.2 -> Liaison du front avec l'apprentissage et la prédiction côté back (Quentin)<br />
* T1.2 -> Ajout de l'analyse de sentiment twitter côté front lors de la suggestion de films (Quentin) + Mise en jours du back-end en conséquent (Coralie)<br />
* T3 -> Revue de code + Commentaires (Julian)<br />
* Mise à jour de la documentation + Préparation soutenance + Préparation de la démonstration (Edwin et Coralie)<br />
<br />
====Mardi====<br />
* T1.1 -> Mise en place de la prédiction via le nouveau modèle d'apprentissage (Elsa)<br />
* T1.2 -> Liaison du front avec l'apprentissage et la prédiction du nouveau modèle (Quentin)<br />
* T2 -> Détacher le processus faisant tourner l'api du terminal et rediriger ses sorties dans un fichier (Coralie)<br />
* T3 -> Test et incorporation du travail des DUT et production des graphes correspondant (Julian + Edwin)<br />
* Mise à jour de la documentation + Préparation soutenance + Préparation de la démonstration (Coralie)<br />
<br />
====Mercredi====<br />
<br />
====Jeudi====<br />
* Soutenance de fin de projet avec Didier Donsez et Massih-Reza Amini</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Fiche_de_suivi_-_Recommandation_intelligente_de_films&diff=34616Fiche de suivi - Recommandation intelligente de films2017-03-14T17:00:15Z<p>Coralie.Rachex: /* Mardi */</p>
<hr />
<div>Voici la Fiche de suivi du projet de fin d'études DeepMovies 2016-2017<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin (Responsable innovation)<br />
* Hattinguais Julian (Responsable qualité)<br />
* Navarro Elsa (Responsable communication, Médiatrice)<br />
* Dunand Quentin (Responsable des deadlines,Responsable du front-end)<br />
<br />
= Avancée du projet =<br />
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.<br />
<br />
== Sprint 0 ==<br />
<br />
===Sprint dédié aux travaux préparatoires du projet===<br />
* Debriefing autour du projet<br />
* Renseignements sur les technologies et principaux défis techniques<br />
* 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) <br />
* Choix technologiques<br />
* Préparation des environnements<br />
* Établissement de la liste des exigences fonctionnelles et non fonctionnelles<br />
<br />
<br />
[[File:Sprint0-Semaine1.jpg|1400px|middle]]<br />
<br />
=== Semaine 1 : 23/01 - 29/01 ===<br />
* Mise en place du wiki (Edwin)<br />
* Recherche sur les technologies et les problèmes techniques (Tous)<br />
* Prise RDV avec Massih-Reza Amini pour renseignements (Coralie)<br />
* Mise en place d'un agenda pour le suivi du projet (Coralie)<br />
* Comment lier l'API au front-end ? AngularJS ou Polymer ? ... (Quentin)<br />
<br />
* Mise en place de l'architecture (Tous) avant de faire un prototype comme prévu.<br />
* Installation, compréhension et manipulation de Keras (Tous)<br />
* Recherche mise en place API-REST Python pour le back-end (Julian)<br />
* Mise en place du front-end - première requêtes - choix Angular pour communiquer avec une API-REST (Quentin)<br />
* Traitement de données simple en se basant juste sur le vote des utilisateurs de TMDb sur les films (Edwin, Coralie, Elsa)<br />
* 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)<br />
* 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 [http://nlp.stanford.edu/projects/glove/ GloVe].<br />
<br />
<br />
* Rendez-vous avec Massih-Reza Amini pour éclaircir le sujet, notamment au sujet du pré-traitement du texte. (Tous)<br />
* 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).<br />
* 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).<br />
* Mise en place d'un système de notation fonctionnel qui permet d'enregistrer les données à partir du front (Quentin).<br />
<br />
== Sprint 1 ==<br />
<br />
===Tâches du Sprint1===<br />
* T1. Établissement des vues principales côté client (recherche et annotation de films)<br />
* T2. Mise en place du processus de pré-traitement des données (titre, mots clés, résumé, note, artiste, producteur)<br />
* T3. Mise en place du réseau neuronal (réseau neuronal simple)<br />
* T4. Mise en place de la structure de test du réseau neuronal (former les corpus de données, cross validation, test de précision)<br />
* T5. Mise en place de l'environnement système (Docker)<br />
<br />
=== Semaine 2 : 30/01 - 05/02 ===<br />
<br />
[[File:Sprint1-Semaine2.jpg|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* Préparation du premier sprint :<br />
** Mise au point sur le travail réalisé la semaine passée et sur le travail à réaliser durant le sprint<br />
** Établissement d'une liste de fonctionnalités, avec une estimation de l'importance et du temps de réalisation de chaque tâche<br />
** Sélection des fonctionnalités à réaliser au cours du Sprint, remplissage du Scrumboard<br />
* Mise au point sur l'arborescence du git / architecture du projet<br />
* Installation d'une version GPU pour Keras et Tensor-Flow sur les machines équipées d'un bon GPU<br />
<br />
====Mardi====<br />
<br />
* Réunion avec Didier Donsez : <br />
** Technologies : storm, spark, flint (temps réel) pour Twitter<br />
** Distribution : préparer un déploiement sur GRID5000, contacter Olivier Richard et préparer un container Docker<br />
** Utiliser Github pour héberger le site web<br />
<br />
* T1. -> Vues "recherche de films", "annotation de film" et "consultation des films annotés" (Quentin)<br />
* T2. -> Prétraitement des données "titre", "mots clés", "résumé", "notes" (Edwin, Elsa, Coralie, Julian)<br />
** prétraitement des textes via Doc2Vec (Coralie)<br />
** prétraitement des mots via Glove (Elsa, Edwin, Julian)<br />
** récupération des données (Julian)<br />
** mise en place de l'embedding (Edwin)<br />
** mise en place d'une librairie pour le pré-traitement des données envoyées aux classifieur (Julian)<br />
** Import des modules (Julian)<br />
<br />
====Mercredi====<br />
<br />
* T1. -> Chargement des images de films côté client (Quentin)<br />
* T2. -> Prétraitement des données "titre", "mots clés", "résumé", "notes" + Ajout "genre" (Edwin, Elsa, Coralie, Julian)<br />
** prétraitement des textes via Doc2Vec (Coralie)<br />
** extraction des données JSON via l'API (Elsa)<br />
** prétraitement des genres (Julian)<br />
** prétraitement général (mise en forme de la matrice de données) (Edwin)<br />
** revue de code (Julian)<br />
* T5. -> Recherche d'un moyen de distribuer le classifieur sous Keras - Elephas ? (Coralie)<br />
<br />
====Jeudi====<br />
<br />
* Cours de MPI - travail sur la communication au sein d'un groupe<br />
* T1. -> Pagination et chargement d'images (Quentin)<br />
* T3. -> Création d'une première version du classifieur (Elsa, Edwin)<br />
* T4. -> Validation croisée pour pouvoir tester le classifieur correctement (Edwin & Elsa)<br />
* T5. -> Installation version GPU sur PC (Julian)<br />
* T5. -> Recherche d'un moyen de distribuer le classifieur Keras - Elephas (Coralie)<br />
<br />
====Vendredi====<br />
<br />
* T1. -> Déploiement sur github.io (Quentin)<br />
* T3. -> Insertion de Doc2Vec dans le classifieur (Julian)<br />
* T3. -> Revue du classifieur pour obtenir une meilleure précision (Elsa & Edwin)<br />
* T4. -> 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)<br />
* T4. -> Annotation de films pour constituer la base d'apprentissage/test (Tous)<br />
* T5. -> Auto-formation sur Docker (Coralie, Edwin)<br />
<br />
=== Semaine 3 : 06/02 - 12/02 ===<br />
<br />
[[File:Sprint1-Semaine3.jpg|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* Cours de MPI - gestion de projet<br />
* T1. -> Ajout d'un boite de dialogue permettant de visualiser les infos d'un film (Quentin)<br />
* T2. -> Fix de bugs dans preprocessing (Julian)<br />
* T4. -> Recherche sur la mise en place de tests avec Python (Elsa)<br />
* T5. -> Mise en place de l'image Docker avec Python, Keras et Tensorflow en partant d'un Ubuntu 14 (Edwin)<br />
* T5. -> Mise en place de l'image Docker avec Spark en partant d'un Ubuntu 14 (Coralie)<br />
<br />
====Mardi====<br />
<br />
* Rendez-vous avec Mr. Amini<br />
* T1. -> Amélioration de la boîte de dialogue pour les infos (Quentin)<br />
* T2. -> Preprocessing des acteurs et des realisateurs et ajout des fonction de test associées (Julian)<br />
* T2. -> Test le modèle D2V sur un analyseur de sentiment de tweets, beaucoup plus objectif que les gouts utilisateurs vis à vis des films (Coralie).<br />
* T2. -> Mise en place de modules de test unitaires dans MovieProject/tests/unit et suppression de fichiers inutiles dans MovieProject/tests (Elsa)<br />
* T4. -> 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)<br />
* T4. -> Evaluation du classifieur avec la méthode Doc2Vec (Elsa)<br />
* T5. -> Finalisation de l'image Docker avec Python, Keras et Tensorflow (Edwin)<br />
<br />
====Mercredi====<br />
<br />
* T1. -> Création de statistiques sur les goûts utilisateurs côté client (Quentin)<br />
* T4. -> Début de la mise en place des différents modèles d'apprentissage en vue de leur comparaison : <br />
** Réseau neuronal avec Keras (Elsa)<br />
** Perceptron (Coralie)<br />
** Modification du prétraitement afin de pouvoir récupérer les matrices de chacune des variables caractérisant un film (Julian)<br />
* T5. -> Ajout de Spark à l'image Docker (Edwin)<br />
<br />
====Jeudi====<br />
<br />
* T1. -> Poursuite de la création de statistiques sur les goûts utilisateurs côté client (Quentin)<br />
* T4. -> Poursuite des tests de performance :<br />
** 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)<br />
** Test du réseau neuronal (Elsa)<br />
** Mise en place d'un SVM pour concurrencer les performances des deux autres modèles (Julian)<br />
* T5. -> Test de l'image Docker (Edwin)<br />
<br />
====Vendredi====<br />
<br />
* T1. -> Visualisation des statistiques + explications sur la page d'accueil (Quentin)<br />
* T4. -> Finalisation perceptron + intégration dans evaluation (Coralie)<br />
* T4. -> Finalisation SVM + intégration dans evaluation (Julian)<br />
* T4. -> Mise en place du module evaluation et intégration des modifications de classifieur & preprocessing (Elsa)<br />
* T5. -> Documentation sur Spark (Edwin & Coralie)<br />
<br />
===État du scrumboard en fin du Sprint1===<br />
<br />
[[File:Sprint1-end-Scrumboard.png|1080px|middle]]<br />
<br />
== Sprint 2 ==<br />
<br />
===Tâches du Sprint2===<br />
<br />
*T1.2. Amélioration du front-end (mise en cache, etc.)<br />
*T2.2. Ajout de descripteurs (durée, budget, année de production, compagnie de production, appartenance à une sage) en vue d'améliorer notre modèle d'apprentissage.<br />
*T3.2 Amélioration du réseau neuronal (comparaison avec Perceptron simple, SVM, RN Convolutif)<br />
*T4. Mise en place de la suggestion de films (vue côté front-end et logique côté back-end)<br />
*T5. Distribution de l'apprentissage sur plusieurs machines (Docker - Spark - Mesos - Elephas) & Parallélisation requêtes<br />
*T6 Communication front/back, établissement des routes et mise en place du système d'authentification<br />
*T7. Analyse de sentiment sur les flux Twitter<br />
*T8. Mise en place de la base de données<br />
<br />
=== Semaine 4 : 13/02 - 19/02 ===<br />
<br />
[[File:Sprint2-Semaine4.png|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* Réunion de fin de sprint1 et de début de sprint0 : discussion autour des avancées, difficultés, retards & établissement fonctionnalités à implémenter au cours du sprint2<br />
*T1.2 -> Mise en place d'un cache local côté front pour éviter de faire trop de requêtes à l'API TMDB (Quentin)<br />
*T2.2. -> Revue de la structure du code (Julian)<br />
*T3.2. -> Mise en place d'un réseau neuronal de convolution (Coralie)<br />
*T4. -> Amélioration de la prédiction de film (Elsa)<br />
*T5. -> Mise en place d'un cluster Spark via Mesos (Edwin)<br />
<br />
====Mardi====<br />
<br />
*T1.2 -> Mise en place d'un cache local côté front pour éviter de faire trop de requêtes à l'API TMDB (Quentin)<br />
*T3.2 -> Amélioration du classifieur (Elsa/Quentin)<br />
*T3.2. -> Mise en place d'un réseau neuronal de convolution (Coralie)<br />
*T4. -> Amélioration de la prédiction de film (Elsa)<br />
*T5. -> Mise en place d'un cluster Spark via Mesos (Edwin)<br />
*T5. -> Parallélisation des requêtes à l'API TMDB (Julian)<br />
<br />
====Mercredi====<br />
<br />
*T1.2 -> Finalisation du cache local côté front pour éviter de faire trop de requêtes à l'API TMDB (Quentin)<br />
*T1.2 -> Finalisation des statistiques cinématographique utilisateurs (Quentin)<br />
*T2.2. -> Ajout du descripteurs "budget" avec normalisation (Edwin)<br />
*T3.2 -> Mise en place de la fonction de comparaison des combinaisons de descripteurs de films pour faciliter le travail des DUT (Julian)<br />
*T3.2. -> Mise en place d'un réseau neuronal LSTM (Coralie)<br />
*T4. -> Changement de la méthode de prédiction de film (Elsa)<br />
*T6. -> Communication front-back test (Elsa/Quentin)<br />
* SRS (Edwin)<br />
<br />
====Jeudi====<br />
<br />
* Rendez-vous avec les DUT : aide sur l'installation du projet, clone du projet Github. <br />
* Préparation de la présentation (Elsa & Edwin)<br />
* Préparation démo (Quentin & Elsa)<br />
* Mise à jour Wiki, SRS, Scrumboard (Elsa & Edwin)<br />
* Aide des DUT (Edwin & Julian)<br />
* T3.2 -> Evaluation du modèle et comparaison avec SVM et Perceptron de manière graphique (extraire les données et construire des graphes - csv ou matplotlib) (Sébastien & Marceau)<br />
* T7. -> Prétraitement des Tweet(Coralie)<br />
* T5. -> Avancement sur le distribué (Julian)<br />
* T1.2 -> Page de login du front, fix problème de CSS sur les graphes (Quentin)<br />
* T3.2 -> Amélioration du classifieur, tests en changeant les layers, le batch-size, etc. (Quentin)<br />
<br />
====Vendredi====<br />
* Préparation du travail qu'Edwin pourra réaliser durant la semaine de vacances (Edwin travaillera en décalé avec le reste du groupe)<br />
* Début de la mise en place de la base de données (Edwin)<br />
<br />
=== Semaine 5 : 20/02 - 26/02 (Edwin) ===<br />
(Edwin a travaillé la semaine précédente, en décalé avec le reste du groupe)<br />
====Lundi====<br />
*T8. -> Installation des outils liés à la gestion de la base de données MySQL et début de la conception de l'API de communication avec cette base. (Edwin)<br />
====Mardi====<br />
*T8. -> Finalisation de l'API, début des tests et des corrections de bug. (Edwin)<br />
====Mercredi====<br />
*T8. -> Ajout de nouvelles fonctionnalités SQL à l'API et tests de l'API. Création d'un readme et d'un fichier d'exemple complet pour l'utilisation de l'API de MySQL. (Edwin)<br />
*T8. -> Amélioration de l'image Docker, correction de bugs de paths et de librairies manquantes. (Edwin)<br />
====Jeudi====<br />
*T8. -> Review générale du travail lié à la base de données. (Edwin)<br />
*T8. -> Mise en place de MySQL pour Docker. (Edwin)<br />
*Mise à jour du Scrumboard et du wiki-air. (Edwin)<br />
<br />
====Vendredi====<br />
*T8. -> Amélioration du Docker pour tenter de régler des problèmes de ports liés à MySQL (non terminé). (Edwin) <br />
*T8. -> Tests unitaires de fonctionnement de serveurs apaches. (Edwin)<br />
<br />
=== Semaine 5 : 27/02 - 28/02 ===<br />
<br />
[[File:Sprint2-Semaine5.png|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* T1.2 -> Mise en place de la page de recommendations (Quentin)<br />
* Merge du classifieur sur la branche develop, avec la prédiction (Elsa)<br />
* T8. -> Revue de la BD et sécurisation (Julian) puis merge sur develop<br />
* T7. -> Finalisation de l'analyse de sentiments (Coralie) pour merge sur develop<br />
* T3.2 -> Recherche sur une construction différente des matrices (basée sur la factorisation de matrices, cf Prix Netflix) (Quentin & Elsa)<br />
<br />
====Mardi====<br />
* Harmonisation des données merge sur le git (Sentiment analysis, evaluation du classifieur et prediction) (Elsa)<br />
* T6. -> Recherche et premiers tests pour l'authentification (Quentin pour le front et Julian pour le back)<br />
* T8. & T5. -> Creation d'une instance de BD Amazon RDS dans un VPC (Coralie)<br />
* T1.2 -> Finalisation page de recommendations (Quentin)<br />
* Insertion en BD des films annotés par les users (Julian)<br />
<br />
====Mercredi====<br />
* Réunion avec Massih-Reza Amini pour parler d'un nouveau modèle de machine learning (Cf Quentin & Elsa lundi)<br />
* T4. -> Amélioration de la prédiction (Elsa)<br />
* T5. -> Essais déploiement du back sur une instance Amazon EC2 (Coralie)<br />
* T6. -> Mise en place de l'authentification simple (login) (Quentin & Julian)<br />
<br />
====Jeudi====<br />
* T4. -> Amélioration de la prédiction et module de test pour la prédiction (Elsa)<br />
* T5. -> Essais déploiement du back sur une instance Amazon EC2 (Coralie)<br />
* T1.2 -> Création des vues d'inscription (sign up) et début vue des paramètres (Quentin)<br />
* T6. -> Sécurisation des appels à l'API par Token (Julian)<br />
<br />
====Vendredi====<br />
* Nettoyage de develop + mise en place de nouveaux tests et état des lieux des tests et de la doc à faire (Elsa)<br />
* T5. -> Essais déploiement du back sur une instance Amazon EC2 (Coralie)<br />
* T6. -> Finalisation de l'inscription et test des premiers appels de récupération des films annotés d'un user (Quentin & Julian)<br />
<br />
===État du scrumboard en fin du Sprint2===<br />
<br />
[[File:Sprint2-end-Scrumboard.png|1080px|middle]]<br />
<br />
== Sprint 3 ==<br />
<br />
===Tâches du Sprint3===<br />
<br />
*T1.1 Lier le back et le front, mettre en place les routes (suggestion, annotation) - Authentification faite<br />
*T1.2 Revoir et enrichir les vues du front<br />
*T2. Déployer l'API sur un serveur Amazon (SQL dans Docker, environnement d'exécution avec Docker)<br />
*T3. Enrichir l'ensemble de tests et la documentation<br />
*T4. Mettre en place le nouveau modèle pour avoir une autre base de comparaison<br />
<br />
=== Semaine 6 : 27/02 - 05/03 ===<br />
<br />
[[File:Sprint3-Semaine6.png|1400px|middle]]<br />
<br />
====Lundi====<br />
* Conclusion sur le sprint précédent<br />
* Discussion au sujet du nouveau Sprint<br />
* T2. -> Problème de mise en place de Docker sur les machines Amazon : discussion de l'équipe pour essayer de trouver une solution (Swap)<br />
<br />
====Mardi====<br />
* T1.1 -> Ajout des routes pour gérer les ajouts/suppressions en base de données (Julian)<br />
* T1.1 -> Ajout de la logique côté front pour gérer les ajouts/suppressions en base de données (Quentin)<br />
* T1.1 -> Tests de la communication front - back(api) - base de données (Coralie, Julian, Quentin)<br />
* T2 -> Finalisation du déploiement de l'API sur un serveur Amazon + tests (Coralie)<br />
* T3 -> Tests unitaires sur apiTMDB (Elsa) et sur sql (Edwin)<br />
* T1.2 -> Charte graphique (Elsa)<br />
<br />
====Mercredi====<br />
* T1.1 -> Finalisation de l'authentification côté front (Quentin)<br />
* T4 -> Mise en place du nouveau model (factorisation machine) sur un exemple simple d'apprentissage (Quentin, Elsa)<br />
* T3 -> Tests unitaires sur sql (Edwin)<br />
* T3 -> Tests unitaires sur texts, words et tweets (Coralie)<br />
* T3 -> Tests unitaires sur preprocessing (Julian)<br />
* T1.2 -> Charte graphique (Elsa)<br />
<br />
====Jeudi====<br />
* T1.1 -> Modification de l'API pour sauvegarder et charger les modèles utilisateurs : maj routes entrainement + prédiction (Elsa)<br />
* T1.2 -> Page d'accueil côté front (Quentin)<br />
* T3 -> Tests unitaires sur preprocessing (Julian)<br />
* T3 -> Revue de code (Coralie)<br />
* T4 -> Mise en place du prétraitement pour le nouveau modèle (Edwin)<br />
<br />
====Vendredi====<br />
* T1.1 -> Revue de l'apprentissage et de la prédiction de films côté back (Elsa)<br />
* T1.2 -> Liaison du front avec l'apprentissage et la prédiction côté back (Quentin)<br />
* T1.2 -> Ajout de l'analyse de sentiment twitter côté front lors de la suggestion de films (Quentin)<br />
* T3 -> Revue de code des DUT (Julian)<br />
* T3 -> Documentation du code et du projet git (Coralie)<br />
* T4 -> Mise en place du prétraitement pour le nouveau modèle (Edwin)<br />
* Mise à jour de la documentation (Edwin et Coralie)<br />
<br />
=== Semaine 7 : 06/03 - 12/03 ===<br />
<br />
[[File:Sprint3-Semaine7.png|1400px|middle]]<br />
<br />
====Lundi====<br />
* T1.1 -> Mise en place de la prédiction via le nouveau modèle d'apprentissage (Elsa)<br />
* T1.2 -> Liaison du front avec l'apprentissage et la prédiction côté back (Quentin)<br />
* T1.2 -> Ajout de l'analyse de sentiment twitter côté front lors de la suggestion de films (Quentin) + Mise en jours du back-end en conséquent (Coralie)<br />
* T3 -> Revue de code + Commentaires (Julian)<br />
* Mise à jour de la documentation + Préparation soutenance + Préparation de la démonstration (Edwin et Coralie)<br />
<br />
====Mardi====<br />
* T1.1 -> Mise en place de la prédiction via le nouveau modèle d'apprentissage (Elsa)<br />
* T1.2 -> Liaison du front avec l'apprentissage et la prédiction du nouveau modèle (Quentin)<br />
* T2 -> Détacher le processus faisant tourner l'api du terminal et rediriger ses sorties dans un fichier (Coralie)<br />
* T3 -> Test et incorporation du travail des DUT et production des graphes correspondant (Julian + Edwin)<br />
* Mise à jour de la documentation + Préparation soutenance + Préparation de la démonstration (Edwin et Coralie)<br />
<br />
====Mercredi====<br />
<br />
====Jeudi====<br />
* Soutenance de fin de projet avec Didier Donsez et Massih-Reza Amini</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Conception_-_Recommandation_intelligente_de_films&diff=34615Conception - Recommandation intelligente de films2017-03-14T15:53:37Z<p>Coralie.Rachex: /* API en back-end */</p>
<hr />
<div>Voici la fiche de conception du projet 'Recommandation intelligente de films'.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
= Schéma de la structure de l'application =<br />
<br />
La partie back-end de l'application sera répartie sur deux serveurs Amazon, l'un pour notre base de données et l'autre pour notre API. Notre serveur de fichier est logé sur le même serveur que l'API car nous disposons uniquement de deux comptes Amazon AWT avec la version d’essai gratuite encore active. A l'avenir il faudrait reloger ce serveur de fichier sur un serveur propre et répliquer les serveurs pour mieux résister à la charge et aux pannes.<br />
<br />
[[Image:ConceptionSysteme.png|1000px|center]]<br />
<br />
= Choix des langages de programmation =<br />
* '''Python :''' pour le back-end<br />
* '''AngularJS :''' pour le front-end<br />
* '''MySql :''' pour la base de données<br />
<br />
= Choix technologiques =<br />
* '''TensorFlow :''' librairie open source pour l'apprentissage automatique, utilisant des graphiques de flux de données.<br />
* '''Keras :''' librairie de réseaux neuronaux de haut niveau, écrite en Python et capable de fonctionner au dessus de TensorFlow.<br />
* '''Flask :''' framework open-source de développement web en Python.<br />
<br />
= API en back-end =<br />
<br />
Pour utiliser pleinement l'API, il faut que l'utilisateur soit connecté car les données enregistrées en BD sont associées à l'id de l'utilisateur. Ceci permet à chaque utilisateur d'avoir ses données propres et de les conserver entre deux connexions. <br />
<br />
{| class="wikitable left" width="100%"<br />
|+ align="left" | Routes<br />
|-<br />
! scope=col width="5%" | Requête<br />
! scope=col width="18%" | Route<br />
! scope=col | Description<br />
! scope=col width="12%" | Permission<br />
|-<br />
| POST<br />
| /auth/signup<br />
| Création d'un compte utilisateur<br />
|<br />
|-<br />
| POST<br />
| /auth/login<br />
| Connexion d'un utilisateur<br />
|<br />
|-<br />
| <br />
| /auth/logout<br />
| Déconnexion d'un utilisateur<br />
| L'utilisateur doit être connecté<br />
|-<br />
| GET<br />
| /api/user<br />
| Retourne les informations de l'utilisateur<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/updateMovies<br />
| Met à jours la liste des films annotés par l'utilisateur<br />
| L'utilisateur doit être connecté<br />
|-<br />
| GET<br />
| /api/likedMovies/<string:opinion><br />
| Récupère en base de données, la liste des films que l'utilisateur a aimé si opinion="liked", pas aimé si opinion="disliked" ou alors tous les films si opinion="all".<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/likedMovie/<int:idMovie>/<int:isLiked><br />
| Ajoute en base de données, le film d'idMovie=idTMDB avec isLiked=0 si le film n'a pas été apprécié ou isLiked=1 si le film a été apprécié<br />
| L'utilisateur doit être connecté<br />
|-<br />
| PUT<br />
| /api/likedMovie/<int:idMovie>/<int:isLiked><br />
| Met à jours en base de données, le film d'idMovie=idTMDB avec isLiked=0 si le film n'a pas été apprécié ou isLiked=1 si le film a été apprécié<br />
| L'utilisateur doit être connecté<br />
|-<br />
| DELETE<br />
| /api/likedMovie/<int:idMovie><br />
| Supprime de la base de données, le film d'idMovie=idTMDB associé à l'utilisateur<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/train<br />
| Lance l'entrainement du modèle avec les films annotés par l'utilisateur, présents en base de données.<br />
| L'utilisateur doit être connecté<br />
|-<br />
| GET<br />
| /api/prediction<br />
| Lance une prédiction à partir du modèle de l'utilisateur et retourne une liste de recommandation de films.<br />
| L'utilisateur doit être connecté<br />
|-<br />
| GET<br />
| /api/predictionFM<br />
| Lance une prédiction à partir du modèle global et retourne une liste de recommandation de films pour l'utilisateur.<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/popularity<br />
| Lance la recherche de popularité sur Twitter et retourne une liste de films ordonnée par popularité décroissante et une seconde liste ordonnée par avis décroissant<br />
| L'utilisateur doit être connecté<br />
|}</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Conception_-_Recommandation_intelligente_de_films&diff=34614Conception - Recommandation intelligente de films2017-03-14T15:52:14Z<p>Coralie.Rachex: /* API en back-end */</p>
<hr />
<div>Voici la fiche de conception du projet 'Recommandation intelligente de films'.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
= Schéma de la structure de l'application =<br />
<br />
La partie back-end de l'application sera répartie sur deux serveurs Amazon, l'un pour notre base de données et l'autre pour notre API. Notre serveur de fichier est logé sur le même serveur que l'API car nous disposons uniquement de deux comptes Amazon AWT avec la version d’essai gratuite encore active. A l'avenir il faudrait reloger ce serveur de fichier sur un serveur propre et répliquer les serveurs pour mieux résister à la charge et aux pannes.<br />
<br />
[[Image:ConceptionSysteme.png|1000px|center]]<br />
<br />
= Choix des langages de programmation =<br />
* '''Python :''' pour le back-end<br />
* '''AngularJS :''' pour le front-end<br />
* '''MySql :''' pour la base de données<br />
<br />
= Choix technologiques =<br />
* '''TensorFlow :''' librairie open source pour l'apprentissage automatique, utilisant des graphiques de flux de données.<br />
* '''Keras :''' librairie de réseaux neuronaux de haut niveau, écrite en Python et capable de fonctionner au dessus de TensorFlow.<br />
* '''Flask :''' framework open-source de développement web en Python.<br />
<br />
= API en back-end =<br />
<br />
Pour utiliser pleinement l'API, il faut que l'utilisateur soit connecté car les données enregistrées en BD sont associées à l'id de l'utilisateur. Ceci permet à chaque utilisateur d'avoir ses données propres et de les conserver entre deux connexions. <br />
<br />
{| class="wikitable left" width="100%"<br />
|+ align="left" | Routes<br />
|-<br />
! scope=col width="5%" | Requête<br />
! scope=col width="18%" | Route<br />
! scope=col | Description<br />
! scope=col width="12%" | Permission<br />
|-<br />
| POST<br />
| /auth/signup<br />
| Création d'un compte utilisateur<br />
|<br />
|-<br />
| POST<br />
| /auth/login<br />
| Connexion d'un utilisateur<br />
|<br />
|-<br />
| <br />
| /auth/logout<br />
| Déconnexion d'un utilisateur<br />
| L'utilisateur doit être connecté<br />
|<br />
|-<br />
| GET<br />
| /api/user<br />
| Retourne les informations de l'utilisateur<br />
| L'utilisateur doit être connecté<br />
|<br />
|-<br />
| POST<br />
| /api/updateMovies<br />
| Met à jours la liste des films annotés par l'utilisateur<br />
| L'utilisateur doit être connecté<br />
|-<br />
| GET<br />
| /api/likedMovies/<string:opinion><br />
| Récupère en base de données, la liste des films que l'utilisateur a aimé si opinion="liked", pas aimé si opinion="disliked" ou alors tous les films si opinion="all".<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/likedMovie/<int:idMovie>/<int:isLiked><br />
| Ajoute en base de données, le film d'idMovie=idTMDB avec isLiked=0 si le film n'a pas été apprécié ou isLiked=1 si le film a été apprécié<br />
| L'utilisateur doit être connecté<br />
|-<br />
| PUT<br />
| /api/likedMovie/<int:idMovie>/<int:isLiked><br />
| Met à jours en base de données, le film d'idMovie=idTMDB avec isLiked=0 si le film n'a pas été apprécié ou isLiked=1 si le film a été apprécié<br />
| L'utilisateur doit être connecté<br />
|-<br />
| DELETE<br />
| /api/likedMovie/<int:idMovie><br />
| Supprime de la base de données, le film d'idMovie=idTMDB associé à l'utilisateur<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/train<br />
| Lance l'entrainement du modèle avec les films annotés par l'utilisateur, présents en base de données.<br />
| L'utilisateur doit être connecté<br />
|-<br />
| GET<br />
| /api/prediction<br />
| Lance une prédiction à partir du modèle de l'utilisateur et retourne une liste de recommandation de films.<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/popularity<br />
| Lance la recherche de popularité sur Twitter et retourne une liste de films ordonnée par popularité décroissante et une seconde liste ordonnée par avis décroissant<br />
| L'utilisateur doit être connecté<br />
|}</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Conception_-_Recommandation_intelligente_de_films&diff=34613Conception - Recommandation intelligente de films2017-03-14T15:39:04Z<p>Coralie.Rachex: /* API en back-end */</p>
<hr />
<div>Voici la fiche de conception du projet 'Recommandation intelligente de films'.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
= Schéma de la structure de l'application =<br />
<br />
La partie back-end de l'application sera répartie sur deux serveurs Amazon, l'un pour notre base de données et l'autre pour notre API. Notre serveur de fichier est logé sur le même serveur que l'API car nous disposons uniquement de deux comptes Amazon AWT avec la version d’essai gratuite encore active. A l'avenir il faudrait reloger ce serveur de fichier sur un serveur propre et répliquer les serveurs pour mieux résister à la charge et aux pannes.<br />
<br />
[[Image:ConceptionSysteme.png|1000px|center]]<br />
<br />
= Choix des langages de programmation =<br />
* '''Python :''' pour le back-end<br />
* '''AngularJS :''' pour le front-end<br />
* '''MySql :''' pour la base de données<br />
<br />
= Choix technologiques =<br />
* '''TensorFlow :''' librairie open source pour l'apprentissage automatique, utilisant des graphiques de flux de données.<br />
* '''Keras :''' librairie de réseaux neuronaux de haut niveau, écrite en Python et capable de fonctionner au dessus de TensorFlow.<br />
* '''Flask :''' framework open-source de développement web en Python.<br />
<br />
= API en back-end =<br />
<br />
Pour utiliser pleinement l'API, il faut que l'utilisateur soit connecté car les données enregistrées en BD sont associées à l'id de l'utilisateur. Ceci permet à chaque utilisateur d'avoir ses données propres et de les conserver entre deux connexions. <br />
<br />
{| class="wikitable left" width="100%"<br />
|+ align="left" | Routes<br />
|-<br />
! scope=col width="5%" | Requête<br />
! scope=col width="18%" | Route<br />
! scope=col | Description<br />
! scope=col width="12%" | Permission<br />
|-<br />
| POST<br />
| /auth/signup<br />
| Création d'un compte utilisateur<br />
|<br />
|-<br />
| POST<br />
| /auth/login<br />
| Connexion d'un utilisateur<br />
|<br />
|-<br />
| <br />
| /auth/logout<br />
| Déconnexion d'un utilisateur<br />
| L'utilisateur doit être connecté<br />
|<br />
|-<br />
| GET<br />
| /api/user<br />
| Retourne les informations de l'utilisateur<br />
| L'utilisateur doit être connecté<br />
|<br />
|-<br />
| POST<br />
| /api/updateMovies<br />
| Met à jours la liste des films annotés par l'utilisateur<br />
| L'utilisateur doit être connecté<br />
|-<br />
| GET<br />
| /api/likedMovies/<string:opinion><br />
| Récupère en base de données, la liste des films que l'utilisateur à aimé si opinion="liked", pas aimé si opinion="disliked" ou alors tous les films si opinion="all".<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/likedMovie/<int:idMovie>/<int:isLiked><br />
| Ajoute en base de données, le film d'idMovie=idTMDB avec isLiked=0 si le film n'a pas été apprécié ou isLiked=1 si le film à été apprécié<br />
| L'utilisateur doit être connecté<br />
|-<br />
| PUT<br />
| /api/likedMovie/<int:idMovie>/<int:isLiked><br />
| Met à jours en base de données, le film d'idMovie=idTMDB avec isLiked=0 si le film n'a pas été apprécié ou isLiked=1 si le film à été apprécié<br />
| L'utilisateur doit être connecté<br />
|-<br />
| DELETE<br />
| /api/likedMovie/<int:idMovie><br />
| Supprime de la base de données, le film d'idMovie=idTMDB associé à l'utilisateur<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/train<br />
| Lance l'entrainement du modèle avec les films annotés par l'utilisateur, présents en base de données.<br />
| L'utilisateur doit être connecté<br />
|-<br />
| GET<br />
| /api/prediction<br />
| Lance une prédiction à partir du modèle de l'utilisateur et retourne une liste de recommandation de films.<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/popularity<br />
| Lance la recherche de popularité sur Twitter et retourne une liste de films ordonnée par popularité décroissante et une seconde liste ordonnée par avis décroissant<br />
| L'utilisateur doit être connecté<br />
|}</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Fiche_de_suivi_-_Recommandation_intelligente_de_films&diff=34601Fiche de suivi - Recommandation intelligente de films2017-03-14T14:26:44Z<p>Coralie.Rachex: /* Sprint 3 */</p>
<hr />
<div>Voici la Fiche de suivi du projet de fin d'études DeepMovies 2016-2017<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin (Responsable innovation)<br />
* Hattinguais Julian (Responsable qualité)<br />
* Navarro Elsa (Responsable communication, Médiatrice)<br />
* Dunand Quentin (Responsable des deadlines,Responsable du front-end)<br />
<br />
= Avancée du projet =<br />
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.<br />
<br />
== Sprint 0 ==<br />
<br />
===Sprint dédié aux travaux préparatoires du projet===<br />
* Debriefing autour du projet<br />
* Renseignements sur les technologies et principaux défis techniques<br />
* 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) <br />
* Choix technologiques<br />
* Préparation des environnements<br />
* Établissement de la liste des exigences fonctionnelles et non fonctionnelles<br />
<br />
<br />
[[File:Sprint0-Semaine1.jpg|1400px|middle]]<br />
<br />
=== Semaine 1 : 23/01 - 29/01 ===<br />
* Mise en place du wiki (Edwin)<br />
* Recherche sur les technologies et les problèmes techniques (Tous)<br />
* Prise RDV avec Massih-Reza Amini pour renseignements (Coralie)<br />
* Mise en place d'un agenda pour le suivi du projet (Coralie)<br />
* Comment lier l'API au front-end ? AngularJS ou Polymer ? ... (Quentin)<br />
<br />
* Mise en place de l'architecture (Tous) avant de faire un prototype comme prévu.<br />
* Installation, compréhension et manipulation de Keras (Tous)<br />
* Recherche mise en place API-REST Python pour le back-end (Julian)<br />
* Mise en place du front-end - première requêtes - choix Angular pour communiquer avec une API-REST (Quentin)<br />
* Traitement de données simple en se basant juste sur le vote des utilisateurs de TMDb sur les films (Edwin, Coralie, Elsa)<br />
* 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)<br />
* 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 [http://nlp.stanford.edu/projects/glove/ GloVe].<br />
<br />
<br />
* Rendez-vous avec Massih-Reza Amini pour éclaircir le sujet, notamment au sujet du pré-traitement du texte. (Tous)<br />
* 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).<br />
* 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).<br />
* Mise en place d'un système de notation fonctionnel qui permet d'enregistrer les données à partir du front (Quentin).<br />
<br />
== Sprint 1 ==<br />
<br />
===Tâches du Sprint1===<br />
* T1. Établissement des vues principales côté client (recherche et annotation de films)<br />
* T2. Mise en place du processus de pré-traitement des données (titre, mots clés, résumé, note, artiste, producteur)<br />
* T3. Mise en place du réseau neuronal (réseau neuronal simple)<br />
* T4. Mise en place de la structure de test du réseau neuronal (former les corpus de données, cross validation, test de précision)<br />
* T5. Mise en place de l'environnement système (Docker)<br />
<br />
=== Semaine 2 : 30/01 - 05/02 ===<br />
<br />
[[File:Sprint1-Semaine2.jpg|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* Préparation du premier sprint :<br />
** Mise au point sur le travail réalisé la semaine passée et sur le travail à réaliser durant le sprint<br />
** Établissement d'une liste de fonctionnalités, avec une estimation de l'importance et du temps de réalisation de chaque tâche<br />
** Sélection des fonctionnalités à réaliser au cours du Sprint, remplissage du Scrumboard<br />
* Mise au point sur l'arborescence du git / architecture du projet<br />
* Installation d'une version GPU pour Keras et Tensor-Flow sur les machines équipées d'un bon GPU<br />
<br />
====Mardi====<br />
<br />
* Réunion avec Didier Donsez : <br />
** Technologies : storm, spark, flint (temps réel) pour Twitter<br />
** Distribution : préparer un déploiement sur GRID5000, contacter Olivier Richard et préparer un container Docker<br />
** Utiliser Github pour héberger le site web<br />
<br />
* T1. -> Vues "recherche de films", "annotation de film" et "consultation des films annotés" (Quentin)<br />
* T2. -> Prétraitement des données "titre", "mots clés", "résumé", "notes" (Edwin, Elsa, Coralie, Julian)<br />
** prétraitement des textes via Doc2Vec (Coralie)<br />
** prétraitement des mots via Glove (Elsa, Edwin, Julian)<br />
** récupération des données (Julian)<br />
** mise en place de l'embedding (Edwin)<br />
** mise en place d'une librairie pour le pré-traitement des données envoyées aux classifieur (Julian)<br />
** Import des modules (Julian)<br />
<br />
====Mercredi====<br />
<br />
* T1. -> Chargement des images de films côté client (Quentin)<br />
* T2. -> Prétraitement des données "titre", "mots clés", "résumé", "notes" + Ajout "genre" (Edwin, Elsa, Coralie, Julian)<br />
** prétraitement des textes via Doc2Vec (Coralie)<br />
** extraction des données JSON via l'API (Elsa)<br />
** prétraitement des genres (Julian)<br />
** prétraitement général (mise en forme de la matrice de données) (Edwin)<br />
** revue de code (Julian)<br />
* T5. -> Recherche d'un moyen de distribuer le classifieur sous Keras - Elephas ? (Coralie)<br />
<br />
====Jeudi====<br />
<br />
* Cours de MPI - travail sur la communication au sein d'un groupe<br />
* T1. -> Pagination et chargement d'images (Quentin)<br />
* T3. -> Création d'une première version du classifieur (Elsa, Edwin)<br />
* T4. -> Validation croisée pour pouvoir tester le classifieur correctement (Edwin & Elsa)<br />
* T5. -> Installation version GPU sur PC (Julian)<br />
* T5. -> Recherche d'un moyen de distribuer le classifieur Keras - Elephas (Coralie)<br />
<br />
====Vendredi====<br />
<br />
* T1. -> Déploiement sur github.io (Quentin)<br />
* T3. -> Insertion de Doc2Vec dans le classifieur (Julian)<br />
* T3. -> Revue du classifieur pour obtenir une meilleure précision (Elsa & Edwin)<br />
* T4. -> 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)<br />
* T4. -> Annotation de films pour constituer la base d'apprentissage/test (Tous)<br />
* T5. -> Auto-formation sur Docker (Coralie, Edwin)<br />
<br />
=== Semaine 3 : 06/02 - 12/02 ===<br />
<br />
[[File:Sprint1-Semaine3.jpg|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* Cours de MPI - gestion de projet<br />
* T1. -> Ajout d'un boite de dialogue permettant de visualiser les infos d'un film (Quentin)<br />
* T2. -> Fix de bugs dans preprocessing (Julian)<br />
* T4. -> Recherche sur la mise en place de tests avec Python (Elsa)<br />
* T5. -> Mise en place de l'image Docker avec Python, Keras et Tensorflow en partant d'un Ubuntu 14 (Edwin)<br />
* T5. -> Mise en place de l'image Docker avec Spark en partant d'un Ubuntu 14 (Coralie)<br />
<br />
====Mardi====<br />
<br />
* Rendez-vous avec Mr. Amini<br />
* T1. -> Amélioration de la boîte de dialogue pour les infos (Quentin)<br />
* T2. -> Preprocessing des acteurs et des realisateurs et ajout des fonction de test associées (Julian)<br />
* T2. -> Test le modèle D2V sur un analyseur de sentiment de tweets, beaucoup plus objectif que les gouts utilisateurs vis à vis des films (Coralie).<br />
* T2. -> Mise en place de modules de test unitaires dans MovieProject/tests/unit et suppression de fichiers inutiles dans MovieProject/tests (Elsa)<br />
* T4. -> 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)<br />
* T4. -> Evaluation du classifieur avec la méthode Doc2Vec (Elsa)<br />
* T5. -> Finalisation de l'image Docker avec Python, Keras et Tensorflow (Edwin)<br />
<br />
====Mercredi====<br />
<br />
* T1. -> Création de statistiques sur les goûts utilisateurs côté client (Quentin)<br />
* T4. -> Début de la mise en place des différents modèles d'apprentissage en vue de leur comparaison : <br />
** Réseau neuronal avec Keras (Elsa)<br />
** Perceptron (Coralie)<br />
** Modification du prétraitement afin de pouvoir récupérer les matrices de chacune des variables caractérisant un film (Julian)<br />
* T5. -> Ajout de Spark à l'image Docker (Edwin)<br />
<br />
====Jeudi====<br />
<br />
* T1. -> Poursuite de la création de statistiques sur les goûts utilisateurs côté client (Quentin)<br />
* T4. -> Poursuite des tests de performance :<br />
** 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)<br />
** Test du réseau neuronal (Elsa)<br />
** Mise en place d'un SVM pour concurrencer les performances des deux autres modèles (Julian)<br />
* T5. -> Test de l'image Docker (Edwin)<br />
<br />
====Vendredi====<br />
<br />
* T1. -> Visualisation des statistiques + explications sur la page d'accueil (Quentin)<br />
* T4. -> Finalisation perceptron + intégration dans evaluation (Coralie)<br />
* T4. -> Finalisation SVM + intégration dans evaluation (Julian)<br />
* T4. -> Mise en place du module evaluation et intégration des modifications de classifieur & preprocessing (Elsa)<br />
* T5. -> Documentation sur Spark (Edwin & Coralie)<br />
<br />
===État du scrumboard en fin du Sprint1===<br />
<br />
[[File:Sprint1-end-Scrumboard.png|1080px|middle]]<br />
<br />
== Sprint 2 ==<br />
<br />
===Tâches du Sprint2===<br />
<br />
*T1.2. Amélioration du front-end (mise en cache, etc.)<br />
*T2.2. Ajout de descripteurs (durée, budget, année de production, compagnie de production, appartenance à une sage) en vue d'améliorer notre modèle d'apprentissage.<br />
*T3.2 Amélioration du réseau neuronal (comparaison avec Perceptron simple, SVM, RN Convolutif)<br />
*T4. Mise en place de la suggestion de films (vue côté front-end et logique côté back-end)<br />
*T5. Distribution de l'apprentissage sur plusieurs machines (Docker - Spark - Mesos - Elephas) & Parallélisation requêtes<br />
*T6 Communication front/back, établissement des routes et mise en place du système d'authentification<br />
*T7. Analyse de sentiment sur les flux Twitter<br />
*T8. Mise en place de la base de données<br />
<br />
=== Semaine 4 : 13/02 - 19/02 ===<br />
<br />
[[File:Sprint2-Semaine4.png|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* Réunion de fin de sprint1 et de début de sprint0 : discussion autour des avancées, difficultés, retards & établissement fonctionnalités à implémenter au cours du sprint2<br />
*T1.2 -> Mise en place d'un cache local côté front pour éviter de faire trop de requêtes à l'API TMDB (Quentin)<br />
*T2.2. -> Revue de la structure du code (Julian)<br />
*T3.2. -> Mise en place d'un réseau neuronal de convolution (Coralie)<br />
*T4. -> Amélioration de la prédiction de film (Elsa)<br />
*T5. -> Mise en place d'un cluster Spark via Mesos (Edwin)<br />
<br />
====Mardi====<br />
<br />
*T1.2 -> Mise en place d'un cache local côté front pour éviter de faire trop de requêtes à l'API TMDB (Quentin)<br />
*T3.2 -> Amélioration du classifieur (Elsa/Quentin)<br />
*T3.2. -> Mise en place d'un réseau neuronal de convolution (Coralie)<br />
*T4. -> Amélioration de la prédiction de film (Elsa)<br />
*T5. -> Mise en place d'un cluster Spark via Mesos (Edwin)<br />
*T5. -> Parallélisation des requêtes à l'API TMDB (Julian)<br />
<br />
====Mercredi====<br />
<br />
*T1.2 -> Finalisation du cache local côté front pour éviter de faire trop de requêtes à l'API TMDB (Quentin)<br />
*T1.2 -> Finalisation des statistiques cinématographique utilisateurs (Quentin)<br />
*T2.2. -> Ajout du descripteurs "budget" avec normalisation (Edwin)<br />
*T3.2 -> Mise en place de la fonction de comparaison des combinaisons de descripteurs de films pour faciliter le travail des DUT (Julian)<br />
*T3.2. -> Mise en place d'un réseau neuronal LSTM (Coralie)<br />
*T4. -> Changement de la méthode de prédiction de film (Elsa)<br />
*T6. -> Communication front-back test (Elsa/Quentin)<br />
* SRS (Edwin)<br />
<br />
====Jeudi====<br />
<br />
* Rendez-vous avec les DUT : aide sur l'installation du projet, clone du projet Github. <br />
* Préparation de la présentation (Elsa & Edwin)<br />
* Préparation démo (Quentin & Elsa)<br />
* Mise à jour Wiki, SRS, Scrumboard (Elsa & Edwin)<br />
* Aide des DUT (Edwin & Julian)<br />
* T3.2 -> Evaluation du modèle et comparaison avec SVM et Perceptron de manière graphique (extraire les données et construire des graphes - csv ou matplotlib) (Sébastien & Marceau)<br />
* T7. -> Prétraitement des Tweet(Coralie)<br />
* T5. -> Avancement sur le distribué (Julian)<br />
* T1.2 -> Page de login du front, fix problème de CSS sur les graphes (Quentin)<br />
* T3.2 -> Amélioration du classifieur, tests en changeant les layers, le batch-size, etc. (Quentin)<br />
<br />
====Vendredi====<br />
* Préparation du travail qu'Edwin pourra réaliser durant la semaine de vacances (Edwin travaillera en décalé avec le reste du groupe)<br />
* Début de la mise en place de la base de données (Edwin)<br />
<br />
=== Semaine 5 : 20/02 - 26/02 (Edwin) ===<br />
(Edwin a travaillé la semaine précédente, en décalé avec le reste du groupe)<br />
====Lundi====<br />
*T8. -> Installation des outils liés à la gestion de la base de données MySQL et début de la conception de l'API de communication avec cette base. (Edwin)<br />
====Mardi====<br />
*T8. -> Finalisation de l'API, début des tests et des corrections de bug. (Edwin)<br />
====Mercredi====<br />
*T8. -> Ajout de nouvelles fonctionnalités SQL à l'API et tests de l'API. Création d'un readme et d'un fichier d'exemple complet pour l'utilisation de l'API de MySQL. (Edwin)<br />
*T8. -> Amélioration de l'image Docker, correction de bugs de paths et de librairies manquantes. (Edwin)<br />
====Jeudi====<br />
*T8. -> Review générale du travail lié à la base de données. (Edwin)<br />
*T8. -> Mise en place de MySQL pour Docker. (Edwin)<br />
*Mise à jour du Scrumboard et du wiki-air. (Edwin)<br />
<br />
====Vendredi====<br />
*T8. -> Amélioration du Docker pour tenter de régler des problèmes de ports liés à MySQL (non terminé). (Edwin) <br />
*T8. -> Tests unitaires de fonctionnement de serveurs apaches. (Edwin)<br />
<br />
=== Semaine 5 : 27/02 - 28/02 ===<br />
<br />
[[File:Sprint2-Semaine5.png|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* T1.2 -> Mise en place de la page de recommendations (Quentin)<br />
* Merge du classifieur sur la branche develop, avec la prédiction (Elsa)<br />
* T8. -> Revue de la BD et sécurisation (Julian) puis merge sur develop<br />
* T7. -> Finalisation de l'analyse de sentiments (Coralie) pour merge sur develop<br />
* T3.2 -> Recherche sur une construction différente des matrices (basée sur la factorisation de matrices, cf Prix Netflix) (Quentin & Elsa)<br />
<br />
====Mardi====<br />
* Harmonisation des données merge sur le git (Sentiment analysis, evaluation du classifieur et prediction) (Elsa)<br />
* T6. -> Recherche et premiers tests pour l'authentification (Quentin pour le front et Julian pour le back)<br />
* T8. & T5. -> Creation d'une instance de BD Amazon RDS dans un VPC (Coralie)<br />
* T1.2 -> Finalisation page de recommendations (Quentin)<br />
* Insertion en BD des films annotés par les users (Julian)<br />
<br />
====Mercredi====<br />
* Réunion avec Massih-Reza Amini pour parler d'un nouveau modèle de machine learning (Cf Quentin & Elsa lundi)<br />
* T4. -> Amélioration de la prédiction (Elsa)<br />
* T5. -> Essais déploiement du back sur une instance Amazon EC2 (Coralie)<br />
* T6. -> Mise en place de l'authentification simple (login) (Quentin & Julian)<br />
<br />
====Jeudi====<br />
* T4. -> Amélioration de la prédiction et module de test pour la prédiction (Elsa)<br />
* T5. -> Essais déploiement du back sur une instance Amazon EC2 (Coralie)<br />
* T1.2 -> Création des vues d'inscription (sign up) et début vue des paramètres (Quentin)<br />
* T6. -> Sécurisation des appels à l'API par Token (Julian)<br />
<br />
====Vendredi====<br />
* Nettoyage de develop + mise en place de nouveaux tests et état des lieux des tests et de la doc à faire (Elsa)<br />
* T5. -> Essais déploiement du back sur une instance Amazon EC2 (Coralie)<br />
* T6. -> Finalisation de l'inscription et test des premiers appels de récupération des films annotés d'un user (Quentin & Julian)<br />
<br />
===État du scrumboard en fin du Sprint2===<br />
<br />
[[File:Sprint2-end-Scrumboard.png|1080px|middle]]<br />
<br />
== Sprint 3 ==<br />
<br />
===Tâches du Sprint3===<br />
<br />
*T1.1 Lier le back et le front, mettre en place les routes (suggestion, annotation) - Authentification faite<br />
*T1.2 Revoir et enrichir les vues du front<br />
*T2. Déployer l'API sur un serveur Amazon (SQL dans Docker, environnement d'exécution avec Docker)<br />
*T3. Enrichir l'ensemble de tests et la documentation<br />
*T4. Mettre en place le nouveau modèle pour avoir une autre base de comparaison<br />
<br />
=== Semaine 6 : 27/02 - 05/03 ===<br />
<br />
[[File:Sprint3-Semaine6.png|1400px|middle]]<br />
<br />
====Lundi====<br />
* Conclusion sur le sprint précédent<br />
* Discussion au sujet du nouveau Sprint<br />
* T2. -> Problème de mise en place de Docker sur les machines Amazon : discussion de l'équipe pour essayer de trouver une solution (Swap)<br />
<br />
====Mardi====<br />
* T1.1 -> Ajout des routes pour gérer les ajouts/suppressions en base de données (Julian)<br />
* T1.1 -> Ajout de la logique côté front pour gérer les ajouts/suppressions en base de données (Quentin)<br />
* T1.1 -> Tests de la communication front - back(api) - base de données (Coralie, Julian, Quentin)<br />
* T2 -> Finalisation du déploiement de l'API sur un serveur Amazon + tests (Coralie)<br />
* T3 -> Tests unitaires sur apiTMDB (Elsa) et sur sql (Edwin)<br />
* T1.2 -> Charte graphique (Elsa)<br />
<br />
====Mercredi====<br />
* T1.1 -> Finalisation de l'authentification côté front (Quentin)<br />
* T4 -> Mise en place du nouveau model (factorisation machine) sur un exemple simple d'apprentissage (Quentin, Elsa)<br />
* T3 -> Tests unitaires sur sql (Edwin)<br />
* T3 -> Tests unitaires sur texts, words et tweets (Coralie)<br />
* T3 -> Tests unitaires sur preprocessing (Julian)<br />
* T1.2 -> Charte graphique (Elsa)<br />
<br />
====Jeudi====<br />
* T1.1 -> Modification de l'API pour sauvegarder et charger les modèles utilisateurs : maj routes entrainement + prédiction (Elsa)<br />
* T1.2 -> Page d'accueil côté front (Quentin)<br />
* T3 -> Tests unitaires sur preprocessing (Julian)<br />
* T3 -> Revue de code (Coralie)<br />
* T4 -> Mise en place du prétraitement pour le nouveau modèle (Edwin)<br />
<br />
====Vendredi====<br />
* T1.1 -> Revue de l'apprentissage et de la prédiction de films côté back (Elsa)<br />
* T1.2 -> Liaison du front avec l'apprentissage et la prédiction côté back (Quentin)<br />
* T1.2 -> Ajout de l'analyse de sentiment twitter côté front lors de la suggestion de films (Quentin)<br />
* T3 -> Revue de code des DUT (Julian)<br />
* T3 -> Documentation du code et du projet git (Coralie)<br />
* T4 -> Mise en place du prétraitement pour le nouveau modèle (Edwin)<br />
* Mise à jour de la documentation (Edwin et Coralie)<br />
<br />
=== Semaine 7 : 06/03 - 12/03 ===<br />
<br />
[[File:Sprint3-Semaine7.png|1400px|middle]]<br />
<br />
====Lundi====<br />
* T1.1 -> Mise en place de la prédiction via le nouveau modèle d'apprentissage (Elsa)<br />
* T1.2 -> Liaison du front avec l'apprentissage et la prédiction côté back (Quentin)<br />
* T1.2 -> Ajout de l'analyse de sentiment twitter côté front lors de la suggestion de films (Quentin) + Mise en jours du back-end en conséquent (Coralie)<br />
* T3 -> Revue de code + Commentaires (Julian)<br />
* Mise à jour de la documentation + Préparation soutenance + Préparation de la démonstration (Edwin et Coralie)<br />
<br />
====Mardi====<br />
* T1.1 -> Mise en place de la prédiction via le nouveau modèle d'apprentissage (Elsa)<br />
* T1.2 -> Liaison du front avec l'apprentissage et la prédiction côté back (Quentin)<br />
* T2 -> Détacher le processus faisant tourner l'api du terminal et rediriger ses sorties dans un fichier (Coralie)<br />
* T3 -> Test et incorporation du travail des DUT et production des graphes correspondant (Julian + Edwin)<br />
* Mise à jour de la documentation + Préparation soutenance + Préparation de la démonstration (Edwin et Coralie)<br />
<br />
====Mercredi====<br />
<br />
====Jeudi====<br />
* Soutenance de fin de projet avec Didier Donsez et Massih-Reza Amini</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=SRS_-_Recommandation_intelligente_de_films&diff=34591SRS - Recommandation intelligente de films2017-03-14T13:44:49Z<p>Coralie.Rachex: /* Articles */</p>
<hr />
<div>Voici la fiche SRS du projet Recommandation intelligente de films.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
=Introduction =<br />
Qui n'a pas rêvé d'avoir une liste de suggestion de films correspondant à ses goûts cinématographiques ? Grâce à un système de réseaux neuronaux et d'une base de données conséquente de films, le système proposera une liste de suggestions de films personnalisée pour l'utilisateur. Le modèle créé sur une base de données statique pourra alors être affiné en temps réel grâce aux nouvelles opinions exprimées par l’utilisateur et tenir compte de la popularité et avis récemment exprimés dans le flux Twitter.<br />
<br />
==But du document ==<br />
Le but de ce document SRS est de fournir une vue d'ensemble détaillée de notre système logiciel, ses paramètres et buts. Ce document décrit le public cible du projet et son interface utilisateur, ainsi que les spécifications du logiciel. Ce document est destiné tant aux utilisateurs qu'aux développeurs du logiciel.<br />
<br />
==Objectif du projet ==<br />
Beaucoup d'algorithmes ont été conçus dans le but de recommander des films en fonction des goûts utilisateurs. Beaucoup d'entre eux sont basés sur des systèmes présupposant que les utilisateurs appréciant un même film, apprécient les mêmes films. La suggestion est ainsi réalisée en fonction des goûts d'autres utilisateurs et non pas en fonction des goûts propres de l'utilisateur.<br />
Avec l’essor de l'intelligence artificielle et des réseaux neuronaux, de nouveaux outils émergent afin de mieux modéliser les comportements et les goûts humains. Le but de ce projet est d'utiliser l'apprentissage machine afin d'améliorer les systèmes de recommandation cinématographiques, en les personnalisant totalement en fonction des goûts de l'utilisateur.<br />
<br />
== Définitions, acronymes et abréviations ==<br />
* Deep Learning : ensemble de méthodes d'apprentissage automatiques visant à modéliser avec un haut niveau d’abstraction un ensemble de données.<br />
* Git : logiciel de gestion de versions décentralisé<br />
<br />
== Références ==<br />
* http://air.imag.fr/index.php/SRS<br />
* http://www.cs.st-andrews.ac.uk/~ifs/Books/SE9/Presentations/PPTX/Ch4.pptx<br />
* http://en.wikipedia.org/wiki/Software_requirements_specification<br />
* [http://www.cse.msu.edu/~chengb/RE-491/Papers/IEEE-SRS-practice.pdf IEEE Recommended Practice for Software Requirements Specifications IEEE Std 830-1998]<br />
<br />
==Portée du produit ==<br />
Le produit est destiné aux utilisateurs désireux d'obtenir automatiquement des recommandations de films en fonction de leurs goûts. L'application sera plus efficace pour des cinéphiles annotant un grand nombre de films, puisque les modèles d'apprentissage sont plus précis lorsque nous possédons un grands nombres de données d'apprentissage. Toutefois, notre produit à la prétention de pouvoir être utilisé par un internaute lambda, sans condition de connaissances cinématographiques.<br />
<br />
=Description générale=<br />
<br />
==Le but du produit==<br />
Le produit doit permettre à l'utilisateur d'obtenir des recommandations intelligentes de films en fonction des films qu'il a appréciés et de ceux qu'il n'a pas appréciés. Cette recommandation doit tenir compte de la proximité des films les uns par rapport aux autres en terme de genre, synopsie, acteurs, réalisateurs, etc. Mais doit également tenir compte de la popularité des films et des tendances actuelles grâce à l'analyse en temps réel des flux Twitter.<br />
<br />
== Structure de l'application ==<br />
Le schéma de la structure de l'application est disponible [[Conception - Recommandation intelligente de films| '''ici''']].<br />
<br />
==Caractéristiques et contraintes utilisateurs==<br />
* Les utilisateurs doivent posséder une certaine culture cinématographique pour constituer une base d'apprentissage, en fonction des films qu'ils ont préalablement visionnés et de leur avis sur ceux-ci. <br />
* Aucune expertise informatique n'est requise, bien que des notions d'informatiques soient nécessaires, afin que l'utilisateur puisse s'inscrire et naviguer sur le site internet. <br />
* Une connexion internet est également nécessaire pour utiliser le produit.<br />
<br />
==Contraintes générales du système==<br />
<br />
* Le nombre de données d'entrainement est très variable selon les utilisateurs<br />
* Utilisation de la technologie TensorFlow (Keras)<br />
* Limitation du nombre de requête par l'API TDMBSimple, à 40 par seconde<br />
<br />
==Dépendances==<br />
* API de la base de donnée de film TMDB : https://developers.themoviedb.org/3/people<br />
* API REST 1.1 : https://dev.twitter.com/rest/public<br />
* API STREAMING : https://dev.twitter.com/streaming/overview<br />
<br />
=Exigences fonctionelles=<br />
<br />
==Conception de l'interface du système==<br />
Le dossier de conception de l'interface est disponible [[Conception de l'interface - Recommandation intelligente de films|'''ici''']]<br />
<br />
== Fonctionnalités ==<br />
<br />
La liste des fonctionnalités est disponible [https://docs.google.com/spreadsheets/d/1LSg5gTqY8aYSFziu34ActGsZ0cR5aUQ3xD48CJBQM3s/edit?usp=sharing '''ici''']<br />
<br />
=Exigences de performance=<br />
<br />
* '''Facilité de prise en main :''' Le logiciel doit être facile à prendre en main pour un utilisateur non expert et agréable à utiliser pour un utilisateur expert.<br />
* '''Temps de réponse :''' Le produit doit avoir un temps de réponses réduit et quasiment constant ou alors avertir l'utilisateur en cas de délais de traitement. Ces délais de traitement doivent être réduit au maximum pour tenir sur le time-out d'attente de réponse à une réquête client.<br />
* '''Sécurité et robustesse / Gestion des erreurs :''' Le logiciel est capable d'éviter ou de faire face aux événements indésirables, sans intervention humaine. Le système doit fonctionner continuellement malgré les erreurs, du moment qu'elles ne remettent pas en cause son bon fonctionnement. Une erreur grave doit cependant provoquer l'arrêt du service, pour ne pas compromettre l'intégrité du système.<br />
* '''Précision :''' Le modèle de prédiction doit être assez fiable pour prédire correctement un nombre conséquent de films (précision supérieure à 70%).<br />
<br />
=Evolutions potentielles du produit=<br />
<br />
* '''Multi serveurs :''' Pour être pleinement fonctionnel, le produit devra être déployé sur plusieurs serveurs pour résister à la charge. <br />
* '''Basculement sur le nouveau modèle :''' Une fois le nombre d'utilisateur suffisant, nous pourrons basculer complètement l'apprentissage sur notre modèle "factorisation machine". Ceci permettra d'avoir un unique modèle pour l'ensemble des utilisateurs que nous ne ré-entrainerons qu'une seule fois par jours. L'intérêt est de réduire le nombre de modèles enregistrés sur le serveur de fichiers ainsi que leur mises à jours, permettant ainsi de mieux résister à l'augmentation de la charge utilisateur. L'autre intérêt majeure est que cela augmentera notre précision de prédiction.<br />
* '''Amélioration du nouveau modèle :''' Une fois le modèle mis en place et le nombre de données suffisant, nous pourrons améliorer sa précision en prenant en compte des données utilisateurs ainsi que des données sur les films afin d'affiner notre classification et donc nos prédictions.<br />
* '''Distribution de l'apprentissage :''' Avec le nouveau modèle, l'apprentissage machine va devenir très long car le nombre de données d'entrainement va augmenter exponentiellement avec le nombre d'utilisateurs. La distribution de l'algorithme d'apprentissage prendra donc tout son sens pour maintenir un temps de réponse convenable.<br />
* '''Remplacer l'API TMDB :''' Pour supporter la charge nous devons nous abstraire de la limitation de requêtes imposée par TMDB. La méthode la plus simple consisterait à charger le contenu de TMDB sur un de nos serveur et à le mettre à jours tous les jours.<br />
<br />
=Appendices=<br />
<br />
==Bibliographie==<br />
<br />
=== Articles ===<br />
<br />
===== Systèmes de recommandation=====<br />
* [http://benanne.github.io/2014/08/05/spotify-cnns.html#contentbased'''Recommending music on Spotify with deep learning''']<br />
* [https://static.googleusercontent.com/media/research.google.com/fr//pubs/archive/45530.pdf'''Deep Neural Networks for YouTube Recommendations''']<br />
* [https://www.atala.org/IMG/pdf/1-Poirier-TAL51-3.pdf'''De la classification d’opinions à la recommandation''']<br />
* [http://blog.richardweiss.org/2016/09/25/movie-embeddings.html'''Recommending movies with deep learning''']<br />
* [https://tel.archives-ouvertes.fr/tel-01009570/document'''Factorisation matricielle''']<br />
<br />
===== Articles sur l'analyse de sentiments=====<br />
* [http://imu.universite-lyon.fr/wp-content/uploads/2015/07/me%CC%81moire-Ahmed-REMADNA.pdf'''Classification des posts sur des réseaux sociaux''']<br />
* [http://www.volodenkov.com/post/keras-lstm-sentiment-p1/'''Sentiment analysis with RNN in Keras''']<br />
* [http://www.wildml.com/2015/12/implementing-a-cnn-for-text-classification-in-tensorflow/'''Implementing a CNN for Text Classification in TensorFlow''']<br />
<br />
=== Documentations ===<br />
<br />
===== Keras =====<br />
* [http://machinelearningmastery.com/introduction-python-deep-learning-library-keras/'''Introduction to Python Deep Learning with Keras''']<br />
* [http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/'''Develop Your First Neural Network in Python With Keras Step-By-Step''']<br />
<br />
===== API TMDB =====<br />
* [https://developers.themoviedb.org/3/people'''The movie data base for developers''']<br />
<br />
===== Django & AngularJS =====<br />
* [https://thinkster.io/django-angularjs-tutorial#rendering-post-objects'''Django angularJS tutorial''']<br />
* [https://material.angularjs.org/latest/'''Angular Material''']<br />
<br />
===== DOC2VEC =====<br />
* [https://rare-technologies.com/doc2vec-tutorial/'''Doc2vec tutorial''']<br />
* [http://linanqiu.github.io/2015/10/07/word2vec-sentiment/'''Sentiment Analysis Using Doc2Vec''']<br />
<br />
===== Api python - Flask =====<br />
* [http://flask.pocoo.org/docs/0.12/quickstart/#accessing-request-data'''Flask quickstart''']<br />
<br />
===== Grid'5000 =====<br />
* [https://www.grid5000.fr/mediawiki/index.php/Grid5000:Get_an_account'''Grid'5000 account''']<br />
<br />
=== Codes sources ===<br />
<br />
* [https://github.com/ririw/ririw.github.io/blob/master/assets/Recommending%20movies.ipynb'''Recommending movies''']<br />
* [https://github.com/nisarg64/Sentiment-Analysis-Word2Vec'''Sentiment-Analysis-Word2Vec''']</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Conception_de_l%27interface_-_Recommandation_intelligente_de_films&diff=34521Conception de l'interface - Recommandation intelligente de films2017-03-14T09:38:47Z<p>Coralie.Rachex: /* Logo */</p>
<hr />
<div>Voici la fiche de conception de l'interface du projet 'Recommandation intelligente de films'.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
=Développement de la maquette du produit=<br />
<br />
<br />
==Différentes vues réalisées==<br />
<br />
===Améliorer les prédictions===<br />
<br />
Cette vue permet à l'utilisateur de rechercher un film en particulier ou de parcourir les pages afin de trouver des films à annoter. En cliquant sur le pouces vers le haut, l'utilisateur indique qu'il aime le film et en cliquant sur le pouce vers le bas, qu'il ne l'aime pas.<br />
<br />
[[Image:Conception-VueAmeliorerPrediction.png|900px|center]]<br />
<br />
===Films annotés===<br />
<br />
Cette vue permet à l'utilisateur de visionner le récapitulatif des films qu'il a déjà annoté. Il peut affiner le résultat en sélectionnant au choix tous les films annotés, uniquement les films qu'il à annoté positivement ou alors uniquement ceux qu'il à annoté négativement.<br />
<br />
[[Image:Conception-VueFilmsAnnotes.png|900px|center]]<br />
<br />
===Statistiques===<br />
<br />
Cette vue permet à l'utilisateur d'accéder aux statistiques sur ses films annotés. Par exemple, il pourra avoir le détail des genres qu'il aime ou n'aime pas, la durée moyenne des films aimés ou non aimés, etc.<br />
<br />
[[Image:Conception-VueStatistiques.png|900px|center]]<br />
<br />
===Recommandations===<br />
<br />
Cette vue permet à l'utilisateur de charger une liste de films recommandés selon ses goûts. La taille des images de films met en évidence les films ayant la plus grande probabilité de plaire à l'utilisateur, c'est à dire ceux ayant un haut score lors de la prédiction (une alternative à ce système est de simplement indiquer le pourcentage de chance que l'utilisateur aime le film proposé, sans modifier la taille des images). Des estampilles en haut à droite des images de films peuvent être présent et indiquent soit un coup de cœur de la communauté Twitter (icône cœur), soit un film populaire sur Twitter, c'est à dire un film dont on parle beaucoup sur Twitter mais pas forcément en bien (icône Twitter).<br />
<br />
[[Image:Conception-VueRecommandations.png|900px|center]]<br />
<br />
==Charte graphique==<br />
<br />
La charte graphique à été sélectionné via le site [https://www.materialpalette.com/teal/amber'''Material Design'''].<br />
<br />
<br />
[[Image:CharteGraphique.png|800px|center]]<br />
<br />
<br />
==Logo==<br />
<br />
Le logo de l'application à été crée par Elsa Navarro, via le logiciel Gimp, en respectant la charte graphique présélectionné.<br />
<br />
[[Image:LogoDeepMovies.png|400px|center]]</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Conception_de_l%27interface_-_Recommandation_intelligente_de_films&diff=34520Conception de l'interface - Recommandation intelligente de films2017-03-14T09:38:24Z<p>Coralie.Rachex: /* Logo */</p>
<hr />
<div>Voici la fiche de conception de l'interface du projet 'Recommandation intelligente de films'.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
=Développement de la maquette du produit=<br />
<br />
<br />
==Différentes vues réalisées==<br />
<br />
===Améliorer les prédictions===<br />
<br />
Cette vue permet à l'utilisateur de rechercher un film en particulier ou de parcourir les pages afin de trouver des films à annoter. En cliquant sur le pouces vers le haut, l'utilisateur indique qu'il aime le film et en cliquant sur le pouce vers le bas, qu'il ne l'aime pas.<br />
<br />
[[Image:Conception-VueAmeliorerPrediction.png|900px|center]]<br />
<br />
===Films annotés===<br />
<br />
Cette vue permet à l'utilisateur de visionner le récapitulatif des films qu'il a déjà annoté. Il peut affiner le résultat en sélectionnant au choix tous les films annotés, uniquement les films qu'il à annoté positivement ou alors uniquement ceux qu'il à annoté négativement.<br />
<br />
[[Image:Conception-VueFilmsAnnotes.png|900px|center]]<br />
<br />
===Statistiques===<br />
<br />
Cette vue permet à l'utilisateur d'accéder aux statistiques sur ses films annotés. Par exemple, il pourra avoir le détail des genres qu'il aime ou n'aime pas, la durée moyenne des films aimés ou non aimés, etc.<br />
<br />
[[Image:Conception-VueStatistiques.png|900px|center]]<br />
<br />
===Recommandations===<br />
<br />
Cette vue permet à l'utilisateur de charger une liste de films recommandés selon ses goûts. La taille des images de films met en évidence les films ayant la plus grande probabilité de plaire à l'utilisateur, c'est à dire ceux ayant un haut score lors de la prédiction (une alternative à ce système est de simplement indiquer le pourcentage de chance que l'utilisateur aime le film proposé, sans modifier la taille des images). Des estampilles en haut à droite des images de films peuvent être présent et indiquent soit un coup de cœur de la communauté Twitter (icône cœur), soit un film populaire sur Twitter, c'est à dire un film dont on parle beaucoup sur Twitter mais pas forcément en bien (icône Twitter).<br />
<br />
[[Image:Conception-VueRecommandations.png|900px|center]]<br />
<br />
==Charte graphique==<br />
<br />
La charte graphique à été sélectionné via le site [https://www.materialpalette.com/teal/amber'''Material Design'''].<br />
<br />
<br />
[[Image:CharteGraphique.png|800px|center]]<br />
<br />
<br />
==Logo==<br />
<br />
Le logo de l'application à été crée par Elsa Navarro, via le logiciel Gimp en respectant la charte graphique présélectionné.<br />
<br />
[[Image:LogoDeepMovies.png|400px|center]]</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Conception_de_l%27interface_-_Recommandation_intelligente_de_films&diff=34519Conception de l'interface - Recommandation intelligente de films2017-03-14T09:38:00Z<p>Coralie.Rachex: /* Recommandations */</p>
<hr />
<div>Voici la fiche de conception de l'interface du projet 'Recommandation intelligente de films'.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
=Développement de la maquette du produit=<br />
<br />
<br />
==Différentes vues réalisées==<br />
<br />
===Améliorer les prédictions===<br />
<br />
Cette vue permet à l'utilisateur de rechercher un film en particulier ou de parcourir les pages afin de trouver des films à annoter. En cliquant sur le pouces vers le haut, l'utilisateur indique qu'il aime le film et en cliquant sur le pouce vers le bas, qu'il ne l'aime pas.<br />
<br />
[[Image:Conception-VueAmeliorerPrediction.png|900px|center]]<br />
<br />
===Films annotés===<br />
<br />
Cette vue permet à l'utilisateur de visionner le récapitulatif des films qu'il a déjà annoté. Il peut affiner le résultat en sélectionnant au choix tous les films annotés, uniquement les films qu'il à annoté positivement ou alors uniquement ceux qu'il à annoté négativement.<br />
<br />
[[Image:Conception-VueFilmsAnnotes.png|900px|center]]<br />
<br />
===Statistiques===<br />
<br />
Cette vue permet à l'utilisateur d'accéder aux statistiques sur ses films annotés. Par exemple, il pourra avoir le détail des genres qu'il aime ou n'aime pas, la durée moyenne des films aimés ou non aimés, etc.<br />
<br />
[[Image:Conception-VueStatistiques.png|900px|center]]<br />
<br />
===Recommandations===<br />
<br />
Cette vue permet à l'utilisateur de charger une liste de films recommandés selon ses goûts. La taille des images de films met en évidence les films ayant la plus grande probabilité de plaire à l'utilisateur, c'est à dire ceux ayant un haut score lors de la prédiction (une alternative à ce système est de simplement indiquer le pourcentage de chance que l'utilisateur aime le film proposé, sans modifier la taille des images). Des estampilles en haut à droite des images de films peuvent être présent et indiquent soit un coup de cœur de la communauté Twitter (icône cœur), soit un film populaire sur Twitter, c'est à dire un film dont on parle beaucoup sur Twitter mais pas forcément en bien (icône Twitter).<br />
<br />
[[Image:Conception-VueRecommandations.png|900px|center]]<br />
<br />
==Charte graphique==<br />
<br />
La charte graphique à été sélectionné via le site [https://www.materialpalette.com/teal/amber'''Material Design'''].<br />
<br />
<br />
[[Image:CharteGraphique.png|800px|center]]<br />
<br />
<br />
==Logo==<br />
<br />
Le logo de l'application à été crée via le logiciel Gimp en respectant la charte graphique présélectionné.<br />
<br />
[[Image:LogoDeepMovies.png|400px|center]]</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=SRS_-_Recommandation_intelligente_de_films&diff=34515SRS - Recommandation intelligente de films2017-03-14T08:58:20Z<p>Coralie.Rachex: /* Evolutions potentielles du produit */</p>
<hr />
<div>Voici la fiche SRS du projet Recommandation intelligente de films.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
=Introduction =<br />
Qui n'a pas rêvé d'avoir une liste de suggestion de films correspondant à ses goûts cinématographiques ? Grâce à un système de réseaux neuronaux et d'une base de données conséquente de films, le système proposera une liste de suggestions de films personnalisée pour l'utilisateur. Le modèle créé sur une base de données statique pourra alors être affiné en temps réel grâce aux nouvelles opinions exprimées par l’utilisateur et tenir compte de la popularité et avis récemment exprimés dans le flux Twitter.<br />
<br />
==But du document ==<br />
Le but de ce document SRS est de fournir une vue d'ensemble détaillée de notre système logiciel, ses paramètres et buts. Ce document décrit le public cible du projet et son interface utilisateur, ainsi que les spécifications du logiciel. Ce document est destiné tant aux utilisateurs qu'aux développeurs du logiciel.<br />
<br />
==Objectif du projet ==<br />
Beaucoup d'algorithmes ont été conçus dans le but de recommander des films en fonction des goûts utilisateurs. Beaucoup d'entre eux sont basés sur des systèmes présupposant que les utilisateurs appréciant un même film, apprécient les mêmes films. La suggestion est ainsi réalisée en fonction des goûts d'autres utilisateurs et non pas en fonction des goûts propres de l'utilisateur.<br />
Avec l’essor de l'intelligence artificielle et des réseaux neuronaux, de nouveaux outils émergent afin de mieux modéliser les comportements et les goûts humains. Le but de ce projet est d'utiliser l'apprentissage machine afin d'améliorer les systèmes de recommandation cinématographiques, en les personnalisant totalement en fonction des goûts de l'utilisateur.<br />
<br />
== Définitions, acronymes et abréviations ==<br />
* Deep Learning : ensemble de méthodes d'apprentissage automatiques visant à modéliser avec un haut niveau d’abstraction un ensemble de données.<br />
* Git : logiciel de gestion de versions décentralisé<br />
<br />
== Références ==<br />
* http://air.imag.fr/index.php/SRS<br />
* http://www.cs.st-andrews.ac.uk/~ifs/Books/SE9/Presentations/PPTX/Ch4.pptx<br />
* http://en.wikipedia.org/wiki/Software_requirements_specification<br />
* [http://www.cse.msu.edu/~chengb/RE-491/Papers/IEEE-SRS-practice.pdf IEEE Recommended Practice for Software Requirements Specifications IEEE Std 830-1998]<br />
<br />
==Portée du produit ==<br />
Le produit est destiné aux utilisateurs désireux d'obtenir automatiquement des recommandations de films en fonction de leurs goûts. L'application sera plus efficace pour des cinéphiles annotant un grand nombre de films, puisque les modèles d'apprentissage sont plus précis lorsque nous possédons un grands nombres de données d'apprentissage. Toutefois, notre produit à la prétention de pouvoir être utilisé par un internaute lambda, sans condition de connaissances cinématographiques.<br />
<br />
=Description générale=<br />
<br />
==Le but du produit==<br />
Le produit doit permettre à l'utilisateur d'obtenir des recommandations intelligentes de films en fonction des films qu'il a appréciés et de ceux qu'il n'a pas appréciés. Cette recommandation doit tenir compte de la proximité des films les uns par rapport aux autres en terme de genre, synopsie, acteurs, réalisateurs, etc. Mais doit également tenir compte de la popularité des films et des tendances actuelles grâce à l'analyse en temps réel des flux Twitter.<br />
<br />
== Structure de l'application ==<br />
Le schéma de la structure de l'application est disponible [[Conception - Recommandation intelligente de films| '''ici''']].<br />
<br />
==Caractéristiques et contraintes utilisateurs==<br />
* Les utilisateurs doivent posséder une certaine culture cinématographique pour constituer une base d'apprentissage, en fonction des films qu'ils ont préalablement visionnés et de leur avis sur ceux-ci. <br />
* Aucune expertise informatique n'est requise, bien que des notions d'informatiques soient nécessaires, afin que l'utilisateur puisse s'inscrire et naviguer sur le site internet. <br />
* Une connexion internet est également nécessaire pour utiliser le produit.<br />
<br />
==Contraintes générales du système==<br />
<br />
* Le nombre de données d'entrainement est très variable selon les utilisateurs<br />
* Utilisation de la technologie TensorFlow (Keras)<br />
* Limitation du nombre de requête par l'API TDMBSimple, à 40 par seconde<br />
<br />
==Dépendances==<br />
* API de la base de donnée de film TMDB : https://developers.themoviedb.org/3/people<br />
* API REST 1.1 : https://dev.twitter.com/rest/public<br />
* API STREAMING : https://dev.twitter.com/streaming/overview<br />
<br />
=Exigences fonctionelles=<br />
<br />
==Conception de l'interface du système==<br />
Le dossier de conception de l'interface est disponible [[Conception de l'interface - Recommandation intelligente de films|'''ici''']]<br />
<br />
== Fonctionnalités ==<br />
<br />
La liste des fonctionnalités est disponible [https://docs.google.com/spreadsheets/d/1LSg5gTqY8aYSFziu34ActGsZ0cR5aUQ3xD48CJBQM3s/edit?usp=sharing '''ici''']<br />
<br />
=Exigences de performance=<br />
<br />
* '''Facilité de prise en main :''' Le logiciel doit être facile à prendre en main pour un utilisateur non expert et agréable à utiliser pour un utilisateur expert.<br />
* '''Temps de réponse :''' Le produit doit avoir un temps de réponses réduit et quasiment constant ou alors avertir l'utilisateur en cas de délais de traitement. Ces délais de traitement doivent être réduit au maximum pour tenir sur le time-out d'attente de réponse à une réquête client.<br />
* '''Sécurité et robustesse / Gestion des erreurs :''' Le logiciel est capable d'éviter ou de faire face aux événements indésirables, sans intervention humaine. Le système doit fonctionner continuellement malgré les erreurs, du moment qu'elles ne remettent pas en cause son bon fonctionnement. Une erreur grave doit cependant provoquer l'arrêt du service, pour ne pas compromettre l'intégrité du système.<br />
* '''Précision :''' Le modèle de prédiction doit être assez fiable pour prédire correctement un nombre conséquent de films (précision supérieure à 70%).<br />
<br />
=Evolutions potentielles du produit=<br />
<br />
* '''Multi serveurs :''' Pour être pleinement fonctionnel, le produit devra être déployé sur plusieurs serveurs pour résister à la charge. <br />
* '''Basculement sur le nouveau modèle :''' Une fois le nombre d'utilisateur suffisant, nous pourrons basculer complètement l'apprentissage sur notre modèle "factorisation machine". Ceci permettra d'avoir un unique modèle pour l'ensemble des utilisateurs que nous ne ré-entrainerons qu'une seule fois par jours. L'intérêt est de réduire le nombre de modèles enregistrés sur le serveur de fichiers ainsi que leur mises à jours, permettant ainsi de mieux résister à l'augmentation de la charge utilisateur. L'autre intérêt majeure est que cela augmentera notre précision de prédiction.<br />
* '''Amélioration du nouveau modèle :''' Une fois le modèle mis en place et le nombre de données suffisant, nous pourrons améliorer sa précision en prenant en compte des données utilisateurs ainsi que des données sur les films afin d'affiner notre classification et donc nos prédictions.<br />
* '''Distribution de l'apprentissage :''' Avec le nouveau modèle, l'apprentissage machine va devenir très long car le nombre de données d'entrainement va augmenter exponentiellement avec le nombre d'utilisateurs. La distribution de l'algorithme d'apprentissage prendra donc tout son sens pour maintenir un temps de réponse convenable.<br />
* '''Remplacer l'API TMDB :''' Pour supporter la charge nous devons nous abstraire de la limitation de requêtes imposée par TMDB. La méthode la plus simple consisterait à charger le contenu de TMDB sur un de nos serveur et à le mettre à jours tous les jours.<br />
<br />
=Appendices=<br />
<br />
==Bibliographie==<br />
<br />
=== Articles ===<br />
<br />
===== Systèmes de recommandation=====<br />
* [http://benanne.github.io/2014/08/05/spotify-cnns.html#contentbased'''Recommending music on Spotify with deep learning''']<br />
* [https://static.googleusercontent.com/media/research.google.com/fr//pubs/archive/45530.pdf'''Deep Neural Networks for YouTube Recommendations''']<br />
* [https://www.atala.org/IMG/pdf/1-Poirier-TAL51-3.pdf'''De la classification d’opinions à la recommandation''']<br />
* [http://blog.richardweiss.org/2016/09/25/movie-embeddings.html'''Recommending movies with deep learning''']<br />
<br />
===== Articles sur l'analyse de sentiments=====<br />
* [http://imu.universite-lyon.fr/wp-content/uploads/2015/07/me%CC%81moire-Ahmed-REMADNA.pdf'''Classification des posts sur des réseaux sociaux''']<br />
* [http://www.volodenkov.com/post/keras-lstm-sentiment-p1/'''Sentiment analysis with RNN in Keras''']<br />
* [http://www.wildml.com/2015/12/implementing-a-cnn-for-text-classification-in-tensorflow/'''Implementing a CNN for Text Classification in TensorFlow''']<br />
<br />
=== Documentations ===<br />
<br />
===== Keras =====<br />
* [http://machinelearningmastery.com/introduction-python-deep-learning-library-keras/'''Introduction to Python Deep Learning with Keras''']<br />
* [http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/'''Develop Your First Neural Network in Python With Keras Step-By-Step''']<br />
<br />
===== API TMDB =====<br />
* [https://developers.themoviedb.org/3/people'''The movie data base for developers''']<br />
<br />
===== Django & AngularJS =====<br />
* [https://thinkster.io/django-angularjs-tutorial#rendering-post-objects'''Django angularJS tutorial''']<br />
* [https://material.angularjs.org/latest/'''Angular Material''']<br />
<br />
===== DOC2VEC =====<br />
* [https://rare-technologies.com/doc2vec-tutorial/'''Doc2vec tutorial''']<br />
* [http://linanqiu.github.io/2015/10/07/word2vec-sentiment/'''Sentiment Analysis Using Doc2Vec''']<br />
<br />
===== Api python - Flask =====<br />
* [http://flask.pocoo.org/docs/0.12/quickstart/#accessing-request-data'''Flask quickstart''']<br />
<br />
===== Grid'5000 =====<br />
* [https://www.grid5000.fr/mediawiki/index.php/Grid5000:Get_an_account'''Grid'5000 account''']<br />
<br />
=== Codes sources ===<br />
<br />
* [https://github.com/ririw/ririw.github.io/blob/master/assets/Recommending%20movies.ipynb'''Recommending movies''']<br />
* [https://github.com/nisarg64/Sentiment-Analysis-Word2Vec'''Sentiment-Analysis-Word2Vec''']</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=SRS_-_Recommandation_intelligente_de_films&diff=34514SRS - Recommandation intelligente de films2017-03-14T08:40:17Z<p>Coralie.Rachex: /* Objectif du projet */</p>
<hr />
<div>Voici la fiche SRS du projet Recommandation intelligente de films.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
=Introduction =<br />
Qui n'a pas rêvé d'avoir une liste de suggestion de films correspondant à ses goûts cinématographiques ? Grâce à un système de réseaux neuronaux et d'une base de données conséquente de films, le système proposera une liste de suggestions de films personnalisée pour l'utilisateur. Le modèle créé sur une base de données statique pourra alors être affiné en temps réel grâce aux nouvelles opinions exprimées par l’utilisateur et tenir compte de la popularité et avis récemment exprimés dans le flux Twitter.<br />
<br />
==But du document ==<br />
Le but de ce document SRS est de fournir une vue d'ensemble détaillée de notre système logiciel, ses paramètres et buts. Ce document décrit le public cible du projet et son interface utilisateur, ainsi que les spécifications du logiciel. Ce document est destiné tant aux utilisateurs qu'aux développeurs du logiciel.<br />
<br />
==Objectif du projet ==<br />
Beaucoup d'algorithmes ont été conçus dans le but de recommander des films en fonction des goûts utilisateurs. Beaucoup d'entre eux sont basés sur des systèmes présupposant que les utilisateurs appréciant un même film, apprécient les mêmes films. La suggestion est ainsi réalisée en fonction des goûts d'autres utilisateurs et non pas en fonction des goûts propres de l'utilisateur.<br />
Avec l’essor de l'intelligence artificielle et des réseaux neuronaux, de nouveaux outils émergent afin de mieux modéliser les comportements et les goûts humains. Le but de ce projet est d'utiliser l'apprentissage machine afin d'améliorer les systèmes de recommandation cinématographiques, en les personnalisant totalement en fonction des goûts de l'utilisateur.<br />
<br />
== Définitions, acronymes et abréviations ==<br />
* Deep Learning : ensemble de méthodes d'apprentissage automatiques visant à modéliser avec un haut niveau d’abstraction un ensemble de données.<br />
* Git : logiciel de gestion de versions décentralisé<br />
<br />
== Références ==<br />
* http://air.imag.fr/index.php/SRS<br />
* http://www.cs.st-andrews.ac.uk/~ifs/Books/SE9/Presentations/PPTX/Ch4.pptx<br />
* http://en.wikipedia.org/wiki/Software_requirements_specification<br />
* [http://www.cse.msu.edu/~chengb/RE-491/Papers/IEEE-SRS-practice.pdf IEEE Recommended Practice for Software Requirements Specifications IEEE Std 830-1998]<br />
<br />
==Portée du produit ==<br />
Le produit est destiné aux utilisateurs désireux d'obtenir automatiquement des recommandations de films en fonction de leurs goûts. L'application sera plus efficace pour des cinéphiles annotant un grand nombre de films, puisque les modèles d'apprentissage sont plus précis lorsque nous possédons un grands nombres de données d'apprentissage. Toutefois, notre produit à la prétention de pouvoir être utilisé par un internaute lambda, sans condition de connaissances cinématographiques.<br />
<br />
=Description générale=<br />
<br />
==Le but du produit==<br />
Le produit doit permettre à l'utilisateur d'obtenir des recommandations intelligentes de films en fonction des films qu'il a appréciés et de ceux qu'il n'a pas appréciés. Cette recommandation doit tenir compte de la proximité des films les uns par rapport aux autres en terme de genre, synopsie, acteurs, réalisateurs, etc. Mais doit également tenir compte de la popularité des films et des tendances actuelles grâce à l'analyse en temps réel des flux Twitter.<br />
<br />
== Structure de l'application ==<br />
Le schéma de la structure de l'application est disponible [[Conception - Recommandation intelligente de films| '''ici''']].<br />
<br />
==Caractéristiques et contraintes utilisateurs==<br />
* Les utilisateurs doivent posséder une certaine culture cinématographique pour constituer une base d'apprentissage, en fonction des films qu'ils ont préalablement visionnés et de leur avis sur ceux-ci. <br />
* Aucune expertise informatique n'est requise, bien que des notions d'informatiques soient nécessaires, afin que l'utilisateur puisse s'inscrire et naviguer sur le site internet. <br />
* Une connexion internet est également nécessaire pour utiliser le produit.<br />
<br />
==Contraintes générales du système==<br />
<br />
* Le nombre de données d'entrainement est très variable selon les utilisateurs<br />
* Utilisation de la technologie TensorFlow (Keras)<br />
* Limitation du nombre de requête par l'API TDMBSimple, à 40 par seconde<br />
<br />
==Dépendances==<br />
* API de la base de donnée de film TMDB : https://developers.themoviedb.org/3/people<br />
* API REST 1.1 : https://dev.twitter.com/rest/public<br />
* API STREAMING : https://dev.twitter.com/streaming/overview<br />
<br />
=Exigences fonctionelles=<br />
<br />
==Conception de l'interface du système==<br />
Le dossier de conception de l'interface est disponible [[Conception de l'interface - Recommandation intelligente de films|'''ici''']]<br />
<br />
== Fonctionnalités ==<br />
<br />
La liste des fonctionnalités est disponible [https://docs.google.com/spreadsheets/d/1LSg5gTqY8aYSFziu34ActGsZ0cR5aUQ3xD48CJBQM3s/edit?usp=sharing '''ici''']<br />
<br />
=Exigences de performance=<br />
<br />
* '''Facilité de prise en main :''' Le logiciel doit être facile à prendre en main pour un utilisateur non expert et agréable à utiliser pour un utilisateur expert.<br />
* '''Temps de réponse :''' Le produit doit avoir un temps de réponses réduit et quasiment constant ou alors avertir l'utilisateur en cas de délais de traitement. Ces délais de traitement doivent être réduit au maximum pour tenir sur le time-out d'attente de réponse à une réquête client.<br />
* '''Sécurité et robustesse / Gestion des erreurs :''' Le logiciel est capable d'éviter ou de faire face aux événements indésirables, sans intervention humaine. Le système doit fonctionner continuellement malgré les erreurs, du moment qu'elles ne remettent pas en cause son bon fonctionnement. Une erreur grave doit cependant provoquer l'arrêt du service, pour ne pas compromettre l'intégrité du système.<br />
* '''Précision :''' Le modèle de prédiction doit être assez fiable pour prédire correctement un nombre conséquent de films (précision supérieure à 70%).<br />
<br />
=Evolutions potentielles du produit=<br />
<br />
* '''Multi serveurs :''' Pour être pleinement fonctionnel, le produit devra être déployé sur plusieurs serveurs pour résister à la charge. <br />
* '''Basculement sur le nouveau modèle :''' Une fois le nombre d'utilisateur suffisant, nous pourrons basculer complètement l'apprentissage sur notre modèle "factorisation machine". Ceci permettra d'avoir un unique modèle pour l'ensemble des utilisateurs que nous ne ré-entrainerons qu'une seule fois par jours. L'intérêt est de réduire le nombre de modèles enregistrés sur le serveur de fichiers ainsi que leur mises à jours, permettant ainsi de mieux résister à l'augmentation de la charge utilisateur. L'autre intérêt majeure est que cela augmentera notre précision de prédiction.<br />
* '''Amélioration du nouveau modèle :''' Une fois le modèle mis en place et le nombre de données suffisant, nous pourrons améliorer sa précision en prenant en compte des données utilisateurs ainsi que des données sur les films afin d'affiner notre classification et donc nos prédictions.<br />
* '''Distribution de l'apprentissage :''' Avec le nouveau modèle, l'apprentissage machine va devenir très long car le nombre de données d'entrainement va augmenter exponentiellement avec le nombre d'utilisateurs. La distribution de l'algorithme d'apprentissage prendra donc tout son sens pour maintenir un temps de réponse convenable.<br />
<br />
=Appendices=<br />
<br />
==Bibliographie==<br />
<br />
=== Articles ===<br />
<br />
===== Systèmes de recommandation=====<br />
* [http://benanne.github.io/2014/08/05/spotify-cnns.html#contentbased'''Recommending music on Spotify with deep learning''']<br />
* [https://static.googleusercontent.com/media/research.google.com/fr//pubs/archive/45530.pdf'''Deep Neural Networks for YouTube Recommendations''']<br />
* [https://www.atala.org/IMG/pdf/1-Poirier-TAL51-3.pdf'''De la classification d’opinions à la recommandation''']<br />
* [http://blog.richardweiss.org/2016/09/25/movie-embeddings.html'''Recommending movies with deep learning''']<br />
<br />
===== Articles sur l'analyse de sentiments=====<br />
* [http://imu.universite-lyon.fr/wp-content/uploads/2015/07/me%CC%81moire-Ahmed-REMADNA.pdf'''Classification des posts sur des réseaux sociaux''']<br />
* [http://www.volodenkov.com/post/keras-lstm-sentiment-p1/'''Sentiment analysis with RNN in Keras''']<br />
* [http://www.wildml.com/2015/12/implementing-a-cnn-for-text-classification-in-tensorflow/'''Implementing a CNN for Text Classification in TensorFlow''']<br />
<br />
=== Documentations ===<br />
<br />
===== Keras =====<br />
* [http://machinelearningmastery.com/introduction-python-deep-learning-library-keras/'''Introduction to Python Deep Learning with Keras''']<br />
* [http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/'''Develop Your First Neural Network in Python With Keras Step-By-Step''']<br />
<br />
===== API TMDB =====<br />
* [https://developers.themoviedb.org/3/people'''The movie data base for developers''']<br />
<br />
===== Django & AngularJS =====<br />
* [https://thinkster.io/django-angularjs-tutorial#rendering-post-objects'''Django angularJS tutorial''']<br />
* [https://material.angularjs.org/latest/'''Angular Material''']<br />
<br />
===== DOC2VEC =====<br />
* [https://rare-technologies.com/doc2vec-tutorial/'''Doc2vec tutorial''']<br />
* [http://linanqiu.github.io/2015/10/07/word2vec-sentiment/'''Sentiment Analysis Using Doc2Vec''']<br />
<br />
===== Api python - Flask =====<br />
* [http://flask.pocoo.org/docs/0.12/quickstart/#accessing-request-data'''Flask quickstart''']<br />
<br />
===== Grid'5000 =====<br />
* [https://www.grid5000.fr/mediawiki/index.php/Grid5000:Get_an_account'''Grid'5000 account''']<br />
<br />
=== Codes sources ===<br />
<br />
* [https://github.com/ririw/ririw.github.io/blob/master/assets/Recommending%20movies.ipynb'''Recommending movies''']<br />
* [https://github.com/nisarg64/Sentiment-Analysis-Word2Vec'''Sentiment-Analysis-Word2Vec''']</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=SRS_-_Recommandation_intelligente_de_films&diff=34513SRS - Recommandation intelligente de films2017-03-14T08:39:40Z<p>Coralie.Rachex: /* Objectif du projet */</p>
<hr />
<div>Voici la fiche SRS du projet Recommandation intelligente de films.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
=Introduction =<br />
Qui n'a pas rêvé d'avoir une liste de suggestion de films correspondant à ses goûts cinématographiques ? Grâce à un système de réseaux neuronaux et d'une base de données conséquente de films, le système proposera une liste de suggestions de films personnalisée pour l'utilisateur. Le modèle créé sur une base de données statique pourra alors être affiné en temps réel grâce aux nouvelles opinions exprimées par l’utilisateur et tenir compte de la popularité et avis récemment exprimés dans le flux Twitter.<br />
<br />
==But du document ==<br />
Le but de ce document SRS est de fournir une vue d'ensemble détaillée de notre système logiciel, ses paramètres et buts. Ce document décrit le public cible du projet et son interface utilisateur, ainsi que les spécifications du logiciel. Ce document est destiné tant aux utilisateurs qu'aux développeurs du logiciel.<br />
<br />
==Objectif du projet ==<br />
Beaucoup d'algorithmes ont été conçus dans le but de recommander des films en fonction des goûts utilisateurs. Beaucoup d'entre eux sont basés sur des systèmes présupposant que les utilisateurs appréciant un même film, apprécient les mêmes films. La suggestion est ainsi réalisée en fonction des goûts d'autres utilisateurs et non pas en fonction des goûts propres de l'utilisateur.<br />
Avec l’essor de l'intelligence artificielle et des réseaux neuronaux, de nouveaux outils émergent afin de mieux modéliser les comportements et les goûts humains. Le but de ce projet est d'utiliser l'apprentissage machine afin d'améliorer les systèmes de recommandation cinématographiques, afin de les personnaliser totalement en fonction des goûts de l'utilisateur.<br />
<br />
== Définitions, acronymes et abréviations ==<br />
* Deep Learning : ensemble de méthodes d'apprentissage automatiques visant à modéliser avec un haut niveau d’abstraction un ensemble de données.<br />
* Git : logiciel de gestion de versions décentralisé<br />
<br />
== Références ==<br />
* http://air.imag.fr/index.php/SRS<br />
* http://www.cs.st-andrews.ac.uk/~ifs/Books/SE9/Presentations/PPTX/Ch4.pptx<br />
* http://en.wikipedia.org/wiki/Software_requirements_specification<br />
* [http://www.cse.msu.edu/~chengb/RE-491/Papers/IEEE-SRS-practice.pdf IEEE Recommended Practice for Software Requirements Specifications IEEE Std 830-1998]<br />
<br />
==Portée du produit ==<br />
Le produit est destiné aux utilisateurs désireux d'obtenir automatiquement des recommandations de films en fonction de leurs goûts. L'application sera plus efficace pour des cinéphiles annotant un grand nombre de films, puisque les modèles d'apprentissage sont plus précis lorsque nous possédons un grands nombres de données d'apprentissage. Toutefois, notre produit à la prétention de pouvoir être utilisé par un internaute lambda, sans condition de connaissances cinématographiques.<br />
<br />
=Description générale=<br />
<br />
==Le but du produit==<br />
Le produit doit permettre à l'utilisateur d'obtenir des recommandations intelligentes de films en fonction des films qu'il a appréciés et de ceux qu'il n'a pas appréciés. Cette recommandation doit tenir compte de la proximité des films les uns par rapport aux autres en terme de genre, synopsie, acteurs, réalisateurs, etc. Mais doit également tenir compte de la popularité des films et des tendances actuelles grâce à l'analyse en temps réel des flux Twitter.<br />
<br />
== Structure de l'application ==<br />
Le schéma de la structure de l'application est disponible [[Conception - Recommandation intelligente de films| '''ici''']].<br />
<br />
==Caractéristiques et contraintes utilisateurs==<br />
* Les utilisateurs doivent posséder une certaine culture cinématographique pour constituer une base d'apprentissage, en fonction des films qu'ils ont préalablement visionnés et de leur avis sur ceux-ci. <br />
* Aucune expertise informatique n'est requise, bien que des notions d'informatiques soient nécessaires, afin que l'utilisateur puisse s'inscrire et naviguer sur le site internet. <br />
* Une connexion internet est également nécessaire pour utiliser le produit.<br />
<br />
==Contraintes générales du système==<br />
<br />
* Le nombre de données d'entrainement est très variable selon les utilisateurs<br />
* Utilisation de la technologie TensorFlow (Keras)<br />
* Limitation du nombre de requête par l'API TDMBSimple, à 40 par seconde<br />
<br />
==Dépendances==<br />
* API de la base de donnée de film TMDB : https://developers.themoviedb.org/3/people<br />
* API REST 1.1 : https://dev.twitter.com/rest/public<br />
* API STREAMING : https://dev.twitter.com/streaming/overview<br />
<br />
=Exigences fonctionelles=<br />
<br />
==Conception de l'interface du système==<br />
Le dossier de conception de l'interface est disponible [[Conception de l'interface - Recommandation intelligente de films|'''ici''']]<br />
<br />
== Fonctionnalités ==<br />
<br />
La liste des fonctionnalités est disponible [https://docs.google.com/spreadsheets/d/1LSg5gTqY8aYSFziu34ActGsZ0cR5aUQ3xD48CJBQM3s/edit?usp=sharing '''ici''']<br />
<br />
=Exigences de performance=<br />
<br />
* '''Facilité de prise en main :''' Le logiciel doit être facile à prendre en main pour un utilisateur non expert et agréable à utiliser pour un utilisateur expert.<br />
* '''Temps de réponse :''' Le produit doit avoir un temps de réponses réduit et quasiment constant ou alors avertir l'utilisateur en cas de délais de traitement. Ces délais de traitement doivent être réduit au maximum pour tenir sur le time-out d'attente de réponse à une réquête client.<br />
* '''Sécurité et robustesse / Gestion des erreurs :''' Le logiciel est capable d'éviter ou de faire face aux événements indésirables, sans intervention humaine. Le système doit fonctionner continuellement malgré les erreurs, du moment qu'elles ne remettent pas en cause son bon fonctionnement. Une erreur grave doit cependant provoquer l'arrêt du service, pour ne pas compromettre l'intégrité du système.<br />
* '''Précision :''' Le modèle de prédiction doit être assez fiable pour prédire correctement un nombre conséquent de films (précision supérieure à 70%).<br />
<br />
=Evolutions potentielles du produit=<br />
<br />
* '''Multi serveurs :''' Pour être pleinement fonctionnel, le produit devra être déployé sur plusieurs serveurs pour résister à la charge. <br />
* '''Basculement sur le nouveau modèle :''' Une fois le nombre d'utilisateur suffisant, nous pourrons basculer complètement l'apprentissage sur notre modèle "factorisation machine". Ceci permettra d'avoir un unique modèle pour l'ensemble des utilisateurs que nous ne ré-entrainerons qu'une seule fois par jours. L'intérêt est de réduire le nombre de modèles enregistrés sur le serveur de fichiers ainsi que leur mises à jours, permettant ainsi de mieux résister à l'augmentation de la charge utilisateur. L'autre intérêt majeure est que cela augmentera notre précision de prédiction.<br />
* '''Amélioration du nouveau modèle :''' Une fois le modèle mis en place et le nombre de données suffisant, nous pourrons améliorer sa précision en prenant en compte des données utilisateurs ainsi que des données sur les films afin d'affiner notre classification et donc nos prédictions.<br />
* '''Distribution de l'apprentissage :''' Avec le nouveau modèle, l'apprentissage machine va devenir très long car le nombre de données d'entrainement va augmenter exponentiellement avec le nombre d'utilisateurs. La distribution de l'algorithme d'apprentissage prendra donc tout son sens pour maintenir un temps de réponse convenable.<br />
<br />
=Appendices=<br />
<br />
==Bibliographie==<br />
<br />
=== Articles ===<br />
<br />
===== Systèmes de recommandation=====<br />
* [http://benanne.github.io/2014/08/05/spotify-cnns.html#contentbased'''Recommending music on Spotify with deep learning''']<br />
* [https://static.googleusercontent.com/media/research.google.com/fr//pubs/archive/45530.pdf'''Deep Neural Networks for YouTube Recommendations''']<br />
* [https://www.atala.org/IMG/pdf/1-Poirier-TAL51-3.pdf'''De la classification d’opinions à la recommandation''']<br />
* [http://blog.richardweiss.org/2016/09/25/movie-embeddings.html'''Recommending movies with deep learning''']<br />
<br />
===== Articles sur l'analyse de sentiments=====<br />
* [http://imu.universite-lyon.fr/wp-content/uploads/2015/07/me%CC%81moire-Ahmed-REMADNA.pdf'''Classification des posts sur des réseaux sociaux''']<br />
* [http://www.volodenkov.com/post/keras-lstm-sentiment-p1/'''Sentiment analysis with RNN in Keras''']<br />
* [http://www.wildml.com/2015/12/implementing-a-cnn-for-text-classification-in-tensorflow/'''Implementing a CNN for Text Classification in TensorFlow''']<br />
<br />
=== Documentations ===<br />
<br />
===== Keras =====<br />
* [http://machinelearningmastery.com/introduction-python-deep-learning-library-keras/'''Introduction to Python Deep Learning with Keras''']<br />
* [http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/'''Develop Your First Neural Network in Python With Keras Step-By-Step''']<br />
<br />
===== API TMDB =====<br />
* [https://developers.themoviedb.org/3/people'''The movie data base for developers''']<br />
<br />
===== Django & AngularJS =====<br />
* [https://thinkster.io/django-angularjs-tutorial#rendering-post-objects'''Django angularJS tutorial''']<br />
* [https://material.angularjs.org/latest/'''Angular Material''']<br />
<br />
===== DOC2VEC =====<br />
* [https://rare-technologies.com/doc2vec-tutorial/'''Doc2vec tutorial''']<br />
* [http://linanqiu.github.io/2015/10/07/word2vec-sentiment/'''Sentiment Analysis Using Doc2Vec''']<br />
<br />
===== Api python - Flask =====<br />
* [http://flask.pocoo.org/docs/0.12/quickstart/#accessing-request-data'''Flask quickstart''']<br />
<br />
===== Grid'5000 =====<br />
* [https://www.grid5000.fr/mediawiki/index.php/Grid5000:Get_an_account'''Grid'5000 account''']<br />
<br />
=== Codes sources ===<br />
<br />
* [https://github.com/ririw/ririw.github.io/blob/master/assets/Recommending%20movies.ipynb'''Recommending movies''']<br />
* [https://github.com/nisarg64/Sentiment-Analysis-Word2Vec'''Sentiment-Analysis-Word2Vec''']</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=SRS_-_Recommandation_intelligente_de_films&diff=34512SRS - Recommandation intelligente de films2017-03-14T08:38:04Z<p>Coralie.Rachex: /* Introduction */</p>
<hr />
<div>Voici la fiche SRS du projet Recommandation intelligente de films.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
=Introduction =<br />
Qui n'a pas rêvé d'avoir une liste de suggestion de films correspondant à ses goûts cinématographiques ? Grâce à un système de réseaux neuronaux et d'une base de données conséquente de films, le système proposera une liste de suggestions de films personnalisée pour l'utilisateur. Le modèle créé sur une base de données statique pourra alors être affiné en temps réel grâce aux nouvelles opinions exprimées par l’utilisateur et tenir compte de la popularité et avis récemment exprimés dans le flux Twitter.<br />
<br />
==But du document ==<br />
Le but de ce document SRS est de fournir une vue d'ensemble détaillée de notre système logiciel, ses paramètres et buts. Ce document décrit le public cible du projet et son interface utilisateur, ainsi que les spécifications du logiciel. Ce document est destiné tant aux utilisateurs qu'aux développeurs du logiciel.<br />
<br />
==Objectif du projet ==<br />
Beaucoup d'algorithmes ont été conçus dans le but de recommander des films en fonction des goûts utilisateurs. Beaucoup d'entre eux sont basés sur des systèmes présupposant que les utilisateurs appréciant un même film sont susceptibles d'apprécier les mêmes films. La suggestion est ainsi réalisée en fonction des goûts d'autres utilisateurs et non pas en fonction des goûts propres de l'utilisateur.<br />
Avec l’essor de l'intelligence artificielle et des réseaux neuronaux, de nouveaux outils émergent afin de mieux modéliser les comportements et les goûts humains. Le but de ce projet est d'utiliser l'apprentissage machine afin d'améliorer les systèmes de recommandation cinématographiques, afin de les personnaliser totalement en fonction des goûts de l'utilisateur.<br />
<br />
== Définitions, acronymes et abréviations ==<br />
* Deep Learning : ensemble de méthodes d'apprentissage automatiques visant à modéliser avec un haut niveau d’abstraction un ensemble de données.<br />
* Git : logiciel de gestion de versions décentralisé<br />
<br />
== Références ==<br />
* http://air.imag.fr/index.php/SRS<br />
* http://www.cs.st-andrews.ac.uk/~ifs/Books/SE9/Presentations/PPTX/Ch4.pptx<br />
* http://en.wikipedia.org/wiki/Software_requirements_specification<br />
* [http://www.cse.msu.edu/~chengb/RE-491/Papers/IEEE-SRS-practice.pdf IEEE Recommended Practice for Software Requirements Specifications IEEE Std 830-1998]<br />
<br />
==Portée du produit ==<br />
Le produit est destiné aux utilisateurs désireux d'obtenir automatiquement des recommandations de films en fonction de leurs goûts. L'application sera plus efficace pour des cinéphiles annotant un grand nombre de films, puisque les modèles d'apprentissage sont plus précis lorsque nous possédons un grands nombres de données d'apprentissage. Toutefois, notre produit à la prétention de pouvoir être utilisé par un internaute lambda, sans condition de connaissances cinématographiques.<br />
<br />
=Description générale=<br />
<br />
==Le but du produit==<br />
Le produit doit permettre à l'utilisateur d'obtenir des recommandations intelligentes de films en fonction des films qu'il a appréciés et de ceux qu'il n'a pas appréciés. Cette recommandation doit tenir compte de la proximité des films les uns par rapport aux autres en terme de genre, synopsie, acteurs, réalisateurs, etc. Mais doit également tenir compte de la popularité des films et des tendances actuelles grâce à l'analyse en temps réel des flux Twitter.<br />
<br />
== Structure de l'application ==<br />
Le schéma de la structure de l'application est disponible [[Conception - Recommandation intelligente de films| '''ici''']].<br />
<br />
==Caractéristiques et contraintes utilisateurs==<br />
* Les utilisateurs doivent posséder une certaine culture cinématographique pour constituer une base d'apprentissage, en fonction des films qu'ils ont préalablement visionnés et de leur avis sur ceux-ci. <br />
* Aucune expertise informatique n'est requise, bien que des notions d'informatiques soient nécessaires, afin que l'utilisateur puisse s'inscrire et naviguer sur le site internet. <br />
* Une connexion internet est également nécessaire pour utiliser le produit.<br />
<br />
==Contraintes générales du système==<br />
<br />
* Le nombre de données d'entrainement est très variable selon les utilisateurs<br />
* Utilisation de la technologie TensorFlow (Keras)<br />
* Limitation du nombre de requête par l'API TDMBSimple, à 40 par seconde<br />
<br />
==Dépendances==<br />
* API de la base de donnée de film TMDB : https://developers.themoviedb.org/3/people<br />
* API REST 1.1 : https://dev.twitter.com/rest/public<br />
* API STREAMING : https://dev.twitter.com/streaming/overview<br />
<br />
=Exigences fonctionelles=<br />
<br />
==Conception de l'interface du système==<br />
Le dossier de conception de l'interface est disponible [[Conception de l'interface - Recommandation intelligente de films|'''ici''']]<br />
<br />
== Fonctionnalités ==<br />
<br />
La liste des fonctionnalités est disponible [https://docs.google.com/spreadsheets/d/1LSg5gTqY8aYSFziu34ActGsZ0cR5aUQ3xD48CJBQM3s/edit?usp=sharing '''ici''']<br />
<br />
=Exigences de performance=<br />
<br />
* '''Facilité de prise en main :''' Le logiciel doit être facile à prendre en main pour un utilisateur non expert et agréable à utiliser pour un utilisateur expert.<br />
* '''Temps de réponse :''' Le produit doit avoir un temps de réponses réduit et quasiment constant ou alors avertir l'utilisateur en cas de délais de traitement. Ces délais de traitement doivent être réduit au maximum pour tenir sur le time-out d'attente de réponse à une réquête client.<br />
* '''Sécurité et robustesse / Gestion des erreurs :''' Le logiciel est capable d'éviter ou de faire face aux événements indésirables, sans intervention humaine. Le système doit fonctionner continuellement malgré les erreurs, du moment qu'elles ne remettent pas en cause son bon fonctionnement. Une erreur grave doit cependant provoquer l'arrêt du service, pour ne pas compromettre l'intégrité du système.<br />
* '''Précision :''' Le modèle de prédiction doit être assez fiable pour prédire correctement un nombre conséquent de films (précision supérieure à 70%).<br />
<br />
=Evolutions potentielles du produit=<br />
<br />
* '''Multi serveurs :''' Pour être pleinement fonctionnel, le produit devra être déployé sur plusieurs serveurs pour résister à la charge. <br />
* '''Basculement sur le nouveau modèle :''' Une fois le nombre d'utilisateur suffisant, nous pourrons basculer complètement l'apprentissage sur notre modèle "factorisation machine". Ceci permettra d'avoir un unique modèle pour l'ensemble des utilisateurs que nous ne ré-entrainerons qu'une seule fois par jours. L'intérêt est de réduire le nombre de modèles enregistrés sur le serveur de fichiers ainsi que leur mises à jours, permettant ainsi de mieux résister à l'augmentation de la charge utilisateur. L'autre intérêt majeure est que cela augmentera notre précision de prédiction.<br />
* '''Amélioration du nouveau modèle :''' Une fois le modèle mis en place et le nombre de données suffisant, nous pourrons améliorer sa précision en prenant en compte des données utilisateurs ainsi que des données sur les films afin d'affiner notre classification et donc nos prédictions.<br />
* '''Distribution de l'apprentissage :''' Avec le nouveau modèle, l'apprentissage machine va devenir très long car le nombre de données d'entrainement va augmenter exponentiellement avec le nombre d'utilisateurs. La distribution de l'algorithme d'apprentissage prendra donc tout son sens pour maintenir un temps de réponse convenable.<br />
<br />
=Appendices=<br />
<br />
==Bibliographie==<br />
<br />
=== Articles ===<br />
<br />
===== Systèmes de recommandation=====<br />
* [http://benanne.github.io/2014/08/05/spotify-cnns.html#contentbased'''Recommending music on Spotify with deep learning''']<br />
* [https://static.googleusercontent.com/media/research.google.com/fr//pubs/archive/45530.pdf'''Deep Neural Networks for YouTube Recommendations''']<br />
* [https://www.atala.org/IMG/pdf/1-Poirier-TAL51-3.pdf'''De la classification d’opinions à la recommandation''']<br />
* [http://blog.richardweiss.org/2016/09/25/movie-embeddings.html'''Recommending movies with deep learning''']<br />
<br />
===== Articles sur l'analyse de sentiments=====<br />
* [http://imu.universite-lyon.fr/wp-content/uploads/2015/07/me%CC%81moire-Ahmed-REMADNA.pdf'''Classification des posts sur des réseaux sociaux''']<br />
* [http://www.volodenkov.com/post/keras-lstm-sentiment-p1/'''Sentiment analysis with RNN in Keras''']<br />
* [http://www.wildml.com/2015/12/implementing-a-cnn-for-text-classification-in-tensorflow/'''Implementing a CNN for Text Classification in TensorFlow''']<br />
<br />
=== Documentations ===<br />
<br />
===== Keras =====<br />
* [http://machinelearningmastery.com/introduction-python-deep-learning-library-keras/'''Introduction to Python Deep Learning with Keras''']<br />
* [http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/'''Develop Your First Neural Network in Python With Keras Step-By-Step''']<br />
<br />
===== API TMDB =====<br />
* [https://developers.themoviedb.org/3/people'''The movie data base for developers''']<br />
<br />
===== Django & AngularJS =====<br />
* [https://thinkster.io/django-angularjs-tutorial#rendering-post-objects'''Django angularJS tutorial''']<br />
* [https://material.angularjs.org/latest/'''Angular Material''']<br />
<br />
===== DOC2VEC =====<br />
* [https://rare-technologies.com/doc2vec-tutorial/'''Doc2vec tutorial''']<br />
* [http://linanqiu.github.io/2015/10/07/word2vec-sentiment/'''Sentiment Analysis Using Doc2Vec''']<br />
<br />
===== Api python - Flask =====<br />
* [http://flask.pocoo.org/docs/0.12/quickstart/#accessing-request-data'''Flask quickstart''']<br />
<br />
===== Grid'5000 =====<br />
* [https://www.grid5000.fr/mediawiki/index.php/Grid5000:Get_an_account'''Grid'5000 account''']<br />
<br />
=== Codes sources ===<br />
<br />
* [https://github.com/ririw/ririw.github.io/blob/master/assets/Recommending%20movies.ipynb'''Recommending movies''']<br />
* [https://github.com/nisarg64/Sentiment-Analysis-Word2Vec'''Sentiment-Analysis-Word2Vec''']</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Conception_de_l%27interface_-_Recommandation_intelligente_de_films&diff=34501Conception de l'interface - Recommandation intelligente de films2017-03-13T16:05:25Z<p>Coralie.Rachex: /* Logo */</p>
<hr />
<div>Voici la fiche de conception de l'interface du projet 'Recommandation intelligente de films'.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
=Développement de la maquette du produit=<br />
<br />
<br />
==Différentes vues réalisées==<br />
<br />
===Améliorer les prédictions===<br />
<br />
Cette vue permet à l'utilisateur de rechercher un film en particulier ou de parcourir les pages afin de trouver des films à annoter. En cliquant sur le pouces vers le haut, l'utilisateur indique qu'il aime le film et en cliquant sur le pouce vers le bas, qu'il ne l'aime pas.<br />
<br />
[[Image:Conception-VueAmeliorerPrediction.png|900px|center]]<br />
<br />
===Films annotés===<br />
<br />
Cette vue permet à l'utilisateur de visionner le récapitulatif des films qu'il a déjà annoté. Il peut affiner le résultat en sélectionnant au choix tous les films annotés, uniquement les films qu'il à annoté positivement ou alors uniquement ceux qu'il à annoté négativement.<br />
<br />
[[Image:Conception-VueFilmsAnnotes.png|900px|center]]<br />
<br />
===Statistiques===<br />
<br />
Cette vue permet à l'utilisateur d'accéder aux statistiques sur ses films annotés. Par exemple, il pourra avoir le détail des genres qu'il aime ou n'aime pas, la durée moyenne des films aimés ou non aimés, etc.<br />
<br />
[[Image:Conception-VueStatistiques.png|900px|center]]<br />
<br />
===Recommandations===<br />
<br />
Cette vue permet à l'utilisateur de charger une liste de films recommandés selon ses goûts. La taille des images de films met en évidence les films ayant la plus grande probabilité de plaire à l'utilisateur, c'est à dire ceux ayant un haut score lors de la prédiction. Des estampilles en haut à droite des images de films peuvent être présent et indiquent soit un coup de cœur de la communauté Twitter (icône cœur), soit un film populaire sur Twitter, c'est à dire un film dont on parle beaucoup sur Twitter mais pas forcément en bien (icône Twitter).<br />
<br />
[[Image:Conception-VueRecommandations.png|900px|center]]<br />
<br />
==Charte graphique==<br />
<br />
La charte graphique à été sélectionné via le site [https://www.materialpalette.com/teal/amber'''Material Design'''].<br />
<br />
<br />
[[Image:CharteGraphique.png|800px|center]]<br />
<br />
<br />
==Logo==<br />
<br />
Le logo de l'application à été crée via le logiciel Gimp en respectant la charte graphique présélectionné.<br />
<br />
[[Image:LogoDeepMovies.png|400px|center]]</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Conception_de_l%27interface_-_Recommandation_intelligente_de_films&diff=34499Conception de l'interface - Recommandation intelligente de films2017-03-13T16:04:23Z<p>Coralie.Rachex: /* Recommandations */</p>
<hr />
<div>Voici la fiche de conception de l'interface du projet 'Recommandation intelligente de films'.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
=Développement de la maquette du produit=<br />
<br />
<br />
==Différentes vues réalisées==<br />
<br />
===Améliorer les prédictions===<br />
<br />
Cette vue permet à l'utilisateur de rechercher un film en particulier ou de parcourir les pages afin de trouver des films à annoter. En cliquant sur le pouces vers le haut, l'utilisateur indique qu'il aime le film et en cliquant sur le pouce vers le bas, qu'il ne l'aime pas.<br />
<br />
[[Image:Conception-VueAmeliorerPrediction.png|900px|center]]<br />
<br />
===Films annotés===<br />
<br />
Cette vue permet à l'utilisateur de visionner le récapitulatif des films qu'il a déjà annoté. Il peut affiner le résultat en sélectionnant au choix tous les films annotés, uniquement les films qu'il à annoté positivement ou alors uniquement ceux qu'il à annoté négativement.<br />
<br />
[[Image:Conception-VueFilmsAnnotes.png|900px|center]]<br />
<br />
===Statistiques===<br />
<br />
Cette vue permet à l'utilisateur d'accéder aux statistiques sur ses films annotés. Par exemple, il pourra avoir le détail des genres qu'il aime ou n'aime pas, la durée moyenne des films aimés ou non aimés, etc.<br />
<br />
[[Image:Conception-VueStatistiques.png|900px|center]]<br />
<br />
===Recommandations===<br />
<br />
Cette vue permet à l'utilisateur de charger une liste de films recommandés selon ses goûts. La taille des images de films met en évidence les films ayant la plus grande probabilité de plaire à l'utilisateur, c'est à dire ceux ayant un haut score lors de la prédiction. Des estampilles en haut à droite des images de films peuvent être présent et indiquent soit un coup de cœur de la communauté Twitter (icône cœur), soit un film populaire sur Twitter, c'est à dire un film dont on parle beaucoup sur Twitter mais pas forcément en bien (icône Twitter).<br />
<br />
[[Image:Conception-VueRecommandations.png|900px|center]]<br />
<br />
==Charte graphique==<br />
<br />
La charte graphique à été sélectionné via le site [https://www.materialpalette.com/teal/amber'''Material Design'''].<br />
<br />
<br />
[[Image:CharteGraphique.png|800px|center]]<br />
<br />
<br />
==Logo==<br />
<br />
[[Image:LogoDeepMovies.png|400px|center]]</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Conception_de_l%27interface_-_Recommandation_intelligente_de_films&diff=34495Conception de l'interface - Recommandation intelligente de films2017-03-13T15:40:01Z<p>Coralie.Rachex: /* Retour client */</p>
<hr />
<div>Voici la fiche de conception de l'interface du projet 'Recommandation intelligente de films'.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
=Développement de la maquette du produit=<br />
<br />
<br />
==Différentes vues réalisées==<br />
<br />
===Améliorer les prédictions===<br />
<br />
Cette vue permet à l'utilisateur de rechercher un film en particulier ou de parcourir les pages afin de trouver des films à annoter. En cliquant sur le pouces vers le haut, l'utilisateur indique qu'il aime le film et en cliquant sur le pouce vers le bas, qu'il ne l'aime pas.<br />
<br />
[[Image:Conception-VueAmeliorerPrediction.png|900px|center]]<br />
<br />
===Films annotés===<br />
<br />
Cette vue permet à l'utilisateur de visionner le récapitulatif des films qu'il a déjà annoté. Il peut affiner le résultat en sélectionnant au choix tous les films annotés, uniquement les films qu'il à annoté positivement ou alors uniquement ceux qu'il à annoté négativement.<br />
<br />
[[Image:Conception-VueFilmsAnnotes.png|900px|center]]<br />
<br />
===Statistiques===<br />
<br />
Cette vue permet à l'utilisateur d'accéder aux statistiques sur ses films annotés. Par exemple, il pourra avoir le détails des genres qu'il aime ou n'aime pas, la durée moyenne des films aimés ou non aimés, etc.<br />
<br />
[[Image:Conception-VueStatistiques.png|900px|center]]<br />
<br />
===Recommandations===<br />
<br />
Cette vue permet à l'utilisateur de charger une liste de films recommandés selon ses goûts. La taille des images de films met en évidence les films ayant la plus grande probabilité de plaire à l'utilisateur, c'est à dire ceux ayant un haut score lors de la prédiction. Des tampons en haut à droite des images de films peuvent être présent et indiquent soit un coup de cœur de la communauté Twitter (icône cœur), soit un film populaire sur Twitter, c'est à dire un film dont on parle beaucoup sur Twitter mais pas forcément en bien (icône Twitter).<br />
<br />
[[Image:Conception-VueRecommandations.png|900px|center]]<br />
<br />
<br />
==Charte graphique==<br />
<br />
La charte graphique à été sélectionné via le site [https://www.materialpalette.com/teal/amber'''Material Design'''].<br />
<br />
<br />
[[Image:CharteGraphique.png|800px|center]]<br />
<br />
<br />
==Logo==<br />
<br />
[[Image:LogoDeepMovies.png|400px|center]]</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Conception_de_l%27interface_-_Recommandation_intelligente_de_films&diff=34494Conception de l'interface - Recommandation intelligente de films2017-03-13T15:38:32Z<p>Coralie.Rachex: /* Logo */</p>
<hr />
<div>Voici la fiche de conception de l'interface du projet 'Recommandation intelligente de films'.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
=Développement de la maquette du produit=<br />
<br />
<br />
==Différentes vues réalisées==<br />
<br />
===Améliorer les prédictions===<br />
<br />
Cette vue permet à l'utilisateur de rechercher un film en particulier ou de parcourir les pages afin de trouver des films à annoter. En cliquant sur le pouces vers le haut, l'utilisateur indique qu'il aime le film et en cliquant sur le pouce vers le bas, qu'il ne l'aime pas.<br />
<br />
[[Image:Conception-VueAmeliorerPrediction.png|900px|center]]<br />
<br />
===Films annotés===<br />
<br />
Cette vue permet à l'utilisateur de visionner le récapitulatif des films qu'il a déjà annoté. Il peut affiner le résultat en sélectionnant au choix tous les films annotés, uniquement les films qu'il à annoté positivement ou alors uniquement ceux qu'il à annoté négativement.<br />
<br />
[[Image:Conception-VueFilmsAnnotes.png|900px|center]]<br />
<br />
===Statistiques===<br />
<br />
Cette vue permet à l'utilisateur d'accéder aux statistiques sur ses films annotés. Par exemple, il pourra avoir le détails des genres qu'il aime ou n'aime pas, la durée moyenne des films aimés ou non aimés, etc.<br />
<br />
[[Image:Conception-VueStatistiques.png|900px|center]]<br />
<br />
===Recommandations===<br />
<br />
Cette vue permet à l'utilisateur de charger une liste de films recommandés selon ses goûts. La taille des images de films met en évidence les films ayant la plus grande probabilité de plaire à l'utilisateur, c'est à dire ceux ayant un haut score lors de la prédiction. Des tampons en haut à droite des images de films peuvent être présent et indiquent soit un coup de cœur de la communauté Twitter (icône cœur), soit un film populaire sur Twitter, c'est à dire un film dont on parle beaucoup sur Twitter mais pas forcément en bien (icône Twitter).<br />
<br />
[[Image:Conception-VueRecommandations.png|900px|center]]<br />
<br />
<br />
==Charte graphique==<br />
<br />
La charte graphique à été sélectionné via le site [https://www.materialpalette.com/teal/amber'''Material Design'''].<br />
<br />
<br />
[[Image:CharteGraphique.png|800px|center]]<br />
<br />
<br />
==Logo==<br />
<br />
[[Image:LogoDeepMovies.png|400px|center]]<br />
<br />
=Retour client=</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=File:LogoDeepMovies.png&diff=34493File:LogoDeepMovies.png2017-03-13T15:38:00Z<p>Coralie.Rachex: </p>
<hr />
<div></div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Conception_de_l%27interface_-_Recommandation_intelligente_de_films&diff=34492Conception de l'interface - Recommandation intelligente de films2017-03-13T15:37:47Z<p>Coralie.Rachex: /* Logo */</p>
<hr />
<div>Voici la fiche de conception de l'interface du projet 'Recommandation intelligente de films'.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
=Développement de la maquette du produit=<br />
<br />
<br />
==Différentes vues réalisées==<br />
<br />
===Améliorer les prédictions===<br />
<br />
Cette vue permet à l'utilisateur de rechercher un film en particulier ou de parcourir les pages afin de trouver des films à annoter. En cliquant sur le pouces vers le haut, l'utilisateur indique qu'il aime le film et en cliquant sur le pouce vers le bas, qu'il ne l'aime pas.<br />
<br />
[[Image:Conception-VueAmeliorerPrediction.png|900px|center]]<br />
<br />
===Films annotés===<br />
<br />
Cette vue permet à l'utilisateur de visionner le récapitulatif des films qu'il a déjà annoté. Il peut affiner le résultat en sélectionnant au choix tous les films annotés, uniquement les films qu'il à annoté positivement ou alors uniquement ceux qu'il à annoté négativement.<br />
<br />
[[Image:Conception-VueFilmsAnnotes.png|900px|center]]<br />
<br />
===Statistiques===<br />
<br />
Cette vue permet à l'utilisateur d'accéder aux statistiques sur ses films annotés. Par exemple, il pourra avoir le détails des genres qu'il aime ou n'aime pas, la durée moyenne des films aimés ou non aimés, etc.<br />
<br />
[[Image:Conception-VueStatistiques.png|900px|center]]<br />
<br />
===Recommandations===<br />
<br />
Cette vue permet à l'utilisateur de charger une liste de films recommandés selon ses goûts. La taille des images de films met en évidence les films ayant la plus grande probabilité de plaire à l'utilisateur, c'est à dire ceux ayant un haut score lors de la prédiction. Des tampons en haut à droite des images de films peuvent être présent et indiquent soit un coup de cœur de la communauté Twitter (icône cœur), soit un film populaire sur Twitter, c'est à dire un film dont on parle beaucoup sur Twitter mais pas forcément en bien (icône Twitter).<br />
<br />
[[Image:Conception-VueRecommandations.png|900px|center]]<br />
<br />
<br />
==Charte graphique==<br />
<br />
La charte graphique à été sélectionné via le site [https://www.materialpalette.com/teal/amber'''Material Design'''].<br />
<br />
<br />
[[Image:CharteGraphique.png|800px|center]]<br />
<br />
<br />
==Logo==<br />
<br />
[[Image:LogoDeepMovies.png|500px|center]]<br />
<br />
=Retour client=</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Conception_de_l%27interface_-_Recommandation_intelligente_de_films&diff=34491Conception de l'interface - Recommandation intelligente de films2017-03-13T15:36:42Z<p>Coralie.Rachex: /* Charte graphique */</p>
<hr />
<div>Voici la fiche de conception de l'interface du projet 'Recommandation intelligente de films'.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
=Développement de la maquette du produit=<br />
<br />
<br />
==Différentes vues réalisées==<br />
<br />
===Améliorer les prédictions===<br />
<br />
Cette vue permet à l'utilisateur de rechercher un film en particulier ou de parcourir les pages afin de trouver des films à annoter. En cliquant sur le pouces vers le haut, l'utilisateur indique qu'il aime le film et en cliquant sur le pouce vers le bas, qu'il ne l'aime pas.<br />
<br />
[[Image:Conception-VueAmeliorerPrediction.png|900px|center]]<br />
<br />
===Films annotés===<br />
<br />
Cette vue permet à l'utilisateur de visionner le récapitulatif des films qu'il a déjà annoté. Il peut affiner le résultat en sélectionnant au choix tous les films annotés, uniquement les films qu'il à annoté positivement ou alors uniquement ceux qu'il à annoté négativement.<br />
<br />
[[Image:Conception-VueFilmsAnnotes.png|900px|center]]<br />
<br />
===Statistiques===<br />
<br />
Cette vue permet à l'utilisateur d'accéder aux statistiques sur ses films annotés. Par exemple, il pourra avoir le détails des genres qu'il aime ou n'aime pas, la durée moyenne des films aimés ou non aimés, etc.<br />
<br />
[[Image:Conception-VueStatistiques.png|900px|center]]<br />
<br />
===Recommandations===<br />
<br />
Cette vue permet à l'utilisateur de charger une liste de films recommandés selon ses goûts. La taille des images de films met en évidence les films ayant la plus grande probabilité de plaire à l'utilisateur, c'est à dire ceux ayant un haut score lors de la prédiction. Des tampons en haut à droite des images de films peuvent être présent et indiquent soit un coup de cœur de la communauté Twitter (icône cœur), soit un film populaire sur Twitter, c'est à dire un film dont on parle beaucoup sur Twitter mais pas forcément en bien (icône Twitter).<br />
<br />
[[Image:Conception-VueRecommandations.png|900px|center]]<br />
<br />
<br />
==Charte graphique==<br />
<br />
La charte graphique à été sélectionné via le site [https://www.materialpalette.com/teal/amber'''Material Design'''].<br />
<br />
<br />
[[Image:CharteGraphique.png|800px|center]]<br />
<br />
<br />
==Logo==<br />
<br />
[[Image:Logo.png|500px|center]]<br />
<br />
=Retour client=</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Conception_de_l%27interface_-_Recommandation_intelligente_de_films&diff=34489Conception de l'interface - Recommandation intelligente de films2017-03-13T15:09:07Z<p>Coralie.Rachex: /* Consultation des annotations */</p>
<hr />
<div>Voici la fiche de conception de l'interface du projet 'Recommandation intelligente de films'.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
=Développement de la maquette du produit=<br />
<br />
<br />
==Différentes vues réalisées==<br />
<br />
===Améliorer les prédictions===<br />
<br />
Cette vue permet à l'utilisateur de rechercher un film en particulier ou de parcourir les pages afin de trouver des films à annoter. En cliquant sur le pouces vers le haut, l'utilisateur indique qu'il aime le film et en cliquant sur le pouce vers le bas, qu'il ne l'aime pas.<br />
<br />
[[Image:Conception-VueAmeliorerPrediction.png|900px|center]]<br />
<br />
===Films annotés===<br />
<br />
Cette vue permet à l'utilisateur de visionner le récapitulatif des films qu'il a déjà annoté. Il peut affiner le résultat en sélectionnant au choix tous les films annotés, uniquement les films qu'il à annoté positivement ou alors uniquement ceux qu'il à annoté négativement.<br />
<br />
[[Image:Conception-VueFilmsAnnotes.png|900px|center]]<br />
<br />
===Statistiques===<br />
<br />
Cette vue permet à l'utilisateur d'accéder aux statistiques sur ses films annotés. Par exemple, il pourra avoir le détails des genres qu'il aime ou n'aime pas, la durée moyenne des films aimés ou non aimés, etc.<br />
<br />
[[Image:Conception-VueStatistiques.png|900px|center]]<br />
<br />
===Recommandations===<br />
<br />
Cette vue permet à l'utilisateur de charger une liste de films recommandés selon ses goûts. La taille des images de films met en évidence les films ayant la plus grande probabilité de plaire à l'utilisateur, c'est à dire ceux ayant un haut score lors de la prédiction. Des tampons en haut à droite des images de films peuvent être présent et indiquent soit un coup de cœur de la communauté Twitter (icône cœur), soit un film populaire sur Twitter, c'est à dire un film dont on parle beaucoup sur Twitter mais pas forcément en bien (icône Twitter).<br />
<br />
[[Image:Conception-VueRecommandations.png|900px|center]]<br />
<br />
<br />
==Charte graphique==<br />
<br />
La charte graphique à été sélectionné via le site [https://www.materialpalette.com/teal/amber'''Material Design'''].<br />
<br />
<br />
[[Image:CharteGraphique.png|800px|center]]<br />
<br />
=Retour client=</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Conception_de_l%27interface_-_Recommandation_intelligente_de_films&diff=34488Conception de l'interface - Recommandation intelligente de films2017-03-13T15:06:26Z<p>Coralie.Rachex: /* Développement de la maquette du produit */</p>
<hr />
<div>Voici la fiche de conception de l'interface du projet 'Recommandation intelligente de films'.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
=Développement de la maquette du produit=<br />
<br />
<br />
==Différentes vues réalisées==<br />
<br />
===Améliorer les prédictions===<br />
<br />
Cette vue permet à l'utilisateur de rechercher un film en particulier ou de parcourir les pages afin de trouver des films à annoter. En cliquant sur le pouces vers le haut, l'utilisateur indique qu'il aime le film et en cliquant sur le pouce vers le bas, qu'il ne l'aime pas.<br />
<br />
[[Image:Conception-VueAmeliorerPrediction.png|900px|center]]<br />
<br />
===Films annotés===<br />
<br />
Cette vue permet à l'utilisateur de visionner le récapitulatif des films qu'il a déjà annoté. Il peut affiner le résultat en sélectionnant au choix tous les films annotés, uniquement les films qu'il à annoté positivement ou alors uniquement ceux qu'il à annoté négativement.<br />
<br />
[[Image:Conception-VueFilmsAnnotes.png|900px|center]]<br />
<br />
===Consultation des annotations===<br />
<br />
Cette vue permet à l'utilisateur d'accéder aux statistiques sur ses films annotés. Par exemple, il pourra avoir le détails des genres qu'il aime ou n'aime pas, la durée moyenne des films aimés ou non aimés, etc.<br />
<br />
[[Image:Conception-VueStatistiques.png|900px|center]]<br />
<br />
===Recommandations===<br />
<br />
Cette vue permet à l'utilisateur de charger une liste de films recommandés selon ses goûts. La taille des images de films met en évidence les films ayant la plus grande probabilité de plaire à l'utilisateur, c'est à dire ceux ayant un haut score lors de la prédiction. Des tampons en haut à droite des images de films peuvent être présent et indiquent soit un coup de cœur de la communauté Twitter (icône cœur), soit un film populaire sur Twitter, c'est à dire un film dont on parle beaucoup sur Twitter mais pas forcément en bien (icône Twitter).<br />
<br />
[[Image:Conception-VueRecommandations.png|900px|center]]<br />
<br />
<br />
==Charte graphique==<br />
<br />
La charte graphique à été sélectionné via le site [https://www.materialpalette.com/teal/amber'''Material Design'''].<br />
<br />
<br />
[[Image:CharteGraphique.png|800px|center]]<br />
<br />
=Retour client=</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Conception_de_l%27interface_-_Recommandation_intelligente_de_films&diff=34487Conception de l'interface - Recommandation intelligente de films2017-03-13T15:06:01Z<p>Coralie.Rachex: /* Charte graphique */</p>
<hr />
<div>Voici la fiche de conception de l'interface du projet 'Recommandation intelligente de films'.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
=Développement de la maquette du produit=<br />
<br />
<br />
==Différentes vues réalisées==<br />
<br />
===Améliorer les prédictions===<br />
<br />
Cette vue permet à l'utilisateur de rechercher un film en particulier ou de parcourir les pages afin de trouver des films à annoter. En cliquant sur le pouces vers le haut, l'utilisateur indique qu'il aime le film et en cliquant sur le pouce vers le bas, qu'il ne l'aime pas.<br />
<br />
[[Image:Conception-VueAmeliorerPrediction.png|1000px|center]]<br />
<br />
===Films annotés===<br />
<br />
Cette vue permet à l'utilisateur de visionner le récapitulatif des films qu'il a déjà annoté. Il peut affiner le résultat en sélectionnant au choix tous les films annotés, uniquement les films qu'il à annoté positivement ou alors uniquement ceux qu'il à annoté négativement.<br />
<br />
[[Image:Conception-VueFilmsAnnotes.png|1000px|center]]<br />
<br />
===Consultation des annotations===<br />
<br />
Cette vue permet à l'utilisateur d'accéder aux statistiques sur ses films annotés. Par exemple, il pourra avoir le détails des genres qu'il aime ou n'aime pas, la durée moyenne des films aimés ou non aimés, etc.<br />
<br />
[[Image:Conception-VueStatistiques.png|1000px|center]]<br />
<br />
===Recommandations===<br />
<br />
Cette vue permet à l'utilisateur de charger une liste de films recommandés selon ses goûts. La taille des images de films met en évidence les films ayant la plus grande probabilité de plaire à l'utilisateur, c'est à dire ceux ayant un haut score lors de la prédiction. Des tampons en haut à droite des images de films peuvent être présent et indiquent soit un coup de cœur de la communauté Twitter (icône cœur), soit un film populaire sur Twitter, c'est à dire un film dont on parle beaucoup sur Twitter mais pas forcément en bien (icône Twitter).<br />
<br />
[[Image:Conception-VueRecommandations.png|1000px|center]]<br />
<br />
<br />
==Charte graphique==<br />
<br />
La charte graphique à été sélectionné via le site [https://www.materialpalette.com/teal/amber'''Material Design'''].<br />
<br />
<br />
[[Image:CharteGraphique.png|800px|center]]<br />
<br />
=Retour client=</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Conception_de_l%27interface_-_Recommandation_intelligente_de_films&diff=34486Conception de l'interface - Recommandation intelligente de films2017-03-13T15:05:48Z<p>Coralie.Rachex: /* Charte graphique */</p>
<hr />
<div>Voici la fiche de conception de l'interface du projet 'Recommandation intelligente de films'.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
=Développement de la maquette du produit=<br />
<br />
<br />
==Différentes vues réalisées==<br />
<br />
===Améliorer les prédictions===<br />
<br />
Cette vue permet à l'utilisateur de rechercher un film en particulier ou de parcourir les pages afin de trouver des films à annoter. En cliquant sur le pouces vers le haut, l'utilisateur indique qu'il aime le film et en cliquant sur le pouce vers le bas, qu'il ne l'aime pas.<br />
<br />
[[Image:Conception-VueAmeliorerPrediction.png|1000px|center]]<br />
<br />
===Films annotés===<br />
<br />
Cette vue permet à l'utilisateur de visionner le récapitulatif des films qu'il a déjà annoté. Il peut affiner le résultat en sélectionnant au choix tous les films annotés, uniquement les films qu'il à annoté positivement ou alors uniquement ceux qu'il à annoté négativement.<br />
<br />
[[Image:Conception-VueFilmsAnnotes.png|1000px|center]]<br />
<br />
===Consultation des annotations===<br />
<br />
Cette vue permet à l'utilisateur d'accéder aux statistiques sur ses films annotés. Par exemple, il pourra avoir le détails des genres qu'il aime ou n'aime pas, la durée moyenne des films aimés ou non aimés, etc.<br />
<br />
[[Image:Conception-VueStatistiques.png|1000px|center]]<br />
<br />
===Recommandations===<br />
<br />
Cette vue permet à l'utilisateur de charger une liste de films recommandés selon ses goûts. La taille des images de films met en évidence les films ayant la plus grande probabilité de plaire à l'utilisateur, c'est à dire ceux ayant un haut score lors de la prédiction. Des tampons en haut à droite des images de films peuvent être présent et indiquent soit un coup de cœur de la communauté Twitter (icône cœur), soit un film populaire sur Twitter, c'est à dire un film dont on parle beaucoup sur Twitter mais pas forcément en bien (icône Twitter).<br />
<br />
[[Image:Conception-VueRecommandations.png|1000px|center]]<br />
<br />
<br />
==Charte graphique==<br />
<br />
La charte graphique à été sélectionné via le site [https://www.materialpalette.com/teal/amber'''Material Design'''].<br />
<br />
<br />
[[Image:CharteGraphique.png|500px|center]]<br />
<br />
=Retour client=</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=File:CharteGraphique.png&diff=34485File:CharteGraphique.png2017-03-13T15:05:32Z<p>Coralie.Rachex: </p>
<hr />
<div></div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Conception_de_l%27interface_-_Recommandation_intelligente_de_films&diff=34484Conception de l'interface - Recommandation intelligente de films2017-03-13T15:04:01Z<p>Coralie.Rachex: /* Développement de la maquette du produit */</p>
<hr />
<div>Voici la fiche de conception de l'interface du projet 'Recommandation intelligente de films'.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
=Développement de la maquette du produit=<br />
<br />
<br />
==Différentes vues réalisées==<br />
<br />
===Améliorer les prédictions===<br />
<br />
Cette vue permet à l'utilisateur de rechercher un film en particulier ou de parcourir les pages afin de trouver des films à annoter. En cliquant sur le pouces vers le haut, l'utilisateur indique qu'il aime le film et en cliquant sur le pouce vers le bas, qu'il ne l'aime pas.<br />
<br />
[[Image:Conception-VueAmeliorerPrediction.png|1000px|center]]<br />
<br />
===Films annotés===<br />
<br />
Cette vue permet à l'utilisateur de visionner le récapitulatif des films qu'il a déjà annoté. Il peut affiner le résultat en sélectionnant au choix tous les films annotés, uniquement les films qu'il à annoté positivement ou alors uniquement ceux qu'il à annoté négativement.<br />
<br />
[[Image:Conception-VueFilmsAnnotes.png|1000px|center]]<br />
<br />
===Consultation des annotations===<br />
<br />
Cette vue permet à l'utilisateur d'accéder aux statistiques sur ses films annotés. Par exemple, il pourra avoir le détails des genres qu'il aime ou n'aime pas, la durée moyenne des films aimés ou non aimés, etc.<br />
<br />
[[Image:Conception-VueStatistiques.png|1000px|center]]<br />
<br />
===Recommandations===<br />
<br />
Cette vue permet à l'utilisateur de charger une liste de films recommandés selon ses goûts. La taille des images de films met en évidence les films ayant la plus grande probabilité de plaire à l'utilisateur, c'est à dire ceux ayant un haut score lors de la prédiction. Des tampons en haut à droite des images de films peuvent être présent et indiquent soit un coup de cœur de la communauté Twitter (icône cœur), soit un film populaire sur Twitter, c'est à dire un film dont on parle beaucoup sur Twitter mais pas forcément en bien (icône Twitter).<br />
<br />
[[Image:Conception-VueRecommandations.png|1000px|center]]<br />
<br />
<br />
==Charte graphique==<br />
<br />
La charte graphique à été sélectionné via le site [https://www.materialpalette.com/teal/amber'''Material Design'''].<br />
<br />
<br />
[[Image:CharteGraphique.png|1000px|center]]<br />
<br />
=Retour client=</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=File:Conception-VueRecommandations.png&diff=34483File:Conception-VueRecommandations.png2017-03-13T15:01:57Z<p>Coralie.Rachex: </p>
<hr />
<div></div>Coralie.Rachexhttps://air.imag.fr/index.php?title=File:Conception-VueStatistiques.png&diff=34482File:Conception-VueStatistiques.png2017-03-13T15:01:40Z<p>Coralie.Rachex: </p>
<hr />
<div></div>Coralie.Rachexhttps://air.imag.fr/index.php?title=File:Conception-VueFilmsAnnotes.png&diff=34481File:Conception-VueFilmsAnnotes.png2017-03-13T14:59:34Z<p>Coralie.Rachex: </p>
<hr />
<div></div>Coralie.Rachexhttps://air.imag.fr/index.php?title=File:Conception-VueAmeliorerPrediction.png&diff=34480File:Conception-VueAmeliorerPrediction.png2017-03-13T14:59:09Z<p>Coralie.Rachex: </p>
<hr />
<div></div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Conception_de_l%27interface_-_Recommandation_intelligente_de_films&diff=34478Conception de l'interface - Recommandation intelligente de films2017-03-13T14:58:46Z<p>Coralie.Rachex: /* Différentes vues réalisées */</p>
<hr />
<div>Voici la fiche de conception de l'interface du projet 'Recommandation intelligente de films'.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
=Développement de la maquette du produit=<br />
<br />
<br />
==Différentes vues réalisées==<br />
<br />
===Améliorer les prédictions===<br />
<br />
Cette vue permet à l'utilisateur de rechercher un film en particulier ou de parcourir les pages afin de trouver des films à annoter. En cliquant sur le pouces vers le haut, l'utilisateur indique qu'il aime le film et en cliquant sur le pouce vers le bas, qu'il ne l'aime pas.<br />
<br />
[[Image:Conception-VueAmeliorerPrediction.png|1000px|center]]<br />
<br />
===Films annotés===<br />
<br />
Cette vue permet à l'utilisateur de visionner le récapitulatif des films qu'il a déjà annoté. Il peut affiner le résultat en sélectionnant au choix tous les films annotés, uniquement les films qu'il à annoté positivement ou alors uniquement ceux qu'il à annoté négativement.<br />
<br />
[[Image:Conception-VueFilmsAnnotes.png|1000px|center]]<br />
<br />
===Consultation des annotations===<br />
<br />
Cette vue permet à l'utilisateur d'accéder aux statistiques sur ses films annotés. Par exemple, il pourra avoir le détails des genres qu'il aime ou n'aime pas, la durée moyenne des films aimés ou non aimés, etc.<br />
<br />
[[Image:Conception-VueStatistiques.png|1000px|center]]<br />
<br />
===Recommandations===<br />
<br />
Cette vue permet à l'utilisateur de charger une liste de films recommandés selon ses goûts. La taille des images de films met en évidence les films ayant la plus grande probabilité de plaire à l'utilisateur, c'est à dire ceux ayant un haut score lors de la prédiction. Des tampons en haut à droite des images de films peuvent être présent et indiquent soit un coup de cœur de la communauté Twitter (icône cœur), soit un film populaire sur Twitter, c'est à dire un film dont on parle beaucoup sur Twitter mais pas forcément en bien (icône Twitter).<br />
<br />
[[Image:Conception-VueRecommandations.png|1000px|center]]<br />
<br />
=Retour client=</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Fiche_de_suivi_-_Recommandation_intelligente_de_films&diff=34454Fiche de suivi - Recommandation intelligente de films2017-03-13T10:41:54Z<p>Coralie.Rachex: /* Lundi */</p>
<hr />
<div>Voici la Fiche de suivi du projet de fin d'études DeepMovies 2016-2017<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin (Responsable innovation)<br />
* Hattinguais Julian (Responsable qualité)<br />
* Navarro Elsa (Responsable communication, Médiatrice)<br />
* Dunand Quentin (Responsable des deadlines,Responsable du front-end)<br />
<br />
= Avancée du projet =<br />
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.<br />
<br />
== Sprint 0 ==<br />
<br />
===Sprint dédié aux travaux préparatoires du projet===<br />
* Debriefing autour du projet<br />
* Renseignements sur les technologies et principaux défis techniques<br />
* 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) <br />
* Choix technologiques<br />
* Préparation des environnements<br />
* Établissement de la liste des exigences fonctionnelles et non fonctionnelles<br />
<br />
<br />
[[File:Sprint0-Semaine1.jpg|1400px|middle]]<br />
<br />
=== Semaine 1 : 23/01 - 29/01 ===<br />
* Mise en place du wiki (Edwin)<br />
* Recherche sur les technologies et les problèmes techniques (Tous)<br />
* Prise RDV avec Massih-Reza Amini pour renseignements (Coralie)<br />
* Mise en place d'un agenda pour le suivi du projet (Coralie)<br />
* Comment lier l'API au front-end ? AngularJS ou Polymer ? ... (Quentin)<br />
<br />
* Mise en place de l'architecture (Tous) avant de faire un prototype comme prévu.<br />
* Installation, compréhension et manipulation de Keras (Tous)<br />
* Recherche mise en place API-REST Python pour le back-end (Julian)<br />
* Mise en place du front-end - première requêtes - choix Angular pour communiquer avec une API-REST (Quentin)<br />
* Traitement de données simple en se basant juste sur le vote des utilisateurs de TMDb sur les films (Edwin, Coralie, Elsa)<br />
* 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)<br />
* 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 [http://nlp.stanford.edu/projects/glove/ GloVe].<br />
<br />
<br />
* Rendez-vous avec Massih-Reza Amini pour éclaircir le sujet, notamment au sujet du pré-traitement du texte. (Tous)<br />
* 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).<br />
* 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).<br />
* Mise en place d'un système de notation fonctionnel qui permet d'enregistrer les données à partir du front (Quentin).<br />
<br />
== Sprint 1 ==<br />
<br />
===Tâches du Sprint1===<br />
* T1. Établissement des vues principales côté client (recherche et annotation de films)<br />
* T2. Mise en place du processus de pré-traitement des données (titre, mots clés, résumé, note, artiste, producteur)<br />
* T3. Mise en place du réseau neuronal (réseau neuronal simple)<br />
* T4. Mise en place de la structure de test du réseau neuronal (former les corpus de données, cross validation, test de précision)<br />
* T5. Mise en place de l'environnement système (Docker)<br />
<br />
=== Semaine 2 : 30/01 - 05/02 ===<br />
<br />
[[File:Sprint1-Semaine2.jpg|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* Préparation du premier sprint :<br />
** Mise au point sur le travail réalisé la semaine passée et sur le travail à réaliser durant le sprint<br />
** Établissement d'une liste de fonctionnalités, avec une estimation de l'importance et du temps de réalisation de chaque tâche<br />
** Sélection des fonctionnalités à réaliser au cours du Sprint, remplissage du Scrumboard<br />
* Mise au point sur l'arborescence du git / architecture du projet<br />
* Installation d'une version GPU pour Keras et Tensor-Flow sur les machines équipées d'un bon GPU<br />
<br />
====Mardi====<br />
<br />
* Réunion avec Didier Donsez : <br />
** Technologies : storm, spark, flint (temps réel) pour Twitter<br />
** Distribution : préparer un déploiement sur GRID5000, contacter Olivier Richard et préparer un container Docker<br />
** Utiliser Github pour héberger le site web<br />
<br />
* T1. -> Vues "recherche de films", "annotation de film" et "consultation des films annotés" (Quentin)<br />
* T2. -> Prétraitement des données "titre", "mots clés", "résumé", "notes" (Edwin, Elsa, Coralie, Julian)<br />
** prétraitement des textes via Doc2Vec (Coralie)<br />
** prétraitement des mots via Glove (Elsa, Edwin, Julian)<br />
** récupération des données (Julian)<br />
** mise en place de l'embedding (Edwin)<br />
** mise en place d'une librairie pour le pré-traitement des données envoyées aux classifieur (Julian)<br />
** Import des modules (Julian)<br />
<br />
====Mercredi====<br />
<br />
* T1. -> Chargement des images de films côté client (Quentin)<br />
* T2. -> Prétraitement des données "titre", "mots clés", "résumé", "notes" + Ajout "genre" (Edwin, Elsa, Coralie, Julian)<br />
** prétraitement des textes via Doc2Vec (Coralie)<br />
** extraction des données JSON via l'API (Elsa)<br />
** prétraitement des genres (Julian)<br />
** prétraitement général (mise en forme de la matrice de données) (Edwin)<br />
** revue de code (Julian)<br />
* T5. -> Recherche d'un moyen de distribuer le classifieur sous Keras - Elephas ? (Coralie)<br />
<br />
====Jeudi====<br />
<br />
* Cours de MPI - travail sur la communication au sein d'un groupe<br />
* T1. -> Pagination et chargement d'images (Quentin)<br />
* T3. -> Création d'une première version du classifieur (Elsa, Edwin)<br />
* T4. -> Validation croisée pour pouvoir tester le classifieur correctement (Edwin & Elsa)<br />
* T5. -> Installation version GPU sur PC (Julian)<br />
* T5. -> Recherche d'un moyen de distribuer le classifieur Keras - Elephas (Coralie)<br />
<br />
====Vendredi====<br />
<br />
* T1. -> Déploiement sur github.io (Quentin)<br />
* T3. -> Insertion de Doc2Vec dans le classifieur (Julian)<br />
* T3. -> Revue du classifieur pour obtenir une meilleure précision (Elsa & Edwin)<br />
* T4. -> 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)<br />
* T4. -> Annotation de films pour constituer la base d'apprentissage/test (Tous)<br />
* T5. -> Auto-formation sur Docker (Coralie, Edwin)<br />
<br />
=== Semaine 3 : 06/02 - 12/02 ===<br />
<br />
[[File:Sprint1-Semaine3.jpg|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* Cours de MPI - gestion de projet<br />
* T1. -> Ajout d'un boite de dialogue permettant de visualiser les infos d'un film (Quentin)<br />
* T2. -> Fix de bugs dans preprocessing (Julian)<br />
* T4. -> Recherche sur la mise en place de tests avec Python (Elsa)<br />
* T5. -> Mise en place de l'image Docker avec Python, Keras et Tensorflow en partant d'un Ubuntu 14 (Edwin)<br />
* T5. -> Mise en place de l'image Docker avec Spark en partant d'un Ubuntu 14 (Coralie)<br />
<br />
====Mardi====<br />
<br />
* Rendez-vous avec Mr. Amini<br />
* T1. -> Amélioration de la boîte de dialogue pour les infos (Quentin)<br />
* T2. -> Preprocessing des acteurs et des realisateurs et ajout des fonction de test associées (Julian)<br />
* T2. -> Test le modèle D2V sur un analyseur de sentiment de tweets, beaucoup plus objectif que les gouts utilisateurs vis à vis des films (Coralie).<br />
* T2. -> Mise en place de modules de test unitaires dans MovieProject/tests/unit et suppression de fichiers inutiles dans MovieProject/tests (Elsa)<br />
* T4. -> 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)<br />
* T4. -> Evaluation du classifieur avec la méthode Doc2Vec (Elsa)<br />
* T5. -> Finalisation de l'image Docker avec Python, Keras et Tensorflow (Edwin)<br />
<br />
====Mercredi====<br />
<br />
* T1. -> Création de statistiques sur les goûts utilisateurs côté client (Quentin)<br />
* T4. -> Début de la mise en place des différents modèles d'apprentissage en vue de leur comparaison : <br />
** Réseau neuronal avec Keras (Elsa)<br />
** Perceptron (Coralie)<br />
** Modification du prétraitement afin de pouvoir récupérer les matrices de chacune des variables caractérisant un film (Julian)<br />
* T5. -> Ajout de Spark à l'image Docker (Edwin)<br />
<br />
====Jeudi====<br />
<br />
* T1. -> Poursuite de la création de statistiques sur les goûts utilisateurs côté client (Quentin)<br />
* T4. -> Poursuite des tests de performance :<br />
** 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)<br />
** Test du réseau neuronal (Elsa)<br />
** Mise en place d'un SVM pour concurrencer les performances des deux autres modèles (Julian)<br />
* T5. -> Test de l'image Docker (Edwin)<br />
<br />
====Vendredi====<br />
<br />
* T1. -> Visualisation des statistiques + explications sur la page d'accueil (Quentin)<br />
* T4. -> Finalisation perceptron + intégration dans evaluation (Coralie)<br />
* T4. -> Finalisation SVM + intégration dans evaluation (Julian)<br />
* T4. -> Mise en place du module evaluation et intégration des modifications de classifieur & preprocessing (Elsa)<br />
* T5. -> Documentation sur Spark (Edwin & Coralie)<br />
<br />
===État du scrumboard en fin du Sprint1===<br />
<br />
[[File:Sprint1-end-Scrumboard.png|1080px|middle]]<br />
<br />
== Sprint 2 ==<br />
<br />
===Tâches du Sprint2===<br />
<br />
*T1.2. Amélioration du front-end (mise en cache, etc.)<br />
*T2.2. Ajout de descripteurs (durée, budget, année de production, compagnie de production, appartenance à une sage) en vue d'améliorer notre modèle d'apprentissage.<br />
*T3.2 Amélioration du réseau neuronal (comparaison avec Perceptron simple, SVM, RN Convolutif)<br />
*T4. Mise en place de la suggestion de films (vue côté front-end et logique côté back-end)<br />
*T5. Distribution de l'apprentissage sur plusieurs machines (Docker - Spark - Mesos - Elephas) & Parallélisation requêtes<br />
*T6 Communication front/back, établissement des routes et mise en place du système d'authentification<br />
*T7. Analyse de sentiment sur les flux Twitter<br />
*T8. Mise en place de la base de données<br />
<br />
=== Semaine 4 : 13/02 - 19/02 ===<br />
<br />
[[File:Sprint2-Semaine4.png|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* Réunion de fin de sprint1 et de début de sprint0 : discussion autour des avancées, difficultés, retards & établissement fonctionnalités à implémenter au cours du sprint2<br />
*T1.2 -> Mise en place d'un cache local côté front pour éviter de faire trop de requêtes à l'API TMDB (Quentin)<br />
*T2.2. -> Revue de la structure du code (Julian)<br />
*T3.2. -> Mise en place d'un réseau neuronal de convolution (Coralie)<br />
*T4. -> Amélioration de la prédiction de film (Elsa)<br />
*T5. -> Mise en place d'un cluster Spark via Mesos (Edwin)<br />
<br />
====Mardi====<br />
<br />
*T1.2 -> Mise en place d'un cache local côté front pour éviter de faire trop de requêtes à l'API TMDB (Quentin)<br />
*T3.2 -> Amélioration du classifieur (Elsa/Quentin)<br />
*T3.2. -> Mise en place d'un réseau neuronal de convolution (Coralie)<br />
*T4. -> Amélioration de la prédiction de film (Elsa)<br />
*T5. -> Mise en place d'un cluster Spark via Mesos (Edwin)<br />
*T5. -> Parallélisation des requêtes à l'API TMDB (Julian)<br />
<br />
====Mercredi====<br />
<br />
*T1.2 -> Finalisation du cache local côté front pour éviter de faire trop de requêtes à l'API TMDB (Quentin)<br />
*T1.2 -> Finalisation des statistiques cinématographique utilisateurs (Quentin)<br />
*T2.2. -> Ajout du descripteurs "budget" avec normalisation (Edwin)<br />
*T3.2 -> Mise en place de la fonction de comparaison des combinaisons de descripteurs de films pour faciliter le travail des DUT (Julian)<br />
*T3.2. -> Mise en place d'un réseau neuronal LSTM (Coralie)<br />
*T4. -> Changement de la méthode de prédiction de film (Elsa)<br />
*T6. -> Communication front-back test (Elsa/Quentin)<br />
* SRS (Edwin)<br />
<br />
====Jeudi====<br />
<br />
* Rendez-vous avec les DUT : aide sur l'installation du projet, clone du projet Github. <br />
* Préparation de la présentation (Elsa & Edwin)<br />
* Préparation démo (Quentin & Elsa)<br />
* Mise à jour Wiki, SRS, Scrumboard (Elsa & Edwin)<br />
* Aide des DUT (Edwin & Julian)<br />
* T3.2 -> Evaluation du modèle et comparaison avec SVM et Perceptron de manière graphique (extraire les données et construire des graphes - csv ou matplotlib) (Sébastien & Marceau)<br />
* T7. -> Prétraitement des Tweet(Coralie)<br />
* T5. -> Avancement sur le distribué (Julian)<br />
* T1.2 -> Page de login du front, fix problème de CSS sur les graphes (Quentin)<br />
* T3.2 -> Amélioration du classifieur, tests en changeant les layers, le batch-size, etc. (Quentin)<br />
<br />
====Vendredi====<br />
* Préparation du travail qu'Edwin pourra réaliser durant la semaine de vacances (Edwin travaillera en décalé avec le reste du groupe)<br />
* Début de la mise en place de la base de données (Edwin)<br />
<br />
=== Semaine 5 : 20/02 - 26/02 (Edwin) ===<br />
(Edwin a travaillé la semaine précédente, en décalé avec le reste du groupe)<br />
====Lundi====<br />
*T8. -> Installation des outils liés à la gestion de la base de données MySQL et début de la conception de l'API de communication avec cette base. (Edwin)<br />
====Mardi====<br />
*T8. -> Finalisation de l'API, début des tests et des corrections de bug. (Edwin)<br />
====Mercredi====<br />
*T8. -> Ajout de nouvelles fonctionnalités SQL à l'API et tests de l'API. Création d'un readme et d'un fichier d'exemple complet pour l'utilisation de l'API de MySQL. (Edwin)<br />
*T8. -> Amélioration de l'image Docker, correction de bugs de paths et de librairies manquantes. (Edwin)<br />
====Jeudi====<br />
*T8. -> Review générale du travail lié à la base de données. (Edwin)<br />
*T8. -> Mise en place de MySQL pour Docker. (Edwin)<br />
*Mise à jour du Scrumboard et du wiki-air. (Edwin)<br />
<br />
====Vendredi====<br />
*T8. -> Amélioration du Docker pour tenter de régler des problèmes de ports liés à MySQL (non terminé). (Edwin) <br />
*T8. -> Tests unitaires de fonctionnement de serveurs apaches. (Edwin)<br />
<br />
=== Semaine 5 : 27/02 - 28/02 ===<br />
<br />
[[File:Sprint2-Semaine5.png|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* T1.2 -> Mise en place de la page de recommendations (Quentin)<br />
* Merge du classifieur sur la branche develop, avec la prédiction (Elsa)<br />
* T8. -> Revue de la BD et sécurisation (Julian) puis merge sur develop<br />
* T7. -> Finalisation de l'analyse de sentiments (Coralie) pour merge sur develop<br />
* T3.2 -> Recherche sur une construction différente des matrices (basée sur la factorisation de matrices, cf Prix Netflix) (Quentin & Elsa)<br />
<br />
====Mardi====<br />
* Harmonisation des données merge sur le git (Sentiment analysis, evaluation du classifieur et prediction) (Elsa)<br />
* T6. -> Recherche et premiers tests pour l'authentification (Quentin pour le front et Julian pour le back)<br />
* T8. & T5. -> Creation d'une instance de BD Amazon RDS dans un VPC (Coralie)<br />
* T1.2 -> Finalisation page de recommendations (Quentin)<br />
* Insertion en BD des films annotés par les users (Julian)<br />
<br />
====Mercredi====<br />
* Réunion avec Massih-Reza Amini pour parler d'un nouveau modèle de machine learning (Cf Quentin & Elsa lundi)<br />
* T4. -> Amélioration de la prédiction (Elsa)<br />
* T5. -> Essais déploiement du back sur une instance Amazon EC2 (Coralie)<br />
* T6. -> Mise en place de l'authentification simple (login) (Quentin & Julian)<br />
<br />
====Jeudi====<br />
* T4. -> Amélioration de la prédiction et module de test pour la prédiction (Elsa)<br />
* T5. -> Essais déploiement du back sur une instance Amazon EC2 (Coralie)<br />
* T1.2 -> Création des vues d'inscription (sign up) et début vue des paramètres (Quentin)<br />
* T6. -> Sécurisation des appels à l'API par Token (Julian)<br />
<br />
====Vendredi====<br />
* Nettoyage de develop + mise en place de nouveaux tests et état des lieux des tests et de la doc à faire (Elsa)<br />
* T5. -> Essais déploiement du back sur une instance Amazon EC2 (Coralie)<br />
* T6. -> Finalisation de l'inscription et test des premiers appels de récupération des films annotés d'un user (Quentin & Julian)<br />
<br />
===État du scrumboard en fin du Sprint2===<br />
<br />
[[File:Sprint2-end-Scrumboard.png|1080px|middle]]<br />
<br />
== Sprint 3 ==<br />
<br />
===Tâches du Sprint3===<br />
<br />
*T1.1 Lier le back et le front, mettre en place les routes (suggestion, annotation) - Authentification faite<br />
*T1.2 Revoir et enrichir les vues du front<br />
*T2. Déployer l'API sur un serveur Amazon (SQL dans Docker, environnement d'exécution avec Docker)<br />
*T3. Enrichir l'ensemble de tests et la documentation<br />
*T4. Mettre en place le nouveau modèle pour avoir une autre base de comparaison<br />
<br />
=== Semaine 6 : 27/02 - 05/03 ===<br />
<br />
[[File:Sprint3-Semaine6.png|1400px|middle]]<br />
<br />
====Lundi====<br />
* Conclusion sur le sprint précédent<br />
* Discussion au sujet du nouveau Sprint<br />
* T2. -> Problème de mise en place de Docker sur les machines Amazon : discussion de l'équipe pour essayer de trouver une solution (Swap)<br />
<br />
====Mardi====<br />
* T1.1 -> Ajout des routes pour gérer les ajouts/suppressions en base de données (Julian)<br />
* T1.1 -> Ajout de la logique côté front pour gérer les ajouts/suppressions en base de données (Quentin)<br />
* T1.1 -> Tests de la communication front - back(api) - base de données (Coralie, Julian, Quentin)<br />
* T2 -> Finalisation du déploiement de l'API sur un serveur Amazon + tests (Coralie)<br />
* T3 -> Tests unitaires sur apiTMDB (Elsa) et sur sql (Edwin)<br />
* T1.2 -> Charte graphique (Elsa)<br />
<br />
====Mercredi====<br />
* T1.1 -> Finalisation de l'authentification côté front (Quentin)<br />
* T4 -> Mise en place du nouveau model (factorisation machine) sur un exemple simple d'apprentissage (Quentin, Elsa)<br />
* T3 -> Tests unitaires sur sql (Edwin)<br />
* T3 -> Tests unitaires sur texts, words et tweets (Coralie)<br />
* T3 -> Tests unitaires sur preprocessing (Julian)<br />
* T1.2 -> Charte graphique (Elsa)<br />
<br />
====Jeudi====<br />
* T1.1 -> Modification de l'API pour sauvegarder et charger les modèles utilisateurs : maj routes entrainement + prédiction (Elsa)<br />
* T1.2 -> Page d'accueil côté front (Quentin)<br />
* T3 -> Tests unitaires sur preprocessing (Julian)<br />
* T3 -> Revue de code (Coralie)<br />
* T4 -> Mise en place du prétraitement pour le nouveau modèle (Edwin)<br />
<br />
====Vendredi====<br />
* T1.1 -> Revue de l'apprentissage et de la prédiction de films côté back (Elsa)<br />
* T1.2 -> Liaison du front avec l'apprentissage et la prédiction côté back (Quentin)<br />
* T1.2 -> Ajout de l'analyse de sentiment twitter côté front lors de la suggestion de films (Quentin)<br />
* T3 -> Revue de code des DUT (Julian)<br />
* T3 -> Documentation du code et du projet git (Coralie)<br />
* T4 -> Mise en place du prétraitement pour le nouveau modèle (Edwin)<br />
* Mise à jour de la documentation (Edwin et Coralie)<br />
<br />
=== Semaine 7 : 06/03 - 12/03 ===<br />
<br />
[[File:Sprint3-Semaine7.png|1400px|middle]]<br />
<br />
====Lundi====<br />
* T1.1 -> Mise en place de la prédiction via le nouveau modèle d'apprentissage (Elsa)<br />
* T1.2 -> Liaison du front avec l'apprentissage et la prédiction côté back (Quentin)<br />
* T1.2 -> Ajout de l'analyse de sentiment twitter côté front lors de la suggestion de films (Quentin) + Mise en jours du back-end en conséquent (Coralie)<br />
* T3 -> Revue de code + Commentaires (Julian)<br />
* Mise à jour de la documentation + Préparation soutenance + Préparation de la démonstration (Edwin et Coralie)<br />
<br />
====Mardi====<br />
<br />
====Mercredi====<br />
<br />
====Jeudi====<br />
* Soutenance de fin de projet avec Didier Donsez et Massih-Reza Amini</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Fiche_de_suivi_-_Recommandation_intelligente_de_films&diff=34453Fiche de suivi - Recommandation intelligente de films2017-03-13T10:41:36Z<p>Coralie.Rachex: /* Lundi */</p>
<hr />
<div>Voici la Fiche de suivi du projet de fin d'études DeepMovies 2016-2017<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin (Responsable innovation)<br />
* Hattinguais Julian (Responsable qualité)<br />
* Navarro Elsa (Responsable communication, Médiatrice)<br />
* Dunand Quentin (Responsable des deadlines,Responsable du front-end)<br />
<br />
= Avancée du projet =<br />
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.<br />
<br />
== Sprint 0 ==<br />
<br />
===Sprint dédié aux travaux préparatoires du projet===<br />
* Debriefing autour du projet<br />
* Renseignements sur les technologies et principaux défis techniques<br />
* 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) <br />
* Choix technologiques<br />
* Préparation des environnements<br />
* Établissement de la liste des exigences fonctionnelles et non fonctionnelles<br />
<br />
<br />
[[File:Sprint0-Semaine1.jpg|1400px|middle]]<br />
<br />
=== Semaine 1 : 23/01 - 29/01 ===<br />
* Mise en place du wiki (Edwin)<br />
* Recherche sur les technologies et les problèmes techniques (Tous)<br />
* Prise RDV avec Massih-Reza Amini pour renseignements (Coralie)<br />
* Mise en place d'un agenda pour le suivi du projet (Coralie)<br />
* Comment lier l'API au front-end ? AngularJS ou Polymer ? ... (Quentin)<br />
<br />
* Mise en place de l'architecture (Tous) avant de faire un prototype comme prévu.<br />
* Installation, compréhension et manipulation de Keras (Tous)<br />
* Recherche mise en place API-REST Python pour le back-end (Julian)<br />
* Mise en place du front-end - première requêtes - choix Angular pour communiquer avec une API-REST (Quentin)<br />
* Traitement de données simple en se basant juste sur le vote des utilisateurs de TMDb sur les films (Edwin, Coralie, Elsa)<br />
* 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)<br />
* 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 [http://nlp.stanford.edu/projects/glove/ GloVe].<br />
<br />
<br />
* Rendez-vous avec Massih-Reza Amini pour éclaircir le sujet, notamment au sujet du pré-traitement du texte. (Tous)<br />
* 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).<br />
* 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).<br />
* Mise en place d'un système de notation fonctionnel qui permet d'enregistrer les données à partir du front (Quentin).<br />
<br />
== Sprint 1 ==<br />
<br />
===Tâches du Sprint1===<br />
* T1. Établissement des vues principales côté client (recherche et annotation de films)<br />
* T2. Mise en place du processus de pré-traitement des données (titre, mots clés, résumé, note, artiste, producteur)<br />
* T3. Mise en place du réseau neuronal (réseau neuronal simple)<br />
* T4. Mise en place de la structure de test du réseau neuronal (former les corpus de données, cross validation, test de précision)<br />
* T5. Mise en place de l'environnement système (Docker)<br />
<br />
=== Semaine 2 : 30/01 - 05/02 ===<br />
<br />
[[File:Sprint1-Semaine2.jpg|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* Préparation du premier sprint :<br />
** Mise au point sur le travail réalisé la semaine passée et sur le travail à réaliser durant le sprint<br />
** Établissement d'une liste de fonctionnalités, avec une estimation de l'importance et du temps de réalisation de chaque tâche<br />
** Sélection des fonctionnalités à réaliser au cours du Sprint, remplissage du Scrumboard<br />
* Mise au point sur l'arborescence du git / architecture du projet<br />
* Installation d'une version GPU pour Keras et Tensor-Flow sur les machines équipées d'un bon GPU<br />
<br />
====Mardi====<br />
<br />
* Réunion avec Didier Donsez : <br />
** Technologies : storm, spark, flint (temps réel) pour Twitter<br />
** Distribution : préparer un déploiement sur GRID5000, contacter Olivier Richard et préparer un container Docker<br />
** Utiliser Github pour héberger le site web<br />
<br />
* T1. -> Vues "recherche de films", "annotation de film" et "consultation des films annotés" (Quentin)<br />
* T2. -> Prétraitement des données "titre", "mots clés", "résumé", "notes" (Edwin, Elsa, Coralie, Julian)<br />
** prétraitement des textes via Doc2Vec (Coralie)<br />
** prétraitement des mots via Glove (Elsa, Edwin, Julian)<br />
** récupération des données (Julian)<br />
** mise en place de l'embedding (Edwin)<br />
** mise en place d'une librairie pour le pré-traitement des données envoyées aux classifieur (Julian)<br />
** Import des modules (Julian)<br />
<br />
====Mercredi====<br />
<br />
* T1. -> Chargement des images de films côté client (Quentin)<br />
* T2. -> Prétraitement des données "titre", "mots clés", "résumé", "notes" + Ajout "genre" (Edwin, Elsa, Coralie, Julian)<br />
** prétraitement des textes via Doc2Vec (Coralie)<br />
** extraction des données JSON via l'API (Elsa)<br />
** prétraitement des genres (Julian)<br />
** prétraitement général (mise en forme de la matrice de données) (Edwin)<br />
** revue de code (Julian)<br />
* T5. -> Recherche d'un moyen de distribuer le classifieur sous Keras - Elephas ? (Coralie)<br />
<br />
====Jeudi====<br />
<br />
* Cours de MPI - travail sur la communication au sein d'un groupe<br />
* T1. -> Pagination et chargement d'images (Quentin)<br />
* T3. -> Création d'une première version du classifieur (Elsa, Edwin)<br />
* T4. -> Validation croisée pour pouvoir tester le classifieur correctement (Edwin & Elsa)<br />
* T5. -> Installation version GPU sur PC (Julian)<br />
* T5. -> Recherche d'un moyen de distribuer le classifieur Keras - Elephas (Coralie)<br />
<br />
====Vendredi====<br />
<br />
* T1. -> Déploiement sur github.io (Quentin)<br />
* T3. -> Insertion de Doc2Vec dans le classifieur (Julian)<br />
* T3. -> Revue du classifieur pour obtenir une meilleure précision (Elsa & Edwin)<br />
* T4. -> 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)<br />
* T4. -> Annotation de films pour constituer la base d'apprentissage/test (Tous)<br />
* T5. -> Auto-formation sur Docker (Coralie, Edwin)<br />
<br />
=== Semaine 3 : 06/02 - 12/02 ===<br />
<br />
[[File:Sprint1-Semaine3.jpg|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* Cours de MPI - gestion de projet<br />
* T1. -> Ajout d'un boite de dialogue permettant de visualiser les infos d'un film (Quentin)<br />
* T2. -> Fix de bugs dans preprocessing (Julian)<br />
* T4. -> Recherche sur la mise en place de tests avec Python (Elsa)<br />
* T5. -> Mise en place de l'image Docker avec Python, Keras et Tensorflow en partant d'un Ubuntu 14 (Edwin)<br />
* T5. -> Mise en place de l'image Docker avec Spark en partant d'un Ubuntu 14 (Coralie)<br />
<br />
====Mardi====<br />
<br />
* Rendez-vous avec Mr. Amini<br />
* T1. -> Amélioration de la boîte de dialogue pour les infos (Quentin)<br />
* T2. -> Preprocessing des acteurs et des realisateurs et ajout des fonction de test associées (Julian)<br />
* T2. -> Test le modèle D2V sur un analyseur de sentiment de tweets, beaucoup plus objectif que les gouts utilisateurs vis à vis des films (Coralie).<br />
* T2. -> Mise en place de modules de test unitaires dans MovieProject/tests/unit et suppression de fichiers inutiles dans MovieProject/tests (Elsa)<br />
* T4. -> 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)<br />
* T4. -> Evaluation du classifieur avec la méthode Doc2Vec (Elsa)<br />
* T5. -> Finalisation de l'image Docker avec Python, Keras et Tensorflow (Edwin)<br />
<br />
====Mercredi====<br />
<br />
* T1. -> Création de statistiques sur les goûts utilisateurs côté client (Quentin)<br />
* T4. -> Début de la mise en place des différents modèles d'apprentissage en vue de leur comparaison : <br />
** Réseau neuronal avec Keras (Elsa)<br />
** Perceptron (Coralie)<br />
** Modification du prétraitement afin de pouvoir récupérer les matrices de chacune des variables caractérisant un film (Julian)<br />
* T5. -> Ajout de Spark à l'image Docker (Edwin)<br />
<br />
====Jeudi====<br />
<br />
* T1. -> Poursuite de la création de statistiques sur les goûts utilisateurs côté client (Quentin)<br />
* T4. -> Poursuite des tests de performance :<br />
** 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)<br />
** Test du réseau neuronal (Elsa)<br />
** Mise en place d'un SVM pour concurrencer les performances des deux autres modèles (Julian)<br />
* T5. -> Test de l'image Docker (Edwin)<br />
<br />
====Vendredi====<br />
<br />
* T1. -> Visualisation des statistiques + explications sur la page d'accueil (Quentin)<br />
* T4. -> Finalisation perceptron + intégration dans evaluation (Coralie)<br />
* T4. -> Finalisation SVM + intégration dans evaluation (Julian)<br />
* T4. -> Mise en place du module evaluation et intégration des modifications de classifieur & preprocessing (Elsa)<br />
* T5. -> Documentation sur Spark (Edwin & Coralie)<br />
<br />
===État du scrumboard en fin du Sprint1===<br />
<br />
[[File:Sprint1-end-Scrumboard.png|1080px|middle]]<br />
<br />
== Sprint 2 ==<br />
<br />
===Tâches du Sprint2===<br />
<br />
*T1.2. Amélioration du front-end (mise en cache, etc.)<br />
*T2.2. Ajout de descripteurs (durée, budget, année de production, compagnie de production, appartenance à une sage) en vue d'améliorer notre modèle d'apprentissage.<br />
*T3.2 Amélioration du réseau neuronal (comparaison avec Perceptron simple, SVM, RN Convolutif)<br />
*T4. Mise en place de la suggestion de films (vue côté front-end et logique côté back-end)<br />
*T5. Distribution de l'apprentissage sur plusieurs machines (Docker - Spark - Mesos - Elephas) & Parallélisation requêtes<br />
*T6 Communication front/back, établissement des routes et mise en place du système d'authentification<br />
*T7. Analyse de sentiment sur les flux Twitter<br />
*T8. Mise en place de la base de données<br />
<br />
=== Semaine 4 : 13/02 - 19/02 ===<br />
<br />
[[File:Sprint2-Semaine4.png|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* Réunion de fin de sprint1 et de début de sprint0 : discussion autour des avancées, difficultés, retards & établissement fonctionnalités à implémenter au cours du sprint2<br />
*T1.2 -> Mise en place d'un cache local côté front pour éviter de faire trop de requêtes à l'API TMDB (Quentin)<br />
*T2.2. -> Revue de la structure du code (Julian)<br />
*T3.2. -> Mise en place d'un réseau neuronal de convolution (Coralie)<br />
*T4. -> Amélioration de la prédiction de film (Elsa)<br />
*T5. -> Mise en place d'un cluster Spark via Mesos (Edwin)<br />
<br />
====Mardi====<br />
<br />
*T1.2 -> Mise en place d'un cache local côté front pour éviter de faire trop de requêtes à l'API TMDB (Quentin)<br />
*T3.2 -> Amélioration du classifieur (Elsa/Quentin)<br />
*T3.2. -> Mise en place d'un réseau neuronal de convolution (Coralie)<br />
*T4. -> Amélioration de la prédiction de film (Elsa)<br />
*T5. -> Mise en place d'un cluster Spark via Mesos (Edwin)<br />
*T5. -> Parallélisation des requêtes à l'API TMDB (Julian)<br />
<br />
====Mercredi====<br />
<br />
*T1.2 -> Finalisation du cache local côté front pour éviter de faire trop de requêtes à l'API TMDB (Quentin)<br />
*T1.2 -> Finalisation des statistiques cinématographique utilisateurs (Quentin)<br />
*T2.2. -> Ajout du descripteurs "budget" avec normalisation (Edwin)<br />
*T3.2 -> Mise en place de la fonction de comparaison des combinaisons de descripteurs de films pour faciliter le travail des DUT (Julian)<br />
*T3.2. -> Mise en place d'un réseau neuronal LSTM (Coralie)<br />
*T4. -> Changement de la méthode de prédiction de film (Elsa)<br />
*T6. -> Communication front-back test (Elsa/Quentin)<br />
* SRS (Edwin)<br />
<br />
====Jeudi====<br />
<br />
* Rendez-vous avec les DUT : aide sur l'installation du projet, clone du projet Github. <br />
* Préparation de la présentation (Elsa & Edwin)<br />
* Préparation démo (Quentin & Elsa)<br />
* Mise à jour Wiki, SRS, Scrumboard (Elsa & Edwin)<br />
* Aide des DUT (Edwin & Julian)<br />
* T3.2 -> Evaluation du modèle et comparaison avec SVM et Perceptron de manière graphique (extraire les données et construire des graphes - csv ou matplotlib) (Sébastien & Marceau)<br />
* T7. -> Prétraitement des Tweet(Coralie)<br />
* T5. -> Avancement sur le distribué (Julian)<br />
* T1.2 -> Page de login du front, fix problème de CSS sur les graphes (Quentin)<br />
* T3.2 -> Amélioration du classifieur, tests en changeant les layers, le batch-size, etc. (Quentin)<br />
<br />
====Vendredi====<br />
* Préparation du travail qu'Edwin pourra réaliser durant la semaine de vacances (Edwin travaillera en décalé avec le reste du groupe)<br />
* Début de la mise en place de la base de données (Edwin)<br />
<br />
=== Semaine 5 : 20/02 - 26/02 (Edwin) ===<br />
(Edwin a travaillé la semaine précédente, en décalé avec le reste du groupe)<br />
====Lundi====<br />
*T8. -> Installation des outils liés à la gestion de la base de données MySQL et début de la conception de l'API de communication avec cette base. (Edwin)<br />
====Mardi====<br />
*T8. -> Finalisation de l'API, début des tests et des corrections de bug. (Edwin)<br />
====Mercredi====<br />
*T8. -> Ajout de nouvelles fonctionnalités SQL à l'API et tests de l'API. Création d'un readme et d'un fichier d'exemple complet pour l'utilisation de l'API de MySQL. (Edwin)<br />
*T8. -> Amélioration de l'image Docker, correction de bugs de paths et de librairies manquantes. (Edwin)<br />
====Jeudi====<br />
*T8. -> Review générale du travail lié à la base de données. (Edwin)<br />
*T8. -> Mise en place de MySQL pour Docker. (Edwin)<br />
*Mise à jour du Scrumboard et du wiki-air. (Edwin)<br />
<br />
====Vendredi====<br />
*T8. -> Amélioration du Docker pour tenter de régler des problèmes de ports liés à MySQL (non terminé). (Edwin) <br />
*T8. -> Tests unitaires de fonctionnement de serveurs apaches. (Edwin)<br />
<br />
=== Semaine 5 : 27/02 - 28/02 ===<br />
<br />
[[File:Sprint2-Semaine5.png|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* T1.2 -> Mise en place de la page de recommendations (Quentin)<br />
* Merge du classifieur sur la branche develop, avec la prédiction (Elsa)<br />
* T8. -> Revue de la BD et sécurisation (Julian) puis merge sur develop<br />
* T7. -> Finalisation de l'analyse de sentiments (Coralie) pour merge sur develop<br />
* T3.2 -> Recherche sur une construction différente des matrices (basée sur la factorisation de matrices, cf Prix Netflix) (Quentin & Elsa)<br />
<br />
====Mardi====<br />
* Harmonisation des données merge sur le git (Sentiment analysis, evaluation du classifieur et prediction) (Elsa)<br />
* T6. -> Recherche et premiers tests pour l'authentification (Quentin pour le front et Julian pour le back)<br />
* T8. & T5. -> Creation d'une instance de BD Amazon RDS dans un VPC (Coralie)<br />
* T1.2 -> Finalisation page de recommendations (Quentin)<br />
* Insertion en BD des films annotés par les users (Julian)<br />
<br />
====Mercredi====<br />
* Réunion avec Massih-Reza Amini pour parler d'un nouveau modèle de machine learning (Cf Quentin & Elsa lundi)<br />
* T4. -> Amélioration de la prédiction (Elsa)<br />
* T5. -> Essais déploiement du back sur une instance Amazon EC2 (Coralie)<br />
* T6. -> Mise en place de l'authentification simple (login) (Quentin & Julian)<br />
<br />
====Jeudi====<br />
* T4. -> Amélioration de la prédiction et module de test pour la prédiction (Elsa)<br />
* T5. -> Essais déploiement du back sur une instance Amazon EC2 (Coralie)<br />
* T1.2 -> Création des vues d'inscription (sign up) et début vue des paramètres (Quentin)<br />
* T6. -> Sécurisation des appels à l'API par Token (Julian)<br />
<br />
====Vendredi====<br />
* Nettoyage de develop + mise en place de nouveaux tests et état des lieux des tests et de la doc à faire (Elsa)<br />
* T5. -> Essais déploiement du back sur une instance Amazon EC2 (Coralie)<br />
* T6. -> Finalisation de l'inscription et test des premiers appels de récupération des films annotés d'un user (Quentin & Julian)<br />
<br />
===État du scrumboard en fin du Sprint2===<br />
<br />
[[File:Sprint2-end-Scrumboard.png|1080px|middle]]<br />
<br />
== Sprint 3 ==<br />
<br />
===Tâches du Sprint3===<br />
<br />
*T1.1 Lier le back et le front, mettre en place les routes (suggestion, annotation) - Authentification faite<br />
*T1.2 Revoir et enrichir les vues du front<br />
*T2. Déployer l'API sur un serveur Amazon (SQL dans Docker, environnement d'exécution avec Docker)<br />
*T3. Enrichir l'ensemble de tests et la documentation<br />
*T4. Mettre en place le nouveau modèle pour avoir une autre base de comparaison<br />
<br />
=== Semaine 6 : 27/02 - 05/03 ===<br />
<br />
[[File:Sprint3-Semaine6.png|1400px|middle]]<br />
<br />
====Lundi====<br />
* Conclusion sur le sprint précédent<br />
* Discussion au sujet du nouveau Sprint<br />
* T2. -> Problème de mise en place de Docker sur les machines Amazon : discussion de l'équipe pour essayer de trouver une solution (Swap)<br />
<br />
====Mardi====<br />
* T1.1 -> Ajout des routes pour gérer les ajouts/suppressions en base de données (Julian)<br />
* T1.1 -> Ajout de la logique côté front pour gérer les ajouts/suppressions en base de données (Quentin)<br />
* T1.1 -> Tests de la communication front - back(api) - base de données (Coralie, Julian, Quentin)<br />
* T2 -> Finalisation du déploiement de l'API sur un serveur Amazon + tests (Coralie)<br />
* T3 -> Tests unitaires sur apiTMDB (Elsa) et sur sql (Edwin)<br />
* T1.2 -> Charte graphique (Elsa)<br />
<br />
====Mercredi====<br />
* T1.1 -> Finalisation de l'authentification côté front (Quentin)<br />
* T4 -> Mise en place du nouveau model (factorisation machine) sur un exemple simple d'apprentissage (Quentin, Elsa)<br />
* T3 -> Tests unitaires sur sql (Edwin)<br />
* T3 -> Tests unitaires sur texts, words et tweets (Coralie)<br />
* T3 -> Tests unitaires sur preprocessing (Julian)<br />
* T1.2 -> Charte graphique (Elsa)<br />
<br />
====Jeudi====<br />
* T1.1 -> Modification de l'API pour sauvegarder et charger les modèles utilisateurs : maj routes entrainement + prédiction (Elsa)<br />
* T1.2 -> Page d'accueil côté front (Quentin)<br />
* T3 -> Tests unitaires sur preprocessing (Julian)<br />
* T3 -> Revue de code (Coralie)<br />
* T4 -> Mise en place du prétraitement pour le nouveau modèle (Edwin)<br />
<br />
====Vendredi====<br />
* T1.1 -> Revue de l'apprentissage et de la prédiction de films côté back (Elsa)<br />
* T1.2 -> Liaison du front avec l'apprentissage et la prédiction côté back (Quentin)<br />
* T1.2 -> Ajout de l'analyse de sentiment twitter côté front lors de la suggestion de films (Quentin)<br />
* T3 -> Revue de code des DUT (Julian)<br />
* T3 -> Documentation du code et du projet git (Coralie)<br />
* T4 -> Mise en place du prétraitement pour le nouveau modèle (Edwin)<br />
* Mise à jour de la documentation (Edwin et Coralie)<br />
<br />
=== Semaine 7 : 06/03 - 12/03 ===<br />
<br />
[[File:Sprint3-Semaine7.png|1400px|middle]]<br />
<br />
====Lundi====<br />
* T1.1 -> Mise en place de la prédiction via le nouveau modèle d'apprentissage (Elsa)<br />
* T1.2 -> Liaison du front avec l'apprentissage et la prédiction côté back (Quentin)<br />
* T1.2 -> Ajout de l'analyse de sentiment twitter côté front lors de la suggestion de films (Quentin) + Mise en jours du back-end en conséquent (Coralie)<br />
* T3 -> Revue de code + Commentaires (Julian)<br />
* Mise à jour de la documentation + Préparation soutenance (Edwin et Coralie)<br />
<br />
====Mardi====<br />
<br />
====Mercredi====<br />
<br />
====Jeudi====<br />
* Soutenance de fin de projet avec Didier Donsez et Massih-Reza Amini</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Fiche_de_suivi_-_Recommandation_intelligente_de_films&diff=34451Fiche de suivi - Recommandation intelligente de films2017-03-13T10:41:14Z<p>Coralie.Rachex: /* Semaine 7 : 06/03 - 12/03 */</p>
<hr />
<div>Voici la Fiche de suivi du projet de fin d'études DeepMovies 2016-2017<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin (Responsable innovation)<br />
* Hattinguais Julian (Responsable qualité)<br />
* Navarro Elsa (Responsable communication, Médiatrice)<br />
* Dunand Quentin (Responsable des deadlines,Responsable du front-end)<br />
<br />
= Avancée du projet =<br />
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.<br />
<br />
== Sprint 0 ==<br />
<br />
===Sprint dédié aux travaux préparatoires du projet===<br />
* Debriefing autour du projet<br />
* Renseignements sur les technologies et principaux défis techniques<br />
* 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) <br />
* Choix technologiques<br />
* Préparation des environnements<br />
* Établissement de la liste des exigences fonctionnelles et non fonctionnelles<br />
<br />
<br />
[[File:Sprint0-Semaine1.jpg|1400px|middle]]<br />
<br />
=== Semaine 1 : 23/01 - 29/01 ===<br />
* Mise en place du wiki (Edwin)<br />
* Recherche sur les technologies et les problèmes techniques (Tous)<br />
* Prise RDV avec Massih-Reza Amini pour renseignements (Coralie)<br />
* Mise en place d'un agenda pour le suivi du projet (Coralie)<br />
* Comment lier l'API au front-end ? AngularJS ou Polymer ? ... (Quentin)<br />
<br />
* Mise en place de l'architecture (Tous) avant de faire un prototype comme prévu.<br />
* Installation, compréhension et manipulation de Keras (Tous)<br />
* Recherche mise en place API-REST Python pour le back-end (Julian)<br />
* Mise en place du front-end - première requêtes - choix Angular pour communiquer avec une API-REST (Quentin)<br />
* Traitement de données simple en se basant juste sur le vote des utilisateurs de TMDb sur les films (Edwin, Coralie, Elsa)<br />
* 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)<br />
* 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 [http://nlp.stanford.edu/projects/glove/ GloVe].<br />
<br />
<br />
* Rendez-vous avec Massih-Reza Amini pour éclaircir le sujet, notamment au sujet du pré-traitement du texte. (Tous)<br />
* 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).<br />
* 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).<br />
* Mise en place d'un système de notation fonctionnel qui permet d'enregistrer les données à partir du front (Quentin).<br />
<br />
== Sprint 1 ==<br />
<br />
===Tâches du Sprint1===<br />
* T1. Établissement des vues principales côté client (recherche et annotation de films)<br />
* T2. Mise en place du processus de pré-traitement des données (titre, mots clés, résumé, note, artiste, producteur)<br />
* T3. Mise en place du réseau neuronal (réseau neuronal simple)<br />
* T4. Mise en place de la structure de test du réseau neuronal (former les corpus de données, cross validation, test de précision)<br />
* T5. Mise en place de l'environnement système (Docker)<br />
<br />
=== Semaine 2 : 30/01 - 05/02 ===<br />
<br />
[[File:Sprint1-Semaine2.jpg|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* Préparation du premier sprint :<br />
** Mise au point sur le travail réalisé la semaine passée et sur le travail à réaliser durant le sprint<br />
** Établissement d'une liste de fonctionnalités, avec une estimation de l'importance et du temps de réalisation de chaque tâche<br />
** Sélection des fonctionnalités à réaliser au cours du Sprint, remplissage du Scrumboard<br />
* Mise au point sur l'arborescence du git / architecture du projet<br />
* Installation d'une version GPU pour Keras et Tensor-Flow sur les machines équipées d'un bon GPU<br />
<br />
====Mardi====<br />
<br />
* Réunion avec Didier Donsez : <br />
** Technologies : storm, spark, flint (temps réel) pour Twitter<br />
** Distribution : préparer un déploiement sur GRID5000, contacter Olivier Richard et préparer un container Docker<br />
** Utiliser Github pour héberger le site web<br />
<br />
* T1. -> Vues "recherche de films", "annotation de film" et "consultation des films annotés" (Quentin)<br />
* T2. -> Prétraitement des données "titre", "mots clés", "résumé", "notes" (Edwin, Elsa, Coralie, Julian)<br />
** prétraitement des textes via Doc2Vec (Coralie)<br />
** prétraitement des mots via Glove (Elsa, Edwin, Julian)<br />
** récupération des données (Julian)<br />
** mise en place de l'embedding (Edwin)<br />
** mise en place d'une librairie pour le pré-traitement des données envoyées aux classifieur (Julian)<br />
** Import des modules (Julian)<br />
<br />
====Mercredi====<br />
<br />
* T1. -> Chargement des images de films côté client (Quentin)<br />
* T2. -> Prétraitement des données "titre", "mots clés", "résumé", "notes" + Ajout "genre" (Edwin, Elsa, Coralie, Julian)<br />
** prétraitement des textes via Doc2Vec (Coralie)<br />
** extraction des données JSON via l'API (Elsa)<br />
** prétraitement des genres (Julian)<br />
** prétraitement général (mise en forme de la matrice de données) (Edwin)<br />
** revue de code (Julian)<br />
* T5. -> Recherche d'un moyen de distribuer le classifieur sous Keras - Elephas ? (Coralie)<br />
<br />
====Jeudi====<br />
<br />
* Cours de MPI - travail sur la communication au sein d'un groupe<br />
* T1. -> Pagination et chargement d'images (Quentin)<br />
* T3. -> Création d'une première version du classifieur (Elsa, Edwin)<br />
* T4. -> Validation croisée pour pouvoir tester le classifieur correctement (Edwin & Elsa)<br />
* T5. -> Installation version GPU sur PC (Julian)<br />
* T5. -> Recherche d'un moyen de distribuer le classifieur Keras - Elephas (Coralie)<br />
<br />
====Vendredi====<br />
<br />
* T1. -> Déploiement sur github.io (Quentin)<br />
* T3. -> Insertion de Doc2Vec dans le classifieur (Julian)<br />
* T3. -> Revue du classifieur pour obtenir une meilleure précision (Elsa & Edwin)<br />
* T4. -> 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)<br />
* T4. -> Annotation de films pour constituer la base d'apprentissage/test (Tous)<br />
* T5. -> Auto-formation sur Docker (Coralie, Edwin)<br />
<br />
=== Semaine 3 : 06/02 - 12/02 ===<br />
<br />
[[File:Sprint1-Semaine3.jpg|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* Cours de MPI - gestion de projet<br />
* T1. -> Ajout d'un boite de dialogue permettant de visualiser les infos d'un film (Quentin)<br />
* T2. -> Fix de bugs dans preprocessing (Julian)<br />
* T4. -> Recherche sur la mise en place de tests avec Python (Elsa)<br />
* T5. -> Mise en place de l'image Docker avec Python, Keras et Tensorflow en partant d'un Ubuntu 14 (Edwin)<br />
* T5. -> Mise en place de l'image Docker avec Spark en partant d'un Ubuntu 14 (Coralie)<br />
<br />
====Mardi====<br />
<br />
* Rendez-vous avec Mr. Amini<br />
* T1. -> Amélioration de la boîte de dialogue pour les infos (Quentin)<br />
* T2. -> Preprocessing des acteurs et des realisateurs et ajout des fonction de test associées (Julian)<br />
* T2. -> Test le modèle D2V sur un analyseur de sentiment de tweets, beaucoup plus objectif que les gouts utilisateurs vis à vis des films (Coralie).<br />
* T2. -> Mise en place de modules de test unitaires dans MovieProject/tests/unit et suppression de fichiers inutiles dans MovieProject/tests (Elsa)<br />
* T4. -> 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)<br />
* T4. -> Evaluation du classifieur avec la méthode Doc2Vec (Elsa)<br />
* T5. -> Finalisation de l'image Docker avec Python, Keras et Tensorflow (Edwin)<br />
<br />
====Mercredi====<br />
<br />
* T1. -> Création de statistiques sur les goûts utilisateurs côté client (Quentin)<br />
* T4. -> Début de la mise en place des différents modèles d'apprentissage en vue de leur comparaison : <br />
** Réseau neuronal avec Keras (Elsa)<br />
** Perceptron (Coralie)<br />
** Modification du prétraitement afin de pouvoir récupérer les matrices de chacune des variables caractérisant un film (Julian)<br />
* T5. -> Ajout de Spark à l'image Docker (Edwin)<br />
<br />
====Jeudi====<br />
<br />
* T1. -> Poursuite de la création de statistiques sur les goûts utilisateurs côté client (Quentin)<br />
* T4. -> Poursuite des tests de performance :<br />
** 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)<br />
** Test du réseau neuronal (Elsa)<br />
** Mise en place d'un SVM pour concurrencer les performances des deux autres modèles (Julian)<br />
* T5. -> Test de l'image Docker (Edwin)<br />
<br />
====Vendredi====<br />
<br />
* T1. -> Visualisation des statistiques + explications sur la page d'accueil (Quentin)<br />
* T4. -> Finalisation perceptron + intégration dans evaluation (Coralie)<br />
* T4. -> Finalisation SVM + intégration dans evaluation (Julian)<br />
* T4. -> Mise en place du module evaluation et intégration des modifications de classifieur & preprocessing (Elsa)<br />
* T5. -> Documentation sur Spark (Edwin & Coralie)<br />
<br />
===État du scrumboard en fin du Sprint1===<br />
<br />
[[File:Sprint1-end-Scrumboard.png|1080px|middle]]<br />
<br />
== Sprint 2 ==<br />
<br />
===Tâches du Sprint2===<br />
<br />
*T1.2. Amélioration du front-end (mise en cache, etc.)<br />
*T2.2. Ajout de descripteurs (durée, budget, année de production, compagnie de production, appartenance à une sage) en vue d'améliorer notre modèle d'apprentissage.<br />
*T3.2 Amélioration du réseau neuronal (comparaison avec Perceptron simple, SVM, RN Convolutif)<br />
*T4. Mise en place de la suggestion de films (vue côté front-end et logique côté back-end)<br />
*T5. Distribution de l'apprentissage sur plusieurs machines (Docker - Spark - Mesos - Elephas) & Parallélisation requêtes<br />
*T6 Communication front/back, établissement des routes et mise en place du système d'authentification<br />
*T7. Analyse de sentiment sur les flux Twitter<br />
*T8. Mise en place de la base de données<br />
<br />
=== Semaine 4 : 13/02 - 19/02 ===<br />
<br />
[[File:Sprint2-Semaine4.png|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* Réunion de fin de sprint1 et de début de sprint0 : discussion autour des avancées, difficultés, retards & établissement fonctionnalités à implémenter au cours du sprint2<br />
*T1.2 -> Mise en place d'un cache local côté front pour éviter de faire trop de requêtes à l'API TMDB (Quentin)<br />
*T2.2. -> Revue de la structure du code (Julian)<br />
*T3.2. -> Mise en place d'un réseau neuronal de convolution (Coralie)<br />
*T4. -> Amélioration de la prédiction de film (Elsa)<br />
*T5. -> Mise en place d'un cluster Spark via Mesos (Edwin)<br />
<br />
====Mardi====<br />
<br />
*T1.2 -> Mise en place d'un cache local côté front pour éviter de faire trop de requêtes à l'API TMDB (Quentin)<br />
*T3.2 -> Amélioration du classifieur (Elsa/Quentin)<br />
*T3.2. -> Mise en place d'un réseau neuronal de convolution (Coralie)<br />
*T4. -> Amélioration de la prédiction de film (Elsa)<br />
*T5. -> Mise en place d'un cluster Spark via Mesos (Edwin)<br />
*T5. -> Parallélisation des requêtes à l'API TMDB (Julian)<br />
<br />
====Mercredi====<br />
<br />
*T1.2 -> Finalisation du cache local côté front pour éviter de faire trop de requêtes à l'API TMDB (Quentin)<br />
*T1.2 -> Finalisation des statistiques cinématographique utilisateurs (Quentin)<br />
*T2.2. -> Ajout du descripteurs "budget" avec normalisation (Edwin)<br />
*T3.2 -> Mise en place de la fonction de comparaison des combinaisons de descripteurs de films pour faciliter le travail des DUT (Julian)<br />
*T3.2. -> Mise en place d'un réseau neuronal LSTM (Coralie)<br />
*T4. -> Changement de la méthode de prédiction de film (Elsa)<br />
*T6. -> Communication front-back test (Elsa/Quentin)<br />
* SRS (Edwin)<br />
<br />
====Jeudi====<br />
<br />
* Rendez-vous avec les DUT : aide sur l'installation du projet, clone du projet Github. <br />
* Préparation de la présentation (Elsa & Edwin)<br />
* Préparation démo (Quentin & Elsa)<br />
* Mise à jour Wiki, SRS, Scrumboard (Elsa & Edwin)<br />
* Aide des DUT (Edwin & Julian)<br />
* T3.2 -> Evaluation du modèle et comparaison avec SVM et Perceptron de manière graphique (extraire les données et construire des graphes - csv ou matplotlib) (Sébastien & Marceau)<br />
* T7. -> Prétraitement des Tweet(Coralie)<br />
* T5. -> Avancement sur le distribué (Julian)<br />
* T1.2 -> Page de login du front, fix problème de CSS sur les graphes (Quentin)<br />
* T3.2 -> Amélioration du classifieur, tests en changeant les layers, le batch-size, etc. (Quentin)<br />
<br />
====Vendredi====<br />
* Préparation du travail qu'Edwin pourra réaliser durant la semaine de vacances (Edwin travaillera en décalé avec le reste du groupe)<br />
* Début de la mise en place de la base de données (Edwin)<br />
<br />
=== Semaine 5 : 20/02 - 26/02 (Edwin) ===<br />
(Edwin a travaillé la semaine précédente, en décalé avec le reste du groupe)<br />
====Lundi====<br />
*T8. -> Installation des outils liés à la gestion de la base de données MySQL et début de la conception de l'API de communication avec cette base. (Edwin)<br />
====Mardi====<br />
*T8. -> Finalisation de l'API, début des tests et des corrections de bug. (Edwin)<br />
====Mercredi====<br />
*T8. -> Ajout de nouvelles fonctionnalités SQL à l'API et tests de l'API. Création d'un readme et d'un fichier d'exemple complet pour l'utilisation de l'API de MySQL. (Edwin)<br />
*T8. -> Amélioration de l'image Docker, correction de bugs de paths et de librairies manquantes. (Edwin)<br />
====Jeudi====<br />
*T8. -> Review générale du travail lié à la base de données. (Edwin)<br />
*T8. -> Mise en place de MySQL pour Docker. (Edwin)<br />
*Mise à jour du Scrumboard et du wiki-air. (Edwin)<br />
<br />
====Vendredi====<br />
*T8. -> Amélioration du Docker pour tenter de régler des problèmes de ports liés à MySQL (non terminé). (Edwin) <br />
*T8. -> Tests unitaires de fonctionnement de serveurs apaches. (Edwin)<br />
<br />
=== Semaine 5 : 27/02 - 28/02 ===<br />
<br />
[[File:Sprint2-Semaine5.png|1400px|middle]]<br />
<br />
====Lundi====<br />
<br />
* T1.2 -> Mise en place de la page de recommendations (Quentin)<br />
* Merge du classifieur sur la branche develop, avec la prédiction (Elsa)<br />
* T8. -> Revue de la BD et sécurisation (Julian) puis merge sur develop<br />
* T7. -> Finalisation de l'analyse de sentiments (Coralie) pour merge sur develop<br />
* T3.2 -> Recherche sur une construction différente des matrices (basée sur la factorisation de matrices, cf Prix Netflix) (Quentin & Elsa)<br />
<br />
====Mardi====<br />
* Harmonisation des données merge sur le git (Sentiment analysis, evaluation du classifieur et prediction) (Elsa)<br />
* T6. -> Recherche et premiers tests pour l'authentification (Quentin pour le front et Julian pour le back)<br />
* T8. & T5. -> Creation d'une instance de BD Amazon RDS dans un VPC (Coralie)<br />
* T1.2 -> Finalisation page de recommendations (Quentin)<br />
* Insertion en BD des films annotés par les users (Julian)<br />
<br />
====Mercredi====<br />
* Réunion avec Massih-Reza Amini pour parler d'un nouveau modèle de machine learning (Cf Quentin & Elsa lundi)<br />
* T4. -> Amélioration de la prédiction (Elsa)<br />
* T5. -> Essais déploiement du back sur une instance Amazon EC2 (Coralie)<br />
* T6. -> Mise en place de l'authentification simple (login) (Quentin & Julian)<br />
<br />
====Jeudi====<br />
* T4. -> Amélioration de la prédiction et module de test pour la prédiction (Elsa)<br />
* T5. -> Essais déploiement du back sur une instance Amazon EC2 (Coralie)<br />
* T1.2 -> Création des vues d'inscription (sign up) et début vue des paramètres (Quentin)<br />
* T6. -> Sécurisation des appels à l'API par Token (Julian)<br />
<br />
====Vendredi====<br />
* Nettoyage de develop + mise en place de nouveaux tests et état des lieux des tests et de la doc à faire (Elsa)<br />
* T5. -> Essais déploiement du back sur une instance Amazon EC2 (Coralie)<br />
* T6. -> Finalisation de l'inscription et test des premiers appels de récupération des films annotés d'un user (Quentin & Julian)<br />
<br />
===État du scrumboard en fin du Sprint2===<br />
<br />
[[File:Sprint2-end-Scrumboard.png|1080px|middle]]<br />
<br />
== Sprint 3 ==<br />
<br />
===Tâches du Sprint3===<br />
<br />
*T1.1 Lier le back et le front, mettre en place les routes (suggestion, annotation) - Authentification faite<br />
*T1.2 Revoir et enrichir les vues du front<br />
*T2. Déployer l'API sur un serveur Amazon (SQL dans Docker, environnement d'exécution avec Docker)<br />
*T3. Enrichir l'ensemble de tests et la documentation<br />
*T4. Mettre en place le nouveau modèle pour avoir une autre base de comparaison<br />
<br />
=== Semaine 6 : 27/02 - 05/03 ===<br />
<br />
[[File:Sprint3-Semaine6.png|1400px|middle]]<br />
<br />
====Lundi====<br />
* Conclusion sur le sprint précédent<br />
* Discussion au sujet du nouveau Sprint<br />
* T2. -> Problème de mise en place de Docker sur les machines Amazon : discussion de l'équipe pour essayer de trouver une solution (Swap)<br />
<br />
====Mardi====<br />
* T1.1 -> Ajout des routes pour gérer les ajouts/suppressions en base de données (Julian)<br />
* T1.1 -> Ajout de la logique côté front pour gérer les ajouts/suppressions en base de données (Quentin)<br />
* T1.1 -> Tests de la communication front - back(api) - base de données (Coralie, Julian, Quentin)<br />
* T2 -> Finalisation du déploiement de l'API sur un serveur Amazon + tests (Coralie)<br />
* T3 -> Tests unitaires sur apiTMDB (Elsa) et sur sql (Edwin)<br />
* T1.2 -> Charte graphique (Elsa)<br />
<br />
====Mercredi====<br />
* T1.1 -> Finalisation de l'authentification côté front (Quentin)<br />
* T4 -> Mise en place du nouveau model (factorisation machine) sur un exemple simple d'apprentissage (Quentin, Elsa)<br />
* T3 -> Tests unitaires sur sql (Edwin)<br />
* T3 -> Tests unitaires sur texts, words et tweets (Coralie)<br />
* T3 -> Tests unitaires sur preprocessing (Julian)<br />
* T1.2 -> Charte graphique (Elsa)<br />
<br />
====Jeudi====<br />
* T1.1 -> Modification de l'API pour sauvegarder et charger les modèles utilisateurs : maj routes entrainement + prédiction (Elsa)<br />
* T1.2 -> Page d'accueil côté front (Quentin)<br />
* T3 -> Tests unitaires sur preprocessing (Julian)<br />
* T3 -> Revue de code (Coralie)<br />
* T4 -> Mise en place du prétraitement pour le nouveau modèle (Edwin)<br />
<br />
====Vendredi====<br />
* T1.1 -> Revue de l'apprentissage et de la prédiction de films côté back (Elsa)<br />
* T1.2 -> Liaison du front avec l'apprentissage et la prédiction côté back (Quentin)<br />
* T1.2 -> Ajout de l'analyse de sentiment twitter côté front lors de la suggestion de films (Quentin)<br />
* T3 -> Revue de code des DUT (Julian)<br />
* T3 -> Documentation du code et du projet git (Coralie)<br />
* T4 -> Mise en place du prétraitement pour le nouveau modèle (Edwin)<br />
* Mise à jour de la documentation (Edwin et Coralie)<br />
<br />
=== Semaine 7 : 06/03 - 12/03 ===<br />
<br />
[[File:Sprint3-Semaine7.png|1400px|middle]]<br />
<br />
====Lundi====<br />
* T1.1 -> Mise en place de la prédiction via le nouveau modèle d'apprentissage (Elsa)<br />
* T1.2 -> Liaison du front avec l'apprentissage et la prédiction côté back (Quentin)<br />
* T1.2 -> Ajout de l'analyse de sentiment twitter côté front lors de la suggestion de films (Quentin) + Mise en jours du back-end en conséquent (Coralie)<br />
* T3 -> Revue de code + Commentaires (Julian)<br />
Mise à jour de la documentation + Préparation soutenance (Edwin et Coralie) <br />
<br />
====Mardi====<br />
<br />
====Mercredi====<br />
<br />
====Jeudi====<br />
* Soutenance de fin de projet avec Didier Donsez et Massih-Reza Amini</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Conception_-_Recommandation_intelligente_de_films&diff=34446Conception - Recommandation intelligente de films2017-03-13T09:54:50Z<p>Coralie.Rachex: /* Schéma de la structure de l'application */</p>
<hr />
<div>Voici la fiche de conception du projet 'Recommandation intelligente de films'.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
= Schéma de la structure de l'application =<br />
<br />
La partie back-end de l'application sera répartie sur deux serveurs Amazon, l'un pour notre base de données et l'autre pour notre API. Notre serveur de fichier est logé sur le même serveur que l'API car nous disposons uniquement de deux comptes Amazon AWT avec la version d’essai gratuite encore active. A l'avenir il faudrait reloger ce serveur de fichier sur un serveur propre et répliquer les serveurs pour mieux résister à la charge et aux pannes.<br />
<br />
[[Image:ConceptionSysteme.png|1000px|center]]<br />
<br />
= Choix des langages de programmation =<br />
* '''Python :''' pour le back-end<br />
* '''AngularJS :''' pour le front-end<br />
* '''MySql :''' pour la base de données<br />
<br />
= Choix technologiques =<br />
* '''TensorFlow :''' librairie open source pour l'apprentissage automatique, utilisant des graphiques de flux de données.<br />
* '''Keras :''' librairie de réseaux neuronaux de haut niveau, écrite en Python et capable de fonctionner au dessus de TensorFlow.<br />
* '''Flask :''' framework open-source de développement web en Python.<br />
<br />
= API en back-end =<br />
<br />
Pour utiliser pleinement l'API, il faut que l'utilisateur soit connecté car les données enregistrées en BD sont associées à l'id de l'utilisateur. Ceci permet à chaque utilisateur d'avoir ses données propres et de les conserver entre deux connexions. <br />
<br />
{| class="wikitable left" width="100%"<br />
|+ align="left" | Routes<br />
|-<br />
! scope=col width="5%" | Requête<br />
! scope=col width="18%" | Route<br />
! scope=col | Description<br />
! scope=col width="12%" | Permission<br />
|-<br />
| POST<br />
| /auth/signup<br />
| Création d'un compte utilisateur<br />
|<br />
|-<br />
| POST<br />
| /auth/login<br />
| Connexion d'un utilisateur<br />
|<br />
|-<br />
| <br />
| /auth/logout<br />
| Déconnexion d'un utilisateur<br />
|<br />
|-<br />
| POST<br />
| /api/updateMovies<br />
| Met à jours la liste des films annotés par l'utilisateur<br />
| L'utilisateur doit être connecté<br />
|-<br />
| GET<br />
| /api/likedMovies/<string:opinion><br />
| Récupère en base de données, la liste des films que l'utilisateur à aimé si opinion="liked", pas aimé si opinion="disliked" ou alors tous les films si opinion="all".<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/likedMovie/<int:idMovie>/<int:isLiked><br />
| Ajoute en base de données, le film d'idMovie=idTMDB avec isLiked=0 si le film n'a pas été apprécié ou isLiked=1 si le film à été apprécié<br />
| L'utilisateur doit être connecté<br />
|-<br />
| PUT<br />
| /api/likedMovie/<int:idMovie>/<int:isLiked><br />
| Met à jours en base de données, le film d'idMovie=idTMDB avec isLiked=0 si le film n'a pas été apprécié ou isLiked=1 si le film à été apprécié<br />
| L'utilisateur doit être connecté<br />
|-<br />
| DELETE<br />
| /api/likedMovie/<int:idMovie><br />
| Supprime de la base de données, le film d'idMovie=idTMDB associé à l'utilisateur<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/train<br />
| Lance l'entrainement du modèle avec les films annotés par l'utilisateur, présents en base de données.<br />
| L'utilisateur doit être connecté<br />
|-<br />
| GET<br />
| /api/prediction<br />
| Lance une prédiction à partir du modèle de l'utilisateur et retourne une liste de recommandation de films.<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/popularity<br />
| Lance la recherche de popularité sur Twitter et retourne une liste de films ordonnée par popularité décroissante et une seconde liste ordonnée par avis décroissant<br />
| L'utilisateur doit être connecté<br />
|}</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Conception_-_Recommandation_intelligente_de_films&diff=34445Conception - Recommandation intelligente de films2017-03-13T09:54:31Z<p>Coralie.Rachex: /* Schéma de la structure de l'application */</p>
<hr />
<div>Voici la fiche de conception du projet 'Recommandation intelligente de films'.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
= Schéma de la structure de l'application =<br />
<br />
La partie Back-end de l'application est répartie sur deux serveurs Amazon, l'un pour notre base de données et l'autre pour notre API. Notre serveur de fichier est logé sur le même serveur que l'API car nous disposons uniquement de deux comptes Amazon AWT avec la version d’essai gratuite encore active. A l'avenir il faudrait reloger ce serveur de fichier sur un serveur propre et répliquer les serveurs pour mieux résister à la charge et aux pannes.<br />
<br />
[[Image:ConceptionSysteme.png|1000px|center]]<br />
<br />
= Choix des langages de programmation =<br />
* '''Python :''' pour le back-end<br />
* '''AngularJS :''' pour le front-end<br />
* '''MySql :''' pour la base de données<br />
<br />
= Choix technologiques =<br />
* '''TensorFlow :''' librairie open source pour l'apprentissage automatique, utilisant des graphiques de flux de données.<br />
* '''Keras :''' librairie de réseaux neuronaux de haut niveau, écrite en Python et capable de fonctionner au dessus de TensorFlow.<br />
* '''Flask :''' framework open-source de développement web en Python.<br />
<br />
= API en back-end =<br />
<br />
Pour utiliser pleinement l'API, il faut que l'utilisateur soit connecté car les données enregistrées en BD sont associées à l'id de l'utilisateur. Ceci permet à chaque utilisateur d'avoir ses données propres et de les conserver entre deux connexions. <br />
<br />
{| class="wikitable left" width="100%"<br />
|+ align="left" | Routes<br />
|-<br />
! scope=col width="5%" | Requête<br />
! scope=col width="18%" | Route<br />
! scope=col | Description<br />
! scope=col width="12%" | Permission<br />
|-<br />
| POST<br />
| /auth/signup<br />
| Création d'un compte utilisateur<br />
|<br />
|-<br />
| POST<br />
| /auth/login<br />
| Connexion d'un utilisateur<br />
|<br />
|-<br />
| <br />
| /auth/logout<br />
| Déconnexion d'un utilisateur<br />
|<br />
|-<br />
| POST<br />
| /api/updateMovies<br />
| Met à jours la liste des films annotés par l'utilisateur<br />
| L'utilisateur doit être connecté<br />
|-<br />
| GET<br />
| /api/likedMovies/<string:opinion><br />
| Récupère en base de données, la liste des films que l'utilisateur à aimé si opinion="liked", pas aimé si opinion="disliked" ou alors tous les films si opinion="all".<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/likedMovie/<int:idMovie>/<int:isLiked><br />
| Ajoute en base de données, le film d'idMovie=idTMDB avec isLiked=0 si le film n'a pas été apprécié ou isLiked=1 si le film à été apprécié<br />
| L'utilisateur doit être connecté<br />
|-<br />
| PUT<br />
| /api/likedMovie/<int:idMovie>/<int:isLiked><br />
| Met à jours en base de données, le film d'idMovie=idTMDB avec isLiked=0 si le film n'a pas été apprécié ou isLiked=1 si le film à été apprécié<br />
| L'utilisateur doit être connecté<br />
|-<br />
| DELETE<br />
| /api/likedMovie/<int:idMovie><br />
| Supprime de la base de données, le film d'idMovie=idTMDB associé à l'utilisateur<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/train<br />
| Lance l'entrainement du modèle avec les films annotés par l'utilisateur, présents en base de données.<br />
| L'utilisateur doit être connecté<br />
|-<br />
| GET<br />
| /api/prediction<br />
| Lance une prédiction à partir du modèle de l'utilisateur et retourne une liste de recommandation de films.<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/popularity<br />
| Lance la recherche de popularité sur Twitter et retourne une liste de films ordonnée par popularité décroissante et une seconde liste ordonnée par avis décroissant<br />
| L'utilisateur doit être connecté<br />
|}</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=File:ConceptionSysteme.png&diff=34443File:ConceptionSysteme.png2017-03-13T09:49:19Z<p>Coralie.Rachex: Coralie.Rachex uploaded a new version of &quot;File:ConceptionSysteme.png&quot;</p>
<hr />
<div></div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Conception_-_Recommandation_intelligente_de_films&diff=34442Conception - Recommandation intelligente de films2017-03-13T09:38:24Z<p>Coralie.Rachex: /* Schéma de la structure de l'application */</p>
<hr />
<div>Voici la fiche de conception du projet 'Recommandation intelligente de films'.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
= Schéma de la structure de l'application =<br />
<br />
[[Image:ConceptionSysteme.png|1000px|center]]<br />
<br />
= Choix des langages de programmation =<br />
* '''Python :''' pour le back-end<br />
* '''AngularJS :''' pour le front-end<br />
* '''MySql :''' pour la base de données<br />
<br />
= Choix technologiques =<br />
* '''TensorFlow :''' librairie open source pour l'apprentissage automatique, utilisant des graphiques de flux de données.<br />
* '''Keras :''' librairie de réseaux neuronaux de haut niveau, écrite en Python et capable de fonctionner au dessus de TensorFlow.<br />
* '''Flask :''' framework open-source de développement web en Python.<br />
<br />
= API en back-end =<br />
<br />
Pour utiliser pleinement l'API, il faut que l'utilisateur soit connecté car les données enregistrées en BD sont associées à l'id de l'utilisateur. Ceci permet à chaque utilisateur d'avoir ses données propres et de les conserver entre deux connexions. <br />
<br />
{| class="wikitable left" width="100%"<br />
|+ align="left" | Routes<br />
|-<br />
! scope=col width="5%" | Requête<br />
! scope=col width="18%" | Route<br />
! scope=col | Description<br />
! scope=col width="12%" | Permission<br />
|-<br />
| POST<br />
| /auth/signup<br />
| Création d'un compte utilisateur<br />
|<br />
|-<br />
| POST<br />
| /auth/login<br />
| Connexion d'un utilisateur<br />
|<br />
|-<br />
| <br />
| /auth/logout<br />
| Déconnexion d'un utilisateur<br />
|<br />
|-<br />
| POST<br />
| /api/updateMovies<br />
| Met à jours la liste des films annotés par l'utilisateur<br />
| L'utilisateur doit être connecté<br />
|-<br />
| GET<br />
| /api/likedMovies/<string:opinion><br />
| Récupère en base de données, la liste des films que l'utilisateur à aimé si opinion="liked", pas aimé si opinion="disliked" ou alors tous les films si opinion="all".<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/likedMovie/<int:idMovie>/<int:isLiked><br />
| Ajoute en base de données, le film d'idMovie=idTMDB avec isLiked=0 si le film n'a pas été apprécié ou isLiked=1 si le film à été apprécié<br />
| L'utilisateur doit être connecté<br />
|-<br />
| PUT<br />
| /api/likedMovie/<int:idMovie>/<int:isLiked><br />
| Met à jours en base de données, le film d'idMovie=idTMDB avec isLiked=0 si le film n'a pas été apprécié ou isLiked=1 si le film à été apprécié<br />
| L'utilisateur doit être connecté<br />
|-<br />
| DELETE<br />
| /api/likedMovie/<int:idMovie><br />
| Supprime de la base de données, le film d'idMovie=idTMDB associé à l'utilisateur<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/train<br />
| Lance l'entrainement du modèle avec les films annotés par l'utilisateur, présents en base de données.<br />
| L'utilisateur doit être connecté<br />
|-<br />
| GET<br />
| /api/prediction<br />
| Lance une prédiction à partir du modèle de l'utilisateur et retourne une liste de recommandation de films.<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/popularity<br />
| Lance la recherche de popularité sur Twitter et retourne une liste de films ordonnée par popularité décroissante et une seconde liste ordonnée par avis décroissant<br />
| L'utilisateur doit être connecté<br />
|}</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=File:ConceptionSysteme.png&diff=34441File:ConceptionSysteme.png2017-03-13T09:37:59Z<p>Coralie.Rachex: </p>
<hr />
<div></div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Conception_-_Recommandation_intelligente_de_films&diff=34440Conception - Recommandation intelligente de films2017-03-13T09:37:28Z<p>Coralie.Rachex: /* Schéma de la structure de l'application */</p>
<hr />
<div>Voici la fiche de conception du projet 'Recommandation intelligente de films'.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
= Schéma de la structure de l'application =<br />
<br />
[[Image:ConceptionSysteme.png|550px|center]]<br />
<br />
= Choix des langages de programmation =<br />
* '''Python :''' pour le back-end<br />
* '''AngularJS :''' pour le front-end<br />
* '''MySql :''' pour la base de données<br />
<br />
= Choix technologiques =<br />
* '''TensorFlow :''' librairie open source pour l'apprentissage automatique, utilisant des graphiques de flux de données.<br />
* '''Keras :''' librairie de réseaux neuronaux de haut niveau, écrite en Python et capable de fonctionner au dessus de TensorFlow.<br />
* '''Flask :''' framework open-source de développement web en Python.<br />
<br />
= API en back-end =<br />
<br />
Pour utiliser pleinement l'API, il faut que l'utilisateur soit connecté car les données enregistrées en BD sont associées à l'id de l'utilisateur. Ceci permet à chaque utilisateur d'avoir ses données propres et de les conserver entre deux connexions. <br />
<br />
{| class="wikitable left" width="100%"<br />
|+ align="left" | Routes<br />
|-<br />
! scope=col width="5%" | Requête<br />
! scope=col width="18%" | Route<br />
! scope=col | Description<br />
! scope=col width="12%" | Permission<br />
|-<br />
| POST<br />
| /auth/signup<br />
| Création d'un compte utilisateur<br />
|<br />
|-<br />
| POST<br />
| /auth/login<br />
| Connexion d'un utilisateur<br />
|<br />
|-<br />
| <br />
| /auth/logout<br />
| Déconnexion d'un utilisateur<br />
|<br />
|-<br />
| POST<br />
| /api/updateMovies<br />
| Met à jours la liste des films annotés par l'utilisateur<br />
| L'utilisateur doit être connecté<br />
|-<br />
| GET<br />
| /api/likedMovies/<string:opinion><br />
| Récupère en base de données, la liste des films que l'utilisateur à aimé si opinion="liked", pas aimé si opinion="disliked" ou alors tous les films si opinion="all".<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/likedMovie/<int:idMovie>/<int:isLiked><br />
| Ajoute en base de données, le film d'idMovie=idTMDB avec isLiked=0 si le film n'a pas été apprécié ou isLiked=1 si le film à été apprécié<br />
| L'utilisateur doit être connecté<br />
|-<br />
| PUT<br />
| /api/likedMovie/<int:idMovie>/<int:isLiked><br />
| Met à jours en base de données, le film d'idMovie=idTMDB avec isLiked=0 si le film n'a pas été apprécié ou isLiked=1 si le film à été apprécié<br />
| L'utilisateur doit être connecté<br />
|-<br />
| DELETE<br />
| /api/likedMovie/<int:idMovie><br />
| Supprime de la base de données, le film d'idMovie=idTMDB associé à l'utilisateur<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/train<br />
| Lance l'entrainement du modèle avec les films annotés par l'utilisateur, présents en base de données.<br />
| L'utilisateur doit être connecté<br />
|-<br />
| GET<br />
| /api/prediction<br />
| Lance une prédiction à partir du modèle de l'utilisateur et retourne une liste de recommandation de films.<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/popularity<br />
| Lance la recherche de popularité sur Twitter et retourne une liste de films ordonnée par popularité décroissante et une seconde liste ordonnée par avis décroissant<br />
| L'utilisateur doit être connecté<br />
|}</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Conception_-_Recommandation_intelligente_de_films&diff=34426Conception - Recommandation intelligente de films2017-03-13T08:51:49Z<p>Coralie.Rachex: /* API en back-end */</p>
<hr />
<div>Voici la fiche de conception du projet 'Recommandation intelligente de films'.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
= Schéma de la structure de l'application =<br />
<br />
= Choix des langages de programmation =<br />
* '''Python :''' pour le back-end<br />
* '''AngularJS :''' pour le front-end<br />
* '''MySql :''' pour la base de données<br />
<br />
= Choix technologiques =<br />
* '''TensorFlow :''' librairie open source pour l'apprentissage automatique, utilisant des graphiques de flux de données.<br />
* '''Keras :''' librairie de réseaux neuronaux de haut niveau, écrite en Python et capable de fonctionner au dessus de TensorFlow.<br />
* '''Flask :''' framework open-source de développement web en Python.<br />
<br />
= API en back-end =<br />
<br />
Pour utiliser pleinement l'API, il faut que l'utilisateur soit connecté car les données enregistrées en BD sont associées à l'id de l'utilisateur. Ceci permet à chaque utilisateur d'avoir ses données propres et de les conserver entre deux connexions. <br />
<br />
{| class="wikitable left" width="100%"<br />
|+ align="left" | Routes<br />
|-<br />
! scope=col width="5%" | Requête<br />
! scope=col width="18%" | Route<br />
! scope=col | Description<br />
! scope=col width="12%" | Permission<br />
|-<br />
| POST<br />
| /auth/signup<br />
| Création d'un compte utilisateur<br />
|<br />
|-<br />
| POST<br />
| /auth/login<br />
| Connexion d'un utilisateur<br />
|<br />
|-<br />
| <br />
| /auth/logout<br />
| Déconnexion d'un utilisateur<br />
|<br />
|-<br />
| POST<br />
| /api/updateMovies<br />
| Met à jours la liste des films annotés par l'utilisateur<br />
| L'utilisateur doit être connecté<br />
|-<br />
| GET<br />
| /api/likedMovies/<string:opinion><br />
| Récupère en base de données, la liste des films que l'utilisateur à aimé si opinion="liked", pas aimé si opinion="disliked" ou alors tous les films si opinion="all".<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/likedMovie/<int:idMovie>/<int:isLiked><br />
| Ajoute en base de données, le film d'idMovie=idTMDB avec isLiked=0 si le film n'a pas été apprécié ou isLiked=1 si le film à été apprécié<br />
| L'utilisateur doit être connecté<br />
|-<br />
| PUT<br />
| /api/likedMovie/<int:idMovie>/<int:isLiked><br />
| Met à jours en base de données, le film d'idMovie=idTMDB avec isLiked=0 si le film n'a pas été apprécié ou isLiked=1 si le film à été apprécié<br />
| L'utilisateur doit être connecté<br />
|-<br />
| DELETE<br />
| /api/likedMovie/<int:idMovie><br />
| Supprime de la base de données, le film d'idMovie=idTMDB associé à l'utilisateur<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/train<br />
| Lance l'entrainement du modèle avec les films annotés par l'utilisateur, présents en base de données.<br />
| L'utilisateur doit être connecté<br />
|-<br />
| GET<br />
| /api/prediction<br />
| Lance une prédiction à partir du modèle de l'utilisateur et retourne une liste de recommandation de films.<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/popularity<br />
| Lance la recherche de popularité sur Twitter et retourne une liste de films ordonnée par popularité décroissante et une seconde liste ordonnée par avis décroissant<br />
| L'utilisateur doit être connecté<br />
|}</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Conception_-_Recommandation_intelligente_de_films&diff=34425Conception - Recommandation intelligente de films2017-03-13T08:51:43Z<p>Coralie.Rachex: /* API en back-end */</p>
<hr />
<div>Voici la fiche de conception du projet 'Recommandation intelligente de films'.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
= Schéma de la structure de l'application =<br />
<br />
= Choix des langages de programmation =<br />
* '''Python :''' pour le back-end<br />
* '''AngularJS :''' pour le front-end<br />
* '''MySql :''' pour la base de données<br />
<br />
= Choix technologiques =<br />
* '''TensorFlow :''' librairie open source pour l'apprentissage automatique, utilisant des graphiques de flux de données.<br />
* '''Keras :''' librairie de réseaux neuronaux de haut niveau, écrite en Python et capable de fonctionner au dessus de TensorFlow.<br />
* '''Flask :''' framework open-source de développement web en Python.<br />
<br />
= API en back-end =<br />
<br />
Pour utiliser pleinement l'API, il faut que l'utilisateur soit connecté car les données enregistrées en BD sont associées à l'id de l'utilisateur. Ceci permet à chaque utilisateur d'avoir ses données propres et de les conserver entre deux connexions. <br />
<br />
<br />
{| class="wikitable left" width="100%"<br />
|+ align="left" | Routes<br />
|-<br />
! scope=col width="5%" | Requête<br />
! scope=col width="18%" | Route<br />
! scope=col | Description<br />
! scope=col width="12%" | Permission<br />
|-<br />
| POST<br />
| /auth/signup<br />
| Création d'un compte utilisateur<br />
|<br />
|-<br />
| POST<br />
| /auth/login<br />
| Connexion d'un utilisateur<br />
|<br />
|-<br />
| <br />
| /auth/logout<br />
| Déconnexion d'un utilisateur<br />
|<br />
|-<br />
| POST<br />
| /api/updateMovies<br />
| Met à jours la liste des films annotés par l'utilisateur<br />
| L'utilisateur doit être connecté<br />
|-<br />
| GET<br />
| /api/likedMovies/<string:opinion><br />
| Récupère en base de données, la liste des films que l'utilisateur à aimé si opinion="liked", pas aimé si opinion="disliked" ou alors tous les films si opinion="all".<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/likedMovie/<int:idMovie>/<int:isLiked><br />
| Ajoute en base de données, le film d'idMovie=idTMDB avec isLiked=0 si le film n'a pas été apprécié ou isLiked=1 si le film à été apprécié<br />
| L'utilisateur doit être connecté<br />
|-<br />
| PUT<br />
| /api/likedMovie/<int:idMovie>/<int:isLiked><br />
| Met à jours en base de données, le film d'idMovie=idTMDB avec isLiked=0 si le film n'a pas été apprécié ou isLiked=1 si le film à été apprécié<br />
| L'utilisateur doit être connecté<br />
|-<br />
| DELETE<br />
| /api/likedMovie/<int:idMovie><br />
| Supprime de la base de données, le film d'idMovie=idTMDB associé à l'utilisateur<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/train<br />
| Lance l'entrainement du modèle avec les films annotés par l'utilisateur, présents en base de données.<br />
| L'utilisateur doit être connecté<br />
|-<br />
| GET<br />
| /api/prediction<br />
| Lance une prédiction à partir du modèle de l'utilisateur et retourne une liste de recommandation de films.<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/popularity<br />
| Lance la recherche de popularité sur Twitter et retourne une liste de films ordonnée par popularité décroissante et une seconde liste ordonnée par avis décroissant<br />
| L'utilisateur doit être connecté<br />
|}</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Conception_-_Recommandation_intelligente_de_films&diff=34424Conception - Recommandation intelligente de films2017-03-13T08:49:05Z<p>Coralie.Rachex: /* API en back-end */</p>
<hr />
<div>Voici la fiche de conception du projet 'Recommandation intelligente de films'.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
= Schéma de la structure de l'application =<br />
<br />
= Choix des langages de programmation =<br />
* '''Python :''' pour le back-end<br />
* '''AngularJS :''' pour le front-end<br />
* '''MySql :''' pour la base de données<br />
<br />
= Choix technologiques =<br />
* '''TensorFlow :''' librairie open source pour l'apprentissage automatique, utilisant des graphiques de flux de données.<br />
* '''Keras :''' librairie de réseaux neuronaux de haut niveau, écrite en Python et capable de fonctionner au dessus de TensorFlow.<br />
* '''Flask :''' framework open-source de développement web en Python.<br />
<br />
= API en back-end =<br />
<br />
{| class="wikitable left" width="100%"<br />
|+ align="left" | Routes<br />
|-<br />
! scope=col width="5%" | Requête<br />
! scope=col width="18%" | Route<br />
! scope=col | Description<br />
! scope=col width="12%" | Permission<br />
|-<br />
| POST<br />
| /auth/signup<br />
| Création d'un compte utilisateur<br />
|<br />
|-<br />
| POST<br />
| /auth/login<br />
| Connexion d'un utilisateur<br />
|<br />
|-<br />
| <br />
| /auth/logout<br />
| Déconnexion d'un utilisateur<br />
|<br />
|-<br />
| POST<br />
| /api/updateMovies<br />
| Met à jours la liste des films annotés par l'utilisateur<br />
| L'utilisateur doit être connecté<br />
|-<br />
| GET<br />
| /api/likedMovies/<string:opinion><br />
| Récupère en base de données, la liste des films que l'utilisateur à aimé si opinion="liked", pas aimé si opinion="disliked" ou alors tous les films si opinion="all".<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/likedMovie/<int:idMovie>/<int:isLiked><br />
| Ajoute en base de données, le film d'idMovie=idTMDB avec isLiked=0 si le film n'a pas été apprécié ou isLiked=1 si le film à été apprécié<br />
| L'utilisateur doit être connecté<br />
|-<br />
| PUT<br />
| /api/likedMovie/<int:idMovie>/<int:isLiked><br />
| Met à jours en base de données, le film d'idMovie=idTMDB avec isLiked=0 si le film n'a pas été apprécié ou isLiked=1 si le film à été apprécié<br />
| L'utilisateur doit être connecté<br />
|-<br />
| DELETE<br />
| /api/likedMovie/<int:idMovie><br />
| Supprime de la base de données, le film d'idMovie=idTMDB associé à l'utilisateur<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/train<br />
| Lance l'entrainement du modèle avec les films annotés par l'utilisateur, présents en base de données.<br />
| L'utilisateur doit être connecté<br />
|-<br />
| GET<br />
| /api/prediction<br />
| Lance une prédiction à partir du modèle de l'utilisateur et retourne une liste de recommandation de films.<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/popularity<br />
| Lance la recherche de popularité sur Twitter et retourne une liste de films ordonnée par popularité décroissante et une seconde liste ordonnée par avis décroissant<br />
| L'utilisateur doit être connecté<br />
|}</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Conception_-_Recommandation_intelligente_de_films&diff=34423Conception - Recommandation intelligente de films2017-03-13T08:48:58Z<p>Coralie.Rachex: /* API en back-end */</p>
<hr />
<div>Voici la fiche de conception du projet 'Recommandation intelligente de films'.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
= Schéma de la structure de l'application =<br />
<br />
= Choix des langages de programmation =<br />
* '''Python :''' pour le back-end<br />
* '''AngularJS :''' pour le front-end<br />
* '''MySql :''' pour la base de données<br />
<br />
= Choix technologiques =<br />
* '''TensorFlow :''' librairie open source pour l'apprentissage automatique, utilisant des graphiques de flux de données.<br />
* '''Keras :''' librairie de réseaux neuronaux de haut niveau, écrite en Python et capable de fonctionner au dessus de TensorFlow.<br />
* '''Flask :''' framework open-source de développement web en Python.<br />
<br />
= API en back-end =<br />
<br />
{| class="wikitable left" width="100%"<br />
|+ align="left" | Routes<br />
|-<br />
! scope=col width="5%" | Requête<br />
! scope=col width="18%" | Route<br />
! scope=col | Description<br />
! scope=col width="11%" | Permission<br />
|-<br />
| POST<br />
| /auth/signup<br />
| Création d'un compte utilisateur<br />
|<br />
|-<br />
| POST<br />
| /auth/login<br />
| Connexion d'un utilisateur<br />
|<br />
|-<br />
| <br />
| /auth/logout<br />
| Déconnexion d'un utilisateur<br />
|<br />
|-<br />
| POST<br />
| /api/updateMovies<br />
| Met à jours la liste des films annotés par l'utilisateur<br />
| L'utilisateur doit être connecté<br />
|-<br />
| GET<br />
| /api/likedMovies/<string:opinion><br />
| Récupère en base de données, la liste des films que l'utilisateur à aimé si opinion="liked", pas aimé si opinion="disliked" ou alors tous les films si opinion="all".<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/likedMovie/<int:idMovie>/<int:isLiked><br />
| Ajoute en base de données, le film d'idMovie=idTMDB avec isLiked=0 si le film n'a pas été apprécié ou isLiked=1 si le film à été apprécié<br />
| L'utilisateur doit être connecté<br />
|-<br />
| PUT<br />
| /api/likedMovie/<int:idMovie>/<int:isLiked><br />
| Met à jours en base de données, le film d'idMovie=idTMDB avec isLiked=0 si le film n'a pas été apprécié ou isLiked=1 si le film à été apprécié<br />
| L'utilisateur doit être connecté<br />
|-<br />
| DELETE<br />
| /api/likedMovie/<int:idMovie><br />
| Supprime de la base de données, le film d'idMovie=idTMDB associé à l'utilisateur<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/train<br />
| Lance l'entrainement du modèle avec les films annotés par l'utilisateur, présents en base de données.<br />
| L'utilisateur doit être connecté<br />
|-<br />
| GET<br />
| /api/prediction<br />
| Lance une prédiction à partir du modèle de l'utilisateur et retourne une liste de recommandation de films.<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/popularity<br />
| Lance la recherche de popularité sur Twitter et retourne une liste de films ordonnée par popularité décroissante et une seconde liste ordonnée par avis décroissant<br />
| L'utilisateur doit être connecté<br />
|}</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Conception_-_Recommandation_intelligente_de_films&diff=34422Conception - Recommandation intelligente de films2017-03-13T08:48:37Z<p>Coralie.Rachex: /* API en back-end */</p>
<hr />
<div>Voici la fiche de conception du projet 'Recommandation intelligente de films'.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
= Schéma de la structure de l'application =<br />
<br />
= Choix des langages de programmation =<br />
* '''Python :''' pour le back-end<br />
* '''AngularJS :''' pour le front-end<br />
* '''MySql :''' pour la base de données<br />
<br />
= Choix technologiques =<br />
* '''TensorFlow :''' librairie open source pour l'apprentissage automatique, utilisant des graphiques de flux de données.<br />
* '''Keras :''' librairie de réseaux neuronaux de haut niveau, écrite en Python et capable de fonctionner au dessus de TensorFlow.<br />
* '''Flask :''' framework open-source de développement web en Python.<br />
<br />
= API en back-end =<br />
<br />
{| class="wikitable left" width="100%"<br />
|+ align="left" | Routes<br />
|-<br />
! scope=col width="5%" | Requête<br />
! scope=col width="20%" | Route<br />
! scope=col | Description<br />
! scope=col width="15%" | Permission<br />
|-<br />
| POST<br />
| /auth/signup<br />
| Création d'un compte utilisateur<br />
|<br />
|-<br />
| POST<br />
| /auth/login<br />
| Connexion d'un utilisateur<br />
|<br />
|-<br />
| <br />
| /auth/logout<br />
| Déconnexion d'un utilisateur<br />
|<br />
|-<br />
| POST<br />
| /api/updateMovies<br />
| Met à jours la liste des films annotés par l'utilisateur<br />
| L'utilisateur doit être connecté<br />
|-<br />
| GET<br />
| /api/likedMovies/<string:opinion><br />
| Récupère en base de données, la liste des films que l'utilisateur à aimé si opinion="liked", pas aimé si opinion="disliked" ou alors tous les films si opinion="all".<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/likedMovie/<int:idMovie>/<int:isLiked><br />
| Ajoute en base de données, le film d'idMovie=idTMDB avec isLiked=0 si le film n'a pas été apprécié ou isLiked=1 si le film à été apprécié<br />
| L'utilisateur doit être connecté<br />
|-<br />
| PUT<br />
| /api/likedMovie/<int:idMovie>/<int:isLiked><br />
| Met à jours en base de données, le film d'idMovie=idTMDB avec isLiked=0 si le film n'a pas été apprécié ou isLiked=1 si le film à été apprécié<br />
| L'utilisateur doit être connecté<br />
|-<br />
| DELETE<br />
| /api/likedMovie/<int:idMovie><br />
| Supprime de la base de données, le film d'idMovie=idTMDB associé à l'utilisateur<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/train<br />
| Lance l'entrainement du modèle avec les films annotés par l'utilisateur, présents en base de données.<br />
| L'utilisateur doit être connecté<br />
|-<br />
| GET<br />
| /api/prediction<br />
| Lance une prédiction à partir du modèle de l'utilisateur et retourne une liste de recommandation de films.<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/popularity<br />
| Lance la recherche de popularité sur Twitter et retourne une liste de films ordonnée par popularité décroissante et une seconde liste ordonnée par avis décroissant<br />
| L'utilisateur doit être connecté<br />
|}</div>Coralie.Rachexhttps://air.imag.fr/index.php?title=Conception_-_Recommandation_intelligente_de_films&diff=34421Conception - Recommandation intelligente de films2017-03-13T08:48:11Z<p>Coralie.Rachex: /* API en back-end */</p>
<hr />
<div>Voici la fiche de conception du projet 'Recommandation intelligente de films'.<br />
<br />
[[Suggestion_intelligente_de_films_basée_sur_TensorFlow| '''Page d'accueil du projet''']]<br />
<br />
= Équipe =<br />
* Rachex Coralie (Chef de projet - Scrum Master)<br />
* Niogret Edwin<br />
* Hattinguais Julian<br />
* Navarro Elsa<br />
* Dunand Quentin<br />
<br />
= Schéma de la structure de l'application =<br />
<br />
= Choix des langages de programmation =<br />
* '''Python :''' pour le back-end<br />
* '''AngularJS :''' pour le front-end<br />
* '''MySql :''' pour la base de données<br />
<br />
= Choix technologiques =<br />
* '''TensorFlow :''' librairie open source pour l'apprentissage automatique, utilisant des graphiques de flux de données.<br />
* '''Keras :''' librairie de réseaux neuronaux de haut niveau, écrite en Python et capable de fonctionner au dessus de TensorFlow.<br />
* '''Flask :''' framework open-source de développement web en Python.<br />
<br />
= API en back-end =<br />
<br />
{| class="wikitable left" width="100%"<br />
|+ align="left" | Routes<br />
|-<br />
! scope=col width="5%" | Requête<br />
! scope=col width="25%" | Route<br />
! scope=col | Description<br />
! scope=col width="15%" | Permission<br />
|-<br />
| POST<br />
| /auth/signup<br />
| Création d'un compte utilisateur<br />
|<br />
|-<br />
| POST<br />
| /auth/login<br />
| Connexion d'un utilisateur<br />
|<br />
|-<br />
| <br />
| /auth/logout<br />
| Déconnexion d'un utilisateur<br />
|<br />
|-<br />
| POST<br />
| /api/updateMovies<br />
| Met à jours la liste des films annotés par l'utilisateur<br />
| L'utilisateur doit être connecté<br />
|-<br />
| GET<br />
| /api/likedMovies/<string:opinion><br />
| Récupère en base de données, la liste des films que l'utilisateur à aimé si opinion="liked", pas aimé si opinion="disliked" ou alors tous les films si opinion="all".<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/likedMovie/<int:idMovie>/<int:isLiked><br />
| Ajoute en base de données, le film d'idMovie=idTMDB avec isLiked=0 si le film n'a pas été apprécié ou isLiked=1 si le film à été apprécié<br />
| L'utilisateur doit être connecté<br />
|-<br />
| PUT<br />
| /api/likedMovie/<int:idMovie>/<int:isLiked><br />
| Met à jours en base de données, le film d'idMovie=idTMDB avec isLiked=0 si le film n'a pas été apprécié ou isLiked=1 si le film à été apprécié<br />
| L'utilisateur doit être connecté<br />
|-<br />
| DELETE<br />
| /api/likedMovie/<int:idMovie><br />
| Supprime de la base de données, le film d'idMovie=idTMDB associé à l'utilisateur<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/train<br />
| Lance l'entrainement du modèle avec les films annotés par l'utilisateur, présents en base de données.<br />
| L'utilisateur doit être connecté<br />
|-<br />
| GET<br />
| /api/prediction<br />
| Lance une prédiction à partir du modèle de l'utilisateur et retourne une liste de recommandation de films.<br />
| L'utilisateur doit être connecté<br />
|-<br />
| POST<br />
| /api/popularity<br />
| Lance la recherche de popularité sur Twitter et retourne une liste de films ordonnée par popularité décroissante et une seconde liste ordonnée par avis décroissant<br />
| L'utilisateur doit être connecté<br />
|}</div>Coralie.Rachex