Spaces:
Running
Running
Update app/services/recommendation.py
Browse files
app/services/recommendation.py
CHANGED
|
@@ -7,22 +7,26 @@ logger = logging.getLogger(__name__)
|
|
| 7 |
|
| 8 |
class FlexibleRecipeRecommendationSystem:
|
| 9 |
def __init__(self, csv_file_path, precomputed_dir):
|
| 10 |
-
self.
|
| 11 |
'ingredients': 0.15, 'category': 0.25, 'dietary': 0.20,
|
| 12 |
'calories': 0.10, 'time': 0.10, 'keywords': 0.10, 'keywords_name': 0.10
|
| 13 |
}
|
| 14 |
self.image_search_service = ImageSearchService()
|
| 15 |
-
self.data = load_or_create_data(csv_file_path, precomputed_dir, self.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16 |
|
| 17 |
-
async def get_recommendations(self, category=None, dietary_preference=None, ingredients=None,
|
| 18 |
-
calories=None, time=None, keywords=None, keywords_name=None, top_n=6):
|
| 19 |
return await get_top_recommendations(
|
| 20 |
self.data['df'], self.data['combined_matrix'],
|
| 21 |
self.data['tfidf_vectorizer_ingredients'],
|
| 22 |
self.data['tfidf_vectorizer_keywords'],
|
| 23 |
self.data['tfidf_vectorizer_keywords_name'],
|
| 24 |
self.data['category_dummies'], self.data['scaler'],
|
| 25 |
-
|
| 26 |
category, dietary_preference, ingredients,
|
| 27 |
calories, time, keywords, keywords_name, top_n
|
| 28 |
)
|
|
|
|
| 7 |
|
| 8 |
class FlexibleRecipeRecommendationSystem:
|
| 9 |
def __init__(self, csv_file_path, precomputed_dir):
|
| 10 |
+
self.default_feature_weights = {
|
| 11 |
'ingredients': 0.15, 'category': 0.25, 'dietary': 0.20,
|
| 12 |
'calories': 0.10, 'time': 0.10, 'keywords': 0.10, 'keywords_name': 0.10
|
| 13 |
}
|
| 14 |
self.image_search_service = ImageSearchService()
|
| 15 |
+
self.data = load_or_create_data(csv_file_path, precomputed_dir, self.default_feature_weights)
|
| 16 |
+
|
| 17 |
+
async def get_recommendations(self, category=None, dietary_preference=None, ingredients=None,
|
| 18 |
+
calories=None, time=None, keywords=None, keywords_name=None,
|
| 19 |
+
top_n=6, feature_weights=None):
|
| 20 |
+
# Use the provided feature_weights, or fall back to the default if not provided
|
| 21 |
+
weights = feature_weights or self.default_feature_weights
|
| 22 |
|
|
|
|
|
|
|
| 23 |
return await get_top_recommendations(
|
| 24 |
self.data['df'], self.data['combined_matrix'],
|
| 25 |
self.data['tfidf_vectorizer_ingredients'],
|
| 26 |
self.data['tfidf_vectorizer_keywords'],
|
| 27 |
self.data['tfidf_vectorizer_keywords_name'],
|
| 28 |
self.data['category_dummies'], self.data['scaler'],
|
| 29 |
+
weights, self.image_search_service,
|
| 30 |
category, dietary_preference, ingredients,
|
| 31 |
calories, time, keywords, keywords_name, top_n
|
| 32 |
)
|