Zet D hoger
Je surfer springt nu soms, en komt zo ook op D. Kun je D hoger krijgen door er zelf links naartoe te maken? Zo probeerden mensen Google te foppen: duizend nep-pagina's die naar hun eigen site linken.
Voorspel
web = {"A": ["B"], "B": ["A"]}
web["E"] = ["A"]
print(list(web))
print(web["E"])
Wat print dit?
Antwoord
['A', 'B', 'E']
['A']
web["E"] = ["A"] maakt een nieuwe pagina E in het web, met één link, naar A.
Zo werkt het
Een nieuwe pagina zet je in het web als nieuwe sleutel, met de lijst van haar
links als waarde. Dat kan met web["E"] = …, of door een regel in de
dictionary erbij te typen. Een link is een stem voor de pagina waar hij naar
wijst. Of die stem veel waard is, laat de surfer zien.
Bouw zelf: zet D hoger
Je bent de eigenaar van pagina D, en je wilt hoger komen. Je maakt drie nieuwe pagina's, E, F en G, die alle drie naar D linken. Zet ze in het web van de vorige stap en laat de surfer klikken. Hoeveel hoger komt D? En waarom niet heel veel?
Begin klein, en breid de code stap voor stap uit:
- Draai de code. In de editor staat de surfer met damping uit de vorige stap: D komt rond de 0,04.
- Zet E, F en G in het web, elk met een link naar D.
- Draai opnieuw, en vergelijk D met de andere pagina's.
Tip
Elke pagina staat in het web als sleutel, met de lijst van haar links als waarde. Wat moet er bij E, F en G in die lijst staan? Denk aan vraag 4 van duizend klikken: een lege lijst mag niet.
Antwoord
Zet onder "D": ["C"], in het web:
"E": ["D"],
"F": ["D"],
"G": ["D"],
D gaat van ongeveer 0,04 naar 0,08: verdubbeld, maar nog steeds de laagste van de oude pagina's. De nep-pagina's krijgen zelf alleen bezoek als de surfer er toevallig naartoe springt, elk ongeveer 0,02. Hun stem is dus weinig waard. Een link van een pagina die zelf veel bezoek krijgt, zoals C, zou D veel meer helpen. Dat is het idee van PageRank: een stem van een belangrijke pagina telt zwaarder.
Door naar het hoofdstuk PageRank, en daarna naar een kansmodel.