Ich versuche ein einfaches Empfehlungssystem zu erstellen, das Benutzern die Bücher empfiehlt, die ihre Freunde lesen. Ich habe eine Klasse namens "Empfehlung" erstellt, die Nutzerdetails wie Name, Freunde des Benutzers, Bücher des Benutzers und empfohlene Bücher (Bücher von Freunden) erfasst. Jetzt ist das Problem, wenn die Instanz von Benutzer 'A' erstellt wird, 'Die Liste der empfohlenen Bücher von A ist leer, da sein Freund' B 'noch nicht instanziiert wurde. Wenn 'B' instanziiert wird, hat 'A' immer noch keine Ahnung von Bs Büchern, da 'A' vor 'B' instanziiert wurde. Gibt es eine Möglichkeit, das zu beheben?Erstellen eines einfachen Empfehlungssystems in 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'))
Eine Möglichkeit, dies zu umgehen ist Wörterbücher von Freunden und Bücher als Attribute zu übergeben, und schreiben Sie eine separate Methode, die Bücher empfehlen. Auf diese Weise wird jeder Benutzer seine Freunde und ihre Bücher zum Zeitpunkt der Instanziierung kennen. Diese Strategie hat jedoch die Möglichkeit zur Folge, Attribute einzelnen Benutzern zuzuweisen (z. B. A.recommended_books).
class recommendation:
def __init__(self):
self.friendsgraph = defaultdict(set)
self.booksgraph = defaultdict(set)
Was eine 'User' und' Book' Klasse zu machen und diese Instanzen passieren um? Wenn Sie Strings wie diese verwenden, können Sie den Beziehungen nicht folgen. Sie können Empfehlungen in der Klasse "Benutzer" nur als eine Liste von Büchern speichern. – Grimmy