What Should I Eat Today?🍽️
BaRaemo is a menu recommendation system designed to help Baemin (배달의 민족) app users easily choose what to eat.
While current delivery apps like Baemin primarily focus on fast delivery promotions and previously ordered restaurants, menu recommendations are missing.
Our system addresses this gap by providing personalized restaurant recommendations using collaborative filtering (SVD) and similar menu recommendations using content-based filtering.
This project involves real user review data collection, preprocessing, analysis, and building a recommendation system that tackles practical problems like popularity bias and item coverage.
- Project Overview
- Data Collection & Preprocessing
- Pipeline Architecture
- Demo
- How To Run
- Project Structure
- Data Source: Naver Place User Reviews
- Target Locations: Daehyeon-dong, Yeonhui-dong, Changcheon-dong, Hongje-dong
- Final Dataset:
- Users: 1,703
- Restaurants: 327
- Menus w/ image: 2,422
- Reviews: 12,405
SVD-based utility matrix- Time and weather weight integration
- Bias adjustments for popularity and obscurity
- Multi-modal vectors (Text + Image + Price)
- Cosine similarity for similarity computation
CLIPandko-sroberta-multitask-based embeddings- Duplicate image filtering and weight tuning
The demo shows the full user flow:
1️⃣ Restaurant recommendations
2️⃣ Display the best menu from the Top 5 recommended restaurants
3️⃣ The user selects one menu
4️⃣ Recommend the Top 3 menus similar to the selected menu
A random user is selected in each session, and their previously visited restaurants are displayed.
To preprocess the raw crawled data:
python preprocess/rest_preprocess.py # restaurants' info
python preprocess/menu_preprocess.py # restaurants' menu
python preprocess/data_preprocess.ipynb # users' history and utility matrix for SVD To build weather and visit time weight matrix for SVD:
python weight_matrix.pyTo run the step 1 - Get TOP5 restaurants and recommend their best menus:
python svd.pyTo run Step 2 - Recommend Top 3 menus similar to the user's selected menu:
python menu_sim.pyTo execute the Gradio demo with a user interface:
python demo.pyBaemin_RecSys/
│
├── crawl/
├── data/
├── preprocess/
├── results/
├── demo.py
├── menu_sim.py
├── svd.py
├── weight_matrix.py
└── README.md

