Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

44 строки
1.3 KiB
Python

import logging as logger
import pandas as pd
class Recommendations:
def __init__(self):
self._recs = {"personal": None, "default": None}
def load(self, rec_type, path, **kwargs):
"""
Загружает рекомендации из файла
"""
logger.info(f"Loading recommendations, type: {rec_type}")
self._recs[rec_type] = pd.read_parquet(path, **kwargs)
if rec_type == "personal":
self._recs[rec_type] = self._recs[rec_type].set_index("user_id")
logger.info(f"Loaded")
def get(self, user_id: int, k: int=100):
"""
Возвращает список рекомендаций для пользователя
"""
try:
recs = self._recs["personal"].loc[user_id]
recs = recs["item_id"].to_list()[:k]
except KeyError:
recs = self._recs["default"]
recs = recs["item_id"].to_list()[:k]
except:
logger.error("No recommendations found")
recs = []
if not recs:
logger.warning(f"No default recommendations available for user {user_id}")
recs = []
else:
logger.info(f'recs: {recs}')
return recs