13.7 De complete oplossing
Leerdoel: je ziet de volledige pagerank-functie werken en speelt met
je eigen web.
De functie
def pagerank(web, d=0.85, epsilon=1e-9):
n = len(web)
rank = {p: 1 / n for p in web}
while True:
nieuw = {}
for p in web:
som = sum(rank[i] / len(web[i]) for i in web if p in web[i])
nieuw[p] = (1 - d) / n + d * som
verschil = max(abs(nieuw[p] - rank[p]) for p in web)
rank = nieuw
if verschil < epsilon:
return rank
Probeer het zelf
Pas WEB aan (voeg pagina's of links toe) of verander D en draai
opnieuw. De ranks komen gesorteerd van hoog naar laag.
Code-omgeving wordt voorbereid…
Wat je nu hebt
Een paar regels code reproduceren het idee waarmee Google ooit begon: het web als graph, links als stemmen, en een iteratie die het kip-ei-probleem oplost. Het echte Google-web heeft miljarden pagina's, maar het principe is precies dit.
Door naar stap 8: aanpassen →.