diff --git a/推荐系统/main.py b/推荐系统/main.py index 21dd7e9..d87e97e 100644 --- a/推荐系统/main.py +++ b/推荐系统/main.py @@ -27,8 +27,8 @@ from pydantic import BaseModel, Field, model_validator class InitializationArguments(BaseModel): """推荐系统初始化参数数据模型""" - # 时间窗口(单位为天),平衡实时性和运算效率 - time_window: int = Field(default=30, ge=5, le=360) + # 时间窗口(单位为天,默认无穷大) + time_window: float = Field(default=float("inf")) # 衰减因子兰布达系数,控制兴趣分数衰减速率(默认不衰减) decay_lambda: float = Field(default=0, ge=0.00, le=10) # 用户特征向量维度数 @@ -299,11 +299,13 @@ class RecommenderSystem: for item_recall in self.behaviors[user_heuristic]["history_items"]: if item_recall not in items_heuristic: items_recall[item_recall]["counts"] += 1 + items_recall[item_recall]["scores"] += self.behaviors[user_heuristic]["scores"][item_recall] + + # 计算余弦相似度 for item_heuristic in items_heuristic: users_heuristic = self.items_inversion[item_heuristic] - for item_recall in items_recall: users_recall = self.items_inversion[item_recall] @@ -459,6 +461,20 @@ if __name__ == "__main__": "timestamp": int(time.time() - 3200), "rating": 3, }, + { + "user": "dddddd", + "item": "444444", + "type_": "rating", + "timestamp": int(time.time() - 3200), + "rating": 5, + }, + { + "user": "dddddd", + "item": "111111", + "type_": "rating", + "timestamp": int(time.time() - 3200), + "rating": 5, + }, ] for feedback_record in feedback_records: