TOMT

所属分类:推荐系统
开发工具:Jupyter Notebook
文件大小:0KB
下载次数:0
上传日期:2023-08-10 18:48:00
上 传 者sh-1993
说明:  开发以用户为中心的配方推荐系统的端到端项目,
(End-to-end project to develop a user-focused recipe recommender system,)

文件列表:
LICENSE (1067, 2023-11-30)
encodings/ (0, 2023-11-30)
encodings/tfidf_ingredients_encodings.pkl (2069979, 2023-11-30)
explore/ (0, 2023-11-30)
explore/feature_engineering_nytc.ipynb (340341, 2023-11-30)
explore/serious_eats_eda.ipynb (238656, 2023-11-30)
image/ (0, 2023-11-30)
image/recipe-app-pipeline.png (637122, 2023-11-30)
main.py (1764, 2023-11-30)
model_checkpoints/ (0, 2023-11-30)
model_checkpoints/tfidf_ingredients_model.pkl (100623, 2023-11-30)
requirements.txt (195, 2023-11-30)
scrape/ (0, 2023-11-30)
scrape/nytc.py (1730, 2023-11-30)
scrape/nytc_scrape.ipynb (498559, 2023-11-30)
scrape/se_scrape.ipynb (501722, 2023-11-30)
scrape/serious_eats.py (1630, 2023-11-30)
static/ (0, 2023-11-30)
static/css/ (0, 2023-11-30)
static/css/style.css (4278, 2023-11-30)
templates/ (0, 2023-11-30)
templates/about.html (187, 2023-11-30)
templates/base.html (964, 2023-11-30)
templates/index.html (480, 2023-11-30)
templates/result.html (349, 2023-11-30)
training/ (0, 2023-11-30)
training/tfidf_cosine.ipynb (78410, 2023-11-30)

# TOMT `TOMT` stands for "tip of my tongue". I am building this system because I often find myself running through a number of recipe sites trying to find something new to cook _depending on my mood_. Existing recipe recommendation systems (RSS) out don't really address my needs. Some recommend based on ingredient list, some even just suggest based solely on historic likes and dislikes. I want TOMT to recommend me recipes from _my trusted sources_ and learn my palette over time. ## Scope Create a system that recommends recipes based on user filters (e.g., by meal, by cuisine, by method, by diet), profile, similar users. It should have a centralized interface that pulls data from my go-to sources and allows me to narrow down my choices to suggest a few recipes (~6) for me to choose from. I am picky about the quality of the recipes, so data collection is done in-house for greater control over where they are from and what features to include. The system should learn the flavour profile of the user such that suggestions get better over time (measured by like-dislike ratio over time). To do this, a rating feature needs to be implemented. ## Project Cycle Overview ![Project cycle overview.](https://github.com/clintonlau/TOMT/blob/master/./image/recipe-app-pipeline.png) ## Data I have a few tried-and-true recipe sites that I often visit. I want control over where I pull my data from, what data to pull from each recipe and am scraping data my own data. Recipe sites: - https://seriouseats.com - https://cooking.nytimes.com (requires paid subscription; add filtering option for user to suppress NYTC recipes) - https://www.maangchi.com - https://www.justonecookbook.com ## Files ``` . ├── data # scraped raw-ish recipe data │ └── ... │ ├── eda # code for exploratory data analysis of scraped data │ └── serious_eats_eda.ipynb # find trends, get a better feel for the data, and further refine them │ ├── image # images for readme.md and project │ └── ... │ ├── scrape # cod for scraping from my recipe sites │ └── serious_eats.ipynb # messing around with web scraping and generating .pkl datasets │ └── serious_eats.py # class for scraping serious eats recipes └── ... ``` ## Tech Stack Web scraping: - requests, beautifulsoup, extruct Data wrangling: - pandas, numpy, matplotlib, seaborn Model: - scikit-learn, [lightfm](https://github.com/clintonlau/TOMT/blob/master/https://github.com/lyst/lightfm), [spotlight](https://github.com/clintonlau/TOMT/blob/master/https://github.com/maciejkula/spotlight) - Content-based filtering (cosine similarity) - Collaborative-based filtering (matrix factorization) Web framework: - flask ## Models To solve the system cold start problem, I will use a hybrid approach by combining: 1. Content-based filtering - Suggest recipes that are similar to recipes previously liked by user - Implementation will be akin to setting up a new Apple Music profile, by providing users a bunch of recipe titles and ask them to select N recipes that they like 2. Collaborative filtering - Suggest recipes liked by other users with similar profile

近期下载者

相关文件


收藏者