Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Comment les liens classent les pages

Après cette leçon: Je peux expliquer et calculer comment des liens donnent un rang à des pages.

Leçon de 60 min1 commandeLab JupyterLab de science des données : pandas, Matplotlib et scikit-learn dans le navigateur

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

MotCe que ça veut direExemple
Lienun renvoi d’une page vers une autre
Rangla note d’importance d’une page
Lien sortantun lien qui part de la page
Facteur d’amortissementla part du rang qui circule par les liens0,85
Itérationun 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

PageLiens sortantsNombre
accueilcours, stage2
coursstage1
stageaccueil1

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

Commande
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

PageBaseParts reçuesNouveau rang
accueil0,05stage donne 1/30,05 + 0,85 × 1/3 = 0,33
cours0,05accueil donne 1/60,05 + 0,85 × 1/6 = 0,19
stage0,05accueil donne 1/6, cours donne 1/30,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

Touraccueilcoursstage
0 (départ)0,3330,3330,333
10,3330,1920,475
20,4540,1920,355
300,3880,2150,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

Code: 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 ?

À propos de ce labo et de sa source: Lab JupyterLab de science des données : pandas, Matplotlib et scikit-learn dans le navigateur

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.