SRS - Recommandation intelligente de films: Difference between revisions
Line 200: | Line 200: | ||
==Bibliographie== |
==Bibliographie== |
||
=== Articles === |
|||
⚫ | |||
Articles sur les systèmes de recommandation : |
Articles sur les systèmes de recommandation : |
||
Line 208: | Line 207: | ||
* [https://static.googleusercontent.com/media/research.google.com/fr//pubs/archive/45530.pdf'''Deep Neural Networks for YouTube Recommendations'''] |
* [https://static.googleusercontent.com/media/research.google.com/fr//pubs/archive/45530.pdf'''Deep Neural Networks for YouTube Recommendations'''] |
||
* [https://www.atala.org/IMG/pdf/1-Poirier-TAL51-3.pdf'''De la classification d’opinions à la recommandation'''] |
* [https://www.atala.org/IMG/pdf/1-Poirier-TAL51-3.pdf'''De la classification d’opinions à la recommandation'''] |
||
⚫ | |||
⚫ | |||
Articles sur le deep learning et la prise en main des technologie "TensorFlow" & "Keras" : |
Articles sur le deep learning et la prise en main des technologie "TensorFlow" & "Keras" : |
||
Line 215: | Line 215: | ||
* [http://machinelearningmastery.com/introduction-python-deep-learning-library-keras/'''Introduction to Python Deep Learning with Keras'''] |
* [http://machinelearningmastery.com/introduction-python-deep-learning-library-keras/'''Introduction to Python Deep Learning with Keras'''] |
||
* [http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/'''Develop Your First Neural Network in Python With Keras Step-By-Step'''] |
* [http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/'''Develop Your First Neural Network in Python With Keras Step-By-Step'''] |
||
Articles sur l'analyse de sentiments : |
Articles sur l'analyse de sentiments : |
||
Line 222: | Line 221: | ||
* [http://www.wildml.com/2015/12/implementing-a-cnn-for-text-classification-in-tensorflow/'''Implementing a CNN for Text Classification in TensorFlow'''] |
* [http://www.wildml.com/2015/12/implementing-a-cnn-for-text-classification-in-tensorflow/'''Implementing a CNN for Text Classification in TensorFlow'''] |
||
=== Documentation === |
|||
API TMDB : |
|||
Documentation sur l'API TMDB : |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
DOC2VEC : |
Documentation sur DOC2VEC : |
||
*https://github.com/nisarg64/Sentiment-Analysis-Word2Vec |
* [https://github.com/nisarg64/Sentiment-Analysis-Word2Vec'''Angular Material'''] |
||
* |
* [https://rare-technologies.com/doc2vec-tutorial/&prev=search'''Angular Material'''] |
||
* |
* [http://linanqiu.github.io/2015/10/07/word2vec-sentiment/'''Angular Material'''] |
||
Embedding layers : |
|||
Documentation sur l'api python : Flask |
|||
*http://stats.stackexchange.com/questions/182775/what-is-an-embedding-layer-in-a-neural-network |
|||
⚫ | |||
⚫ | |||
⚫ | |||
Python API - Flask : |
|||
⚫ | |||
Grid'5000 : |
Grid'5000 : |
Revision as of 13:57, 10 March 2017
Voici la fiche SRS du projet Recommandation intelligente de films.
Équipe
- Rachex Coralie (Chef de projet - Scrum Master)
- Niogret Edwin
- Hattinguais Julian
- Navarro Elsa
- Dunand Quentin
Introduction
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 site 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.
But du document
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.
Objectif du projet
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. 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.
Définitions, acronymes et abréviations
Deep Learning : ensemble de méthodes d'apprentissage automatiques visant à modéliser avec un haut niveau d’abstraction un ensemble de données.
Références
Portée du produit
Le produit est destiné aux utilisateurs désireux de générer automatiquement des recommandations de films en fonction de leurs goûts. L'application sera plus efficace sur des cinéphiles car ils pourront annoter un grand nombre de buts, mais elle a aussi la prétention de pouvoir être utile à un internaute lambda sans condition sur ses connaissances cinématographiques.
Description générale
Le but du produit
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.
L'apport principal par rapport aux produits concurrents est de réaliser des prédictions personnalisées, grâce à l'utilisation de l'apprentissage automatique et à l'établissement d'un modèle propre à chaque utilisateur. La suggestion devrait donc être plus précise comparée à celles se basant sur la similarité des goûts entre utilisateurs. Deux utilisateurs appréciant un même film, ne sont en effet pas forcés d'apprécier tous les deux un autre film.
Description du produit
Interface système
TODO : Schéma communication entre le back et le front
Interface utilisateur
TODO : Différentes vues du site à la fin du projet
Interface hardware
TODO : Mettre un schéma de notre architecture si on est en application réparties (communication entre le master et les slaves)
Interface software
TODO : Mettre un schéma UML de l'application
Fonctionnalités
Le site est conçu pour un utilisateur et ne sauvegarde que temporairement les choix de celui-ci.
- Il proposera tout d'abord une liste de films représentative de tous les genres, réalisateurs, acteurs... du cinéma. L'utilisateur pourra pour chaque film, dire s'il aime, n'aime pas ou n'a pas d'opinions sur ce film.
- Ensuite, en fonction des réponses de l'utilisateur, le site prédira grâce à un système de Deep Learning les films pouvant potentiellement plaire à l'utilisateur et les affichera avec leurs détails.
- L'utilisateur pourra ensuite noter ces nouveaux films s'il le souhaite, et une nouvelle liste de films se générera afin de mieux s'adapter aux goûts de l'utilisateur.
Caractéristiques utilisateurs
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. En revanche, aucune compétence informatique spécifique n'est requise, de sorte qu'un utilisateur novice puisse utiliser l'application. L'interface doit donc être intuitive et extrêmement simple d'utilisation.
Contraintes générales
- Avoir une connexion internet.
- Avoir un niveau basique de connaissances informatiques (savoir s'inscrire sur un site internet...).
- L'apprentissage machine doit reposer sur TensorFlow (Keras)
- Les données en entrées proviennent de l'API TMDB et des API Twitter (API REST 1.1 pour les données historiques ou API Streaming pour les données temps réelles)
- l'API TDMBSimple limite le nombre de requêtes à la base de données à 40 par seconde. Peut potentiellement énormément ralentir les services.
- Le modèle de prédiction doit être assez fiable pour prédire correctement un nombre conséquent de films pouvant potentiellemennt plaire à l'utilisateur (70%-80%).
Dépendances
- API de la base de donnée de film TMDB : https://developers.themoviedb.org/3/people
- API REST 1.1 : https://dev.twitter.com/rest/public
- API STREAMING : https://dev.twitter.com/streaming/overview
Spécifités du système
Conception de l'interface du système
TODO : A garder ???
Fonctionnalités et performances du système
TODO : A changer ? (nom fonctions, ajout des goûts twitter etc...)
F1
Fonction: Récupérer les préférences d'un utilisateur
Description: Le back-end va récupérer tout les films qu'un utilisateur a noté ainsi que leur note (j'aime ou j'aime pas) et va les sauvegarder dans un fichier JSON
Inputs: Nom utilisateur
Source: Site internet
Outputs: Fichier JSON correspondant aux préférences de l'utilisateur concerné
Destination: F2
F2
Fonction: Prétraiter les données d'une liste de film
Description: Prétraite les données d'une liste de film afin de les rendrent compréhensible par le modèle d'apprentissage
Inputs: Liste de films (leur id) chargé depuis le fichier JSON d'un utilisateur
Source: F1, API TMDBSimple, Glove/Doc2Vec
Outputs: Matrice de données. Chaque ligne correspond aux informations d'un film
Destination: F3
F3
Fonction: Entrainer un modèle d'apprentissage d'un utilisateur
Description: Crée et entraîne le modèle d'apprentissage qui va comprendre les goûts cinématographique d'un utilisateur
Inputs: Matrice des données prétraitées correspondant aux films notés par l'utilisateur
Source: F2, Keras
Outputs: Matrice de données. Chaque ligne correspond aux informations d'un film.
Destination: Back-end
F4
Fonction: Prédire une liste de film que l'utilisateur pourrait potentiellement aimer.
Description: Le système va soumettre une liste aléatoire ou selectionné de films et il va demander au modèle de prédiction si ces films correspondent au goût d'un utilisateur. Il a besoin de prétraiter ses données.
Inputs: F3, F2
Source: F2, Keras
Outputs: Liste des films pouvant intéresser l'utilisateur.
Destination: F5
F5
Fonction: Recommander à l'utilisateur des films
Description: Le site va soumettre à l'utilisateur une liste de films correspondant à ses goûts cinématographique
Inputs: Back-end, il faut que l'utilisateur ait renseigné ses goûts.
Source: F4
Outputs: Liste des films pouvant intéresser l'utilisateur.
Destination: Interface utilisateur
Evolutions potentielles du produit
- Multi utilisateurs : Une session de préférence par utilisateur. De plus, les goûts des utilisateurs seront sauvegardés afin qu'à la prochaine connexion, le modèle de Deep Learning soit prêt à prédire des films correspondant au goût de l'utilisateur concerné.
- Prédire les films "tendance" du moment en priorité. Le site affichera en priorité les films les plus populaire du moment et correspondant aux goûts de *l'utilisateur. Pour cela, il scannera les tweets de Tweeter en temps réel et cherchera une correspondance entre les tweets de films populaires et ceux prédis par le modèle pour l'utilisateur concerné.
- Utiliser des systèmes distribués afin d'améliorer les performances d'apprentissage du modèle de Deep Learning et de l'analyse en temps réel de Tweeter.
Appendices
Structure du SRS
The document is based on template of the Software Requirements Specification (SRS) inspired of the IEEE/ANSI 830-1998 Standard.
References:
- http://air.imag.fr/index.php/SRS
- http://www.cs.st-andrews.ac.uk/~ifs/Books/SE9/Presentations/PPTX/Ch4.pptx
- http://en.wikipedia.org/wiki/Software_requirements_specification
- IEEE Recommended Practice for Software Requirements Specifications IEEE Std 830-1998
Bibliographie
Articles
Articles sur les systèmes de recommandation :
- Recommending music on Spotify with deep learning
- Deep Neural Networks for YouTube Recommendations
- De la classification d’opinions à la recommandation
- Recommending movies with deep learning
- Recommending movies
Articles sur le deep learning et la prise en main des technologie "TensorFlow" & "Keras" :
- Deep Learning in a Nutshell: Core Concepts
- Introduction to Python Deep Learning with Keras
- Develop Your First Neural Network in Python With Keras Step-By-Step
Articles sur l'analyse de sentiments :
- Classification des posts sur des réseaux sociaux
- Sentiment analysis with RNN in Keras
- Implementing a CNN for Text Classification in TensorFlow
Documentation
Documentation sur l'API TMDB :
Documentation sur Django & AngularJS :
Documentation sur DOC2VEC :
Documentation sur l'api python : Flask
Grid'5000 :