Ga naar hoofdinhoud

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.

Python
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 →.