Difference between revisions of "Conception - Recommandation intelligente de films"

From air
Jump to navigation Jump to search
 
(11 intermediate revisions by the same user not shown)
Line 11: Line 11:
   
 
= Schéma de la structure de l'application =
 
= Schéma de la structure de l'application =
  +
  +
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.
  +
  +
[[Image:ConceptionSysteme.png|1000px|center]]
   
 
= Choix des langages de programmation =
 
= Choix des langages de programmation =
Line 23: Line 27:
   
 
= API en back-end =
 
= API en back-end =
  +
  +
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.
   
 
{| class="wikitable left" width="100%"
 
{| class="wikitable left" width="100%"
Line 28: Line 34:
 
|-
 
|-
 
! scope=col width="5%" | Requête
 
! scope=col width="5%" | Requête
! scope=col width="25%" | Route
+
! scope=col width="18%" | Route
 
! scope=col | Description
 
! scope=col | Description
! scope=col width="15%" | Permission
+
! scope=col width="12%" | Permission
 
|-
 
|-
 
| POST
 
| POST
Line 45: Line 51:
 
| /auth/logout
 
| /auth/logout
 
| Déconnexion d'un utilisateur
 
| Déconnexion d'un utilisateur
  +
| L'utilisateur doit être connecté
|
+
|-
  +
| GET
  +
| /api/user
  +
| Retourne les informations de l'utilisateur
  +
| L'utilisateur doit être connecté
 
|-
 
|-
 
| POST
 
| POST
Line 54: Line 65:
 
| GET
 
| GET
 
| /api/likedMovies/<string:opinion>
 
| /api/likedMovies/<string:opinion>
| 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".
+
| 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".
 
| L'utilisateur doit être connecté
 
| L'utilisateur doit être connecté
 
|-
 
|-
 
| POST
 
| POST
 
| /api/likedMovie/<int:idMovie>/<int:isLiked>
 
| /api/likedMovie/<int:idMovie>/<int:isLiked>
| 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é
+
| 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é
 
| L'utilisateur doit être connecté
 
| L'utilisateur doit être connecté
 
|-
 
|-
 
| PUT
 
| PUT
 
| /api/likedMovie/<int:idMovie>/<int:isLiked>
 
| /api/likedMovie/<int:idMovie>/<int:isLiked>
| 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é
+
| 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é
 
| L'utilisateur doit être connecté
 
| L'utilisateur doit être connecté
 
|-
 
|-
Line 80: Line 91:
 
| /api/prediction
 
| /api/prediction
 
| Lance une prédiction à partir du modèle de l'utilisateur et retourne une liste de recommandation de films.
 
| Lance une prédiction à partir du modèle de l'utilisateur et retourne une liste de recommandation de films.
  +
| L'utilisateur doit être connecté
  +
|-
  +
| GET
  +
| /api/predictionFM
  +
| Lance une prédiction à partir du modèle global et retourne une liste de recommandation de films pour l'utilisateur.
 
| L'utilisateur doit être connecté
 
| L'utilisateur doit être connecté
 
|-
 
|-

Latest revision as of 17:53, 14 March 2017

Voici la fiche de conception du projet 'Recommandation intelligente de films'.

Page d'accueil du projet

Équipe

  • Rachex Coralie (Chef de projet - Scrum Master)
  • Niogret Edwin
  • Hattinguais Julian
  • Navarro Elsa
  • Dunand Quentin

Schéma de la structure de l'application

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.

ConceptionSysteme.png

Choix des langages de programmation

  • Python : pour le back-end
  • AngularJS : pour le front-end
  • MySql : pour la base de données

Choix technologiques

  • TensorFlow : librairie open source pour l'apprentissage automatique, utilisant des graphiques de flux de données.
  • Keras : librairie de réseaux neuronaux de haut niveau, écrite en Python et capable de fonctionner au dessus de TensorFlow.
  • Flask : framework open-source de développement web en Python.

API en back-end

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.

Routes
Requête Route Description Permission
POST /auth/signup Création d'un compte utilisateur
POST /auth/login Connexion d'un utilisateur
/auth/logout Déconnexion d'un utilisateur L'utilisateur doit être connecté
GET /api/user Retourne les informations de l'utilisateur L'utilisateur doit être connecté
POST /api/updateMovies Met à jours la liste des films annotés par l'utilisateur L'utilisateur doit être connecté
GET /api/likedMovies/<string:opinion> 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". L'utilisateur doit être connecté
POST /api/likedMovie/<int:idMovie>/<int:isLiked> 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é L'utilisateur doit être connecté
PUT /api/likedMovie/<int:idMovie>/<int:isLiked> 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é L'utilisateur doit être connecté
DELETE /api/likedMovie/<int:idMovie> Supprime de la base de données, le film d'idMovie=idTMDB associé à l'utilisateur L'utilisateur doit être connecté
POST /api/train Lance l'entrainement du modèle avec les films annotés par l'utilisateur, présents en base de données. L'utilisateur doit être connecté
GET /api/prediction Lance une prédiction à partir du modèle de l'utilisateur et retourne une liste de recommandation de films. L'utilisateur doit être connecté
GET /api/predictionFM Lance une prédiction à partir du modèle global et retourne une liste de recommandation de films pour l'utilisateur. L'utilisateur doit être connecté
POST /api/popularity 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 L'utilisateur doit être connecté