我想創建一個簡單的推薦系統,向用戶推薦他們的朋友正在閱讀的書籍。我創建了一個名爲「推薦」的類,用於捕獲用戶的詳細信息,如姓名,用戶的朋友,用戶的書籍和推薦的書籍(朋友的書籍)。現在的問題是用戶'A'的實例被創建,'A的推薦書籍列表是空的,因爲它的朋友'B'尚未被實例化。當'B'被實例化時,'A'仍然沒有關於B的書籍的線索,因爲'A'已經在'B'之前被實例化。有沒有辦法來解決這個問題?在Python中創建一個簡單的推薦系統
from collections import defaultdict
class recommendation:
friendsgraph = defaultdict(set) # key: user, value: friends of users
booksgraph = defaultdict(set) # key: user, value: books of user
def __init__(self, user, books, friends):
self.name = user
self.books = books
self.friends = friends
self.recommended_books = friendsbooks(friends)
recommendation.friendsgraph[user] = friends
recommendation.friendsgraph[user] = books
def friendsbooks(friends):
recommendation_list = set()
for friend in friends:
rec_books = recommendation.booksgraph[friend]
if rec_books:
recommendation_list.add(rec_books)
else:
recommendation_list =()
return recommendation_list
A = recommendation('A',('Harry Potter'),('B'))
B = recommendation('B',('Harry Potter', 'Master Algo'),('A','C'))
之一來解決這種方式是通過朋友的字典和書籍屬性,並編寫建議書單獨的方法。通過這種方式,每個用戶在實例化時都會意識到它的朋友和他們的書籍。然而,這種策略消除了將屬性與個人用戶關聯的能力(如A.recommended_books)。
class recommendation:
def __init__(self):
self.friendsgraph = defaultdict(set)
self.booksgraph = defaultdict(set)
有關使'User'和'Book'類,並繞過這些情況怎麼辦?使用這樣的字符串不會使你能夠遵循關係。你可以在'User'類中存儲建議,只是一本書的列表。 – Grimmy