Skip to content

Latest commit

 

History

History
59 lines (46 loc) · 4.97 KB

readme.md

File metadata and controls

59 lines (46 loc) · 4.97 KB

Projet MODIA 2022

Dans ce projet, vous allez travailler sur des données1issues du site Food.com, un célèbre site de recettes de cuisine.
Les données, disponibles ici, contiennent des informations sur des recettes de cuisines ainsi que des interactions de plusieurs utilisateurs avec les recettes.

Consignes:

Les parties 1, 2 et 3 sont à réaliser dans un même notebook.

Partie 1: Recommandations simples:

Dans un notebook

  • Présentez plusieurs stratégies de recommandation de recettes:

    • Par popularité
    • Selon les étapes de la recette (colonne steps)
    • Selon la description de la recette

    Pour chacune de ces méthodes montrez quelques exemples des recommandation obtenues.

Partie 2: Analyse de sentiments:

Dans un notebook

  • À partir de la note donnée par les utilisateurs definissez une nouvelle variable sur le sentiment positif ou négatif d'un utilisateur vis-à-vis d'une recette. Par exemple, toutes les notes inférieures à 3 sont négatives et celles supérieurs sont positives.
    Faites attention aux notes à 0 elles ne correspondent pas forcément à un sentiment négatif ou positif essayez d'en regarder quelques unes et décider de toutes les supprimer si elles posent problème.
  • En vous inspirant des parties NLP des TP Recommender_systems et du TP Interpretability in Machine Learning, entrainez un modèle à prédire si un utilisateur a aimé ou non une recette à partir de son commentaire et utilisez la méthode LIME pour visualiser les mots permettant de justifier la décision de votre modèle.
    Montrez quelques exemples de prédiction et de visualisations des mots importants.
    Enregistrez votre modèle dans un fichier pickle.

Partie 3: Neural Collaborative Filtering:

  • Reprenez la classe NCF (Neural Collaborative Filtering )présente dans le TP sur les systèmes de recommendations pour entrainer un modèle de Neural Collaborative Filtering à prédire les notes d'un utilisateur.
  • Entrainez votre réseau sur les données train et testez le sur les données de test (calculez la Mean Absolute Error sur les données de test).
  • Enregistrez les poids de votre réseau dans un fichier weight.pth

Partie 4 Scripts et Github:

  • Dans fichier model.py, redefinissez la classe NCF (Neural Collaborative Filtering )présente dans le TP sur les systèmes de recommandations.

  • Dans un fichier main.py, implémentez un code permettant de prédire les notes d'un utilisateur.
    Ce programme ne fera pas d'entrainement mais récupérera les poids su réseau que vous aurez entraîné dans votre notebook. Ce fichier sera exécuté comme un script et devra:

    • Récupérer les poids du réseau à partir d'un chemin donné en argument du job.
    • Récupérer le chemin d'un fichier de test contenant 10 interactions (test_script.csv) en arguments de la commande qui exécutera le script
    • Afficher les prédictions pour les 10 interactions du dataset de test.
  • Dans un fichier recommender_app.py , utilisez gradio pour créer une application permettant de prédire si un commentaire, entré par l'utilisateur, est positif ou négatif (utilisez le composant textbox).

  • Bonus: créez un dockerfile permettant de lancer le script ou l'application gradio depuis n'importe quelle machine.

Pour le livrable:

  • Faites un fork de ce repo Git.
  • Modifiez le pour qu'il contienne le notebook des parties 1,2 et 3.
  • Rajoutez les fichiers model.py, main.py et recommender_app.py dans le repo Git.
  • Modifiez le readme pour qu'il affiche vos noms et la commande permettant de lancer correctement le script main.py et l'application (ne mettez pas les fichiers de données dans le repo github!)
  • Faites moi un pull request sur GitHub et envoyez moi un mail à [email protected] pour que je vérifie que tout est OK.
  • Bonus: Si vous avez fait le dockerfile, rajoutez dans le readme les commandes à exécuter pour le tester.

1: Les données ont été récoltées pour l'article suivant:
Generating Personalized Recipes from Historical User Preferences Bodhisattwa Prasad Majumder*, Shuyang Li*, Jianmo Ni, Julian McAuley EMNLP, 2019