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