Update README.md
Browse files
README.md
CHANGED
|
@@ -1,14 +1,56 @@
|
|
| 1 |
---
|
| 2 |
-
title:
|
| 3 |
-
emoji:
|
| 4 |
-
colorFrom:
|
| 5 |
-
colorTo:
|
| 6 |
sdk: gradio
|
| 7 |
-
sdk_version:
|
| 8 |
app_file: app.py
|
| 9 |
pinned: false
|
| 10 |
license: mit
|
| 11 |
-
short_description: recommendation system
|
| 12 |
---
|
| 13 |
|
| 14 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
+
title: VEN - AI Restaurant Matchmaker
|
| 3 |
+
emoji: π
|
| 4 |
+
colorFrom: blue
|
| 5 |
+
colorTo: indigo
|
| 6 |
sdk: gradio
|
| 7 |
+
sdk_version: 5.0.0
|
| 8 |
app_file: app.py
|
| 9 |
pinned: false
|
| 10 |
license: mit
|
|
|
|
| 11 |
---
|
| 12 |
|
| 13 |
+
# π VEN: Semantic Restaurant Discovery System
|
| 14 |
+
|
| 15 |
+
**VEN** is an AI-powered recommendation engine designed to find the perfect restaurant in Tel Aviv based on user context, vibe, and specific preferences.
|
| 16 |
+
|
| 17 |
+
Unlike traditional filters (e.g., "Italian", "$$"), VEN uses **Semantic Search** and **Persona Matching** to understand the *intent* behind the search (e.g., "A romantic quiet place for a date" vs. "Lively place for drinks with friends").
|
| 18 |
+
|
| 19 |
+
## π Key Features
|
| 20 |
+
|
| 21 |
+
* **Semantic Search:** Uses `Sentence-Transformers` (NLP) to convert user preferences into vector embeddings.
|
| 22 |
+
* **Persona Matching:** Instead of simple keyword matching, the system identifies the user's "Persona" (Reviewer Type) based on their inputs and finds restaurants loved by similar people.
|
| 23 |
+
* **Smart Filtering:** Filters by Budget, Diet, Company, Occasion, and Noise Level.
|
| 24 |
+
* **One-Click Quick Starters:** Pre-configured scenarios for instant recommendations.
|
| 25 |
+
* **Dark Mode UI:** A sleek, modern user interface built with Gradio.
|
| 26 |
+
|
| 27 |
+
## π οΈ Tech Stack
|
| 28 |
+
|
| 29 |
+
* **Python 3.10+**
|
| 30 |
+
* **Gradio:** For the web interface.
|
| 31 |
+
* **Sentence-Transformers (`all-mpnet-base-v2`):** For generating high-quality text embeddings.
|
| 32 |
+
* **Scikit-Learn:** For calculating Cosine Similarity between user input and reviewer profiles.
|
| 33 |
+
* **Pandas & NumPy:** For data manipulation and vector operations.
|
| 34 |
+
|
| 35 |
+
## π Project Structure
|
| 36 |
+
|
| 37 |
+
* `app.py`: The main application logic (UI, Search Engine, Logic).
|
| 38 |
+
* `cleaned_dataset_10k.csv`: A processed dataset of 10,000 restaurant reviews from Tel Aviv.
|
| 39 |
+
* `final_embeddings_10k.pkl`: Pre-computed vector embeddings for the reviews (saves processing time).
|
| 40 |
+
* `requirements.txt`: List of dependencies required to run the app.
|
| 41 |
+
|
| 42 |
+
## π§ How It Works
|
| 43 |
+
|
| 44 |
+
1. **Input:** The user selects their preferences (Budget, Diet, Company, Occasion, Atmosphere).
|
| 45 |
+
2. **Vectorization:** The system creates a textual description of the user's desire and converts it into a mathematical vector using the `all-mpnet-base-v2` model.
|
| 46 |
+
3. **Persona Clustering:** The system compares the user's vector against pre-calculated "Taste Profiles" (Personas) derived from the dataset.
|
| 47 |
+
4. **Similarity Search:** It calculates the **Cosine Similarity** to find the closest match.
|
| 48 |
+
5. **Ranking:** The system ranks restaurants within that Persona cluster and returns the highest-rated match with a relevant review.
|
| 49 |
+
|
| 50 |
+
## π₯ Authors
|
| 51 |
+
|
| 52 |
+
* **Matan** - Data Scientist & Developer
|
| 53 |
+
* **Gal** - Data Scientist & Developer
|
| 54 |
+
|
| 55 |
+
---
|
| 56 |
+
*Created as a final project for the Data Analysis Course.*
|