Pourquoi certaines pages passent devant les autres
Le classement par les liens donne à chaque page d’un site une note qui dépend des pages qui pointent vers elle. Une page citée par des pages elles-mêmes importantes obtient une grande note.
Deux pages peuvent contenir les mêmes mots. Le texte ne dit pas laquelle est la plus fiable : les liens que d’autres pages font vers elle, si.
À la fin de cette leçon
Remarque
Je peux expliquer et calculer comment des liens donnent un rang à des pages.
Mots clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Lien | un renvoi d’une page vers une autre | |
| Rang | la note d’importance d’une page | |
| Lien sortant | un lien qui part de la page | |
| Facteur d’amortissement | la part du rang qui circule par les liens | 0,85 |
| Itération | un tour de calcul que l’on répète |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Un lien est un vote pondéré
Quand une page en cite une autre, elle lui donne un peu de son rang. Une page qui a peu de liens sortants en donne davantage à chacune de ses cibles.
Le rang d’une page est donc fait des parts reçues. Mais ces parts dépendent des rangs des autres : il faut un calcul qui se répète.
Exemple travaillé : un site de trois pages
| Page | Liens sortants | Nombre |
|---|---|---|
| accueil | cours, stage | 2 |
| cours | stage | 1 |
| stage | accueil | 1 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
On répète le calcul jusqu’à la stabilité
On commence avec le même rang pour toutes les pages : 1 sur 3. À chaque tour, chaque page partage son rang à parts égales entre ses cibles.
Le nouveau rang d’une page vaut une petite base, (1 - d) sur N, plus d fois les parts reçues. Ici d, le facteur d’amortissement, vaut 0,85.
Calculer le rang de « cours » au premier tour
docker exec jupyter python3 -c 'print(round(0.15 / 3 + 0.85 * (1 / 3 / 2), 4))'Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Exemple travaillé : le premier tour
| Page | Base | Parts reçues | Nouveau rang |
|---|---|---|---|
| accueil | 0,05 | stage donne 1/3 | 0,05 + 0,85 × 1/3 = 0,33 |
| cours | 0,05 | accueil donne 1/6 | 0,05 + 0,85 × 1/6 = 0,19 |
| stage | 0,05 | accueil donne 1/6, cours donne 1/3 | 0,05 + 0,85 × 1/2 = 0,475 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
La somme des rangs reste 1
Après quelques tours, les rangs bougent de moins en moins. Après 30 tours, notre site donne environ 0,39 à l’accueil, 0,21 à cours et 0,40 à stage.
La somme des rangs reste égale à 1 à chaque tour tant que chaque page a au moins un lien sortant. On peut donc les lire comme des parts.
Exemple travaillé : les rangs au fil des tours
| Tour | accueil | cours | stage |
|---|---|---|---|
| 0 (départ) | 0,333 | 0,333 | 0,333 |
| 1 | 0,333 | 0,192 | 0,475 |
| 2 | 0,454 | 0,192 | 0,355 |
| 30 | 0,388 | 0,215 | 0,397 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Une erreur fréquente
Attention
Beaucoup pensent que la page qui reçoit le plus de liens est toujours la première. Ici, « accueil » et « cours » ont chacune un seul lien entrant, mais « accueil » est citée par « stage », très bien notée : son rang est presque le double. Un lien d’une page importante vaut plus qu’un lien d’une page sans importance.
Un tour de calcul en Python
liens = {
"accueil": ["cours", "stage"],
"cours": ["stage"],
"stage": ["accueil"],
}
rangs = {"accueil": 1 / 3, "cours": 1 / 3, "stage": 1 / 3}
amortissement = 0.85
nouveaux = {}
for page in liens:
nouveaux[page] = (1 - amortissement) / 3
for page in liens:
part = rangs[page] / len(liens[page])
for cible in liens[page]:
nouveaux[cible] = nouveaux[cible] + amortissement * part
for page in nouveaux:
print(page, round(nouveaux[page], 4))
# Changez "cours": ["stage"] en "cours": ["accueil"], puis relancez.
Pour aller plus loin
Dans un carnet de JupyterLab, dessinez un site de cinq pages avec des liens de votre choix. Calculez les rangs après 1, 5 et 30 tours.
Ajoutez un lien vers une page. Son rang monte-t-il ? Et celui des pages qu’elle cite ?