Aller au contenu
Allin

La densité de mots-clés est une métrique morte, et voici ce qui l'a remplacée

Publié le 27/05/2025 · 14 min de lecture · Outils marketing & SEO

Camille Laurent

Camille LaurentRédactrice Finance chez Allin

Fiscalité · Finances personnelles

Vérifié à partir de 5 sources

Voir le profil
En bref

La densité de mots-clés, c'est le nombre d'occurrences divisé par le nombre total de mots, et c'était un indicateur utilisable en 2003 parce que la recherche d'alors notait vraiment les documents sur des comptages bruts. C'était un indicateur de la fréquence de terme dans un modèle sac de mots, et chaque modèle qui a remplacé celui-là traite les comptages bruts autrement. TF-IDF pondère un terme par sa rareté dans le corpus, si bien qu'un mot présent sur la moitié du web ne rapporte presque rien quelle que soit la répétition. BM25 est allé plus loin et a fait saturer la fréquence de terme : avec les standards k1 = 1,2 et b = 0,75, une occurrence vaut 1,000, deux valent 1,375, dix valent 1,964, et le plafond est 2,2 quoi que tu ajoutes. La deuxième occurrence apporte 0,375 ; la dixième apporte 0,023 — seize fois moins. La recherche par plongements ne compte pas les termes du tout : elle compare des sens dans un espace vectoriel, si bien qu'une page peut se positionner sur une expression qu'elle ne contient jamais. La densité ne survit qu'à un seul titre : un test d'odeur. Si une expression atteint 5 % de tes mots, quelque chose se répète par accident. Il n'y a pas de pourcentage recommandé, et quiconque en cite un cite 2003.

La densité comptait les occurrences parce que la recherche comptait les occurrences. TF-IDF, puis BM25 et sa courbe de saturation, puis les plongements l'ont remplacée. Voici la même page de 800 mots notée de trois façons, et pourquoi les trois divergent.

Ce dont la densité était vraiment l'indicateur

La densité de mots-clés est une division : le nombre de fois qu'un terme apparaît, sur le nombre de mots de la page. Seize apparitions d'un mot dans un article de 800 mots font 2,00 %. C'est toute la métrique, et elle n'a jamais été inventée par les moteurs — elle a été inventée par ceux qui essayaient de les rétro-concevoir, comme une supposition sur ce que le moteur comptait.

La supposition était raisonnable, car pendant un temps elle était juste. La recherche des débuts traitait un document comme un sac de mots : ordre jeté, structure jetée, document réduit à un vecteur de comptages de termes. Note un document face à une requête en additionnant combien de termes de la requête il contient et à quelle fréquence, et la répétition est directement récompensée. La densité est la règle empirique de ce modèle, normalisée par la longueur pour qu'une page longue et une page courte soient comparables. Elle était l'indicateur d'une chose précise — la fréquence de terme dans une fonction de score en sac de mots — et elle a cessé d'être utile dès que la fonction de score a changé.

Deux choses l'ont tuée. La première : l'indicateur est devenu une cible, et une métrique qui est aussi une cible cesse de mesurer — les pages bourrées de répétitions étaient excellentes selon la densité, et illisibles selon tout critère humain. La seconde a été plus lente et plus intéressante : les fonctions de score ont cessé de compter ainsi, d'abord par la fréquence inverse de document, puis par la saturation, puis en abandonnant tout comptage de termes. Le reste de cet article, ce sont ces trois étapes, appliquées à une page concrète.

TF-IDF : la rareté vaut plus que la répétition

La première correction vient d'une observation de Karen Spärck Jones en 1972 : la spécificité d'un terme est inversement liée au nombre de documents qui le contiennent. Un terme présent dans presque tous les documents ne te dit presque rien sur celui à retourner. Cela devient la fréquence inverse de document, idf = ln(N ÷ df), avec N le nombre de documents du corpus et df le nombre de ceux qui contiennent le terme. Multiplie-la par la fréquence de terme et tu as le TF-IDF, qui reste le modèle mental dont la plupart des éditeurs ont réellement besoin.

Mettons des nombres. Prends une page de 800 mots sur les machines à espresso. Le mot machine y apparaît 24 fois — densité 3,00 %, la plus élevée de la page. Le mot espresso apparaît 16 fois, densité 2,00 %. Le mot détartrage apparaît 4 fois, densité 0,50 %. Suppose maintenant un corpus de 10 000 000 de documents où machine apparaît dans 2 000 000, espresso dans 200 000 et détartrage dans 50 000. Les idf valent ln(5) = 1,6094, ln(50) = 3,9120 et ln(200) = 5,2983. Avec la fréquence de terme brute, TF-IDF donne à machine 24 × 1,6094 = 38,63, à espresso 16 × 3,9120 = 62,59 et à détartrage 4 × 5,2983 = 21,19.

Le classement a déjà basculé une fois. La densité dit que machine est le signal le plus fort de la page. TF-IDF dit que c'est espresso, par 62 contre 39, alors qu'il apparaît huit fois de moins. Et si tu utilises la variante logarithmique de la fréquence de terme que le TF-IDF classique applique généralement, 1 + ln(f), les scores deviennent 6,72 pour machine, 14,76 pour espresso et 12,64 pour détartrage — un terme à 0,50 % de densité dépasse presque un terme à 2,00 %, et dépasse largement celui à 3,00 %. Même page, mêmes mots, trois classements, aucune répétition ajoutée.

BM25 et la courbe de saturation, qui est la partie intéressante

BM25 est né des travaux Okapi à City University London et des évaluations TREC des années 1990, et c'est encore la fonction de classement par défaut dans Lucene, Elasticsearch et l'essentiel de l'infrastructure de recherche en service. Sa composante de fréquence de terme est l'endroit où vit la vraie idée : au lieu d'utiliser f directement, elle utilise f × (k1 + 1) ÷ (f + k1 × (1 − b + b × dl ÷ avgdl)), où dl est la longueur du document, avgdl la longueur moyenne dans le corpus, et k1 et b des constantes de réglage conventionnellement fixées à 1,2 et 0,75. Lis-la comme une fraction et le comportement apparaît : quand f croît, numérateur et dénominateur croissent tous deux, et le rapport converge vers k1 + 1.

Sur une page de longueur exactement moyenne, le terme de longueur se réduit à 1 et le poids devient simplement f × 2,2 ÷ (f + 1,2). Calcule : une occurrence vaut 1,0000, deux valent 1,3750, trois valent 1,5714, cinq valent 1,7742, dix valent 1,9643, vingt valent 2,0755, cinquante valent 2,1484. Le plafond est 2,2 et rien ne l'atteint. Rapportée à ce plafond, une seule occurrence récolte déjà 45,5 % de tout ce que le terme pourra jamais valoir ; deux en récoltent 62,5 %, cinq 80,6 %, dix 89,3 %.

La vue marginale devrait clore le débat. Passer d'une occurrence à deux ajoute 0,3750. Passer de neuf à dix ajoute 0,0231. La dixième occurrence vaut environ un seizième de la deuxième, et la cinquantième vaut 0,0010 — 365 fois moins que la deuxième. C'est ce que signifie la saturation, et c'est un choix de conception délibéré, pas un accident : Robertson et Zaragoza décrivent cette forme comme l'objet même de la fonction — la première occurrence établit que le document parle du terme, et les suivantes ne peuvent que confirmer ce qui est déjà établi. Écrire un mot une dixième fois pour se positionner dessus, c'est optimiser une quantité que la fonction de recherche a déjà cessé d'écouter.

Le paramètre b gère la longueur, et bien plus doucement que la densité. Prends ces mêmes 16 occurrences d'espresso et mets-les dans une page de 1 600 mots au lieu de 800, dans un corpus dont le document moyen fait 800 mots. La densité est divisée par deux, de 2,00 % à 1,00 %. Le poids BM25 passe de 2,0465 à 1,9448 — une baisse de 5,0 %. Pour retrouver le score de 800 mots à longueur double, il faudrait 28 occurrences, pas 32. La densité dit que tu as été pénalisé de moitié ; BM25 dit d'un vingtième. Elles ne mesurent pas la même chose et ne l'ont jamais fait.

Puis les plongements ont cessé de compter les termes

TF-IDF et BM25 sont tous deux lexicaux : il faut que le terme de la requête soit présent dans le document, sous une forme ou une autre, pour qu'il obtienne le moindre score. La recherche par plongements casse totalement cette hypothèse. Un modèle projette la requête et le document dans le même espace vectoriel de grande dimension, et la pertinence devient la proximité géométrique de deux vecteurs — le plus souvent la similarité cosinus — plutôt qu'un recouvrement de chaînes. Les comptages d'occurrences ne jouent aucun rôle dans le calcul. Il n'y a pas de f dans la formule.

La conséquence pratique devrait recadrer ta façon d'écrire. Une page sur le détartrage d'une machine à café peut être retournée pour une requête sur le calcaire dans une bouilloire, ou sur le vinaigre blanc dans une cafetière expresso, sans contenir aucun de ces mots, parce que les vecteurs tombent proches. À l'inverse, une page qui répète une expression exacte quarante fois sans rien dire d'autre du sujet se situe dans une région de l'espace que nulle question réelle ne vise. Les systèmes modernes font en général tourner les deux familles et fusionnent les résultats : l'appariement lexical n'a donc pas disparu — mais la moitié lexicale, c'est BM25, qui sature, et la moitié sémantique ne compte rien du tout.

Ce que vaut encore la densité : exactement un coup d'œil

Voici la défense honnête de la métrique. La densité est un diagnostic, pas un bouton. Passe-la une fois sur un brouillon fini et lis-la comme un correcteur orthographique : non pour atteindre un chiffre, mais pour être surpris. Une expression à 5 % d'une page de 800 mots, cela fait quarante occurrences, et personne n'écrit quarante répétitions délibérées de quoi que ce soit — c'est donc un artefact de gabarit, un bloc standard compté dans le corps du texte, un nom de produit répété par un générateur, ou un rédacteur qui a perdu le fil. Les quatre sont de vrais défauts, et la densité les trouve en une passe.

Ce qu'elle ne vaut pas, c'est une cible, et c'est là qu'il faut se méfier de tout outil ou consultant qui en propose une. Il n'existe aucun pourcentage recommandé publié, ni par Google ni par quiconque a accès à une fonction de classement, et la raison est structurelle plutôt que secrète : BM25 sature, donc aucun pourcentage ne le maximise ; les plongements ignorent totalement les comptages, donc aucun pourcentage ne les fait réagir ; et le nombre optimal d'occurrences d'un terme dépend de statistiques de corpus que tu n'as pas. Un outil qui te dit de viser une fourchette rapporte une convention, pas un résultat. Les règles anti-spam de Google prennent le même comportement par l'autre bout — le bourrage de mots-clés, défini comme le remplissage d'une page de mots répétés pour manipuler le classement, est une infraction, et il est décrit en termes d'expérience de lecture, pas de seuil.

Le remplaçant d'une cible de densité n'est donc pas un autre nombre. C'est une autre question : cette page couvre-t-elle les sous-sujets distincts qu'une personne posant cette question aurait besoin de voir traités, dans une langue qu'elle reconnaîtrait. C'est ce qu'un modèle à pondération de termes récompense sans que personne l'optimise, parce qu'une page qui couvre réellement un sujet contient naturellement son vocabulaire rare et spécifique — le détartrage, le porte-filtre, la finesse de mouture — et le vocabulaire rare et spécifique est précisément ce que l'idf est fait pour récompenser. Un comptage de fréquence des mots et un score de lisibilité sont de meilleurs compagnons d'un brouillon qu'un pourcentage de densité, parce que tous deux décrivent le texte au lieu de prétendre décrire le moteur.

Occurrences
La même page de 800 mots, trois termes, trois métriques — et trois classements différents
TermeOccurrencesDensitéIDFTF-IDF (tf brut)TF-IDF (tf log)BM25
machine243,00 %1,609438,636,723,37
espresso162,00 %3,912062,5914,768,01
détartrage40,50 %5,298321,1912,648,97
Analyseur de densité de mots-clésColle un texte pour voir le nombre de mots et les expressions de 1, 2 et 3 mots les plus fréquentes avec leur densité.Essayer l'outil

Questions fréquentes

Quelle est la densité de mots-clés idéale ?
Il n'y en a pas, et cette absence est mathématique plutôt que secrète. BM25 sature : avec k1 = 1,2, une occurrence récolte 45,5 % de tout ce que le terme peut valoir et dix en récoltent 89,3 %, en convergeant vers un plafond que rien n'atteint — aucun comptage ne maximise donc le score. La recherche par plongements ignore totalement les comptages. Et le nombre d'occurrences le plus utile dépend de statistiques de corpus que tu ne vois pas. Tout outil citant une fourchette cite une convention antérieure à tous les modèles de recherche en service.
Si la densité est morte, pourquoi ton outil la calcule-t-il encore ?
Parce qu'une cible morte peut rester un diagnostic vivant. Personne ne devrait écrire vers un chiffre de densité, mais le lire sur un brouillon fini attrape des accidents qu'aucune autre vérification n'attrape : du texte standard compté dans le corps, un nom de produit répété par un générateur, une variable de gabarit qui s'est développée quarante fois. Ce sont de vrais défauts et la densité les fait remonter en une passe. Utilise-la comme un correcteur orthographique — pour qu'on te signale ce que tu n'avais pas voulu, pas pour atteindre un score.
Que sont k1 et b dans BM25, et dois-je m'en soucier ?
k1 contrôle la vitesse de saturation de la fréquence de terme et fixe le plafond à k1 + 1 ; b contrôle la force de la normalisation par la longueur du document, de 0 pour aucune à 1 pour totale. Les valeurs par défaut conventionnelles sont 1,2 et 0,75, celles que livrent Lucene et Elasticsearch. En tant que rédacteur tu ne les régles pas et ne pouves pas savoir ce qu'un moteur donné utilise. Ce qu'il faut en retenir, c'est la forme qu'elles produisent, pas les valeurs : la répétition a des rendements fortement décroissants, et la longueur est pénalisée doucement plutôt que proportionnellement.
Utiliser mon mot-clé dans le titre et les intertitres compte-t-il encore ?
Oui, mais pas pour la raison qu'invoquent d'ordinaire les partisans de la densité. La recherche pondérée par champ traite différemment une correspondance dans un titre et une correspondance dans le corps, et BM25F — l'extension par champs de BM25 — formalise exactement cela. La raison n'est pas que le terme apparaît une fois de plus ; c'est que l'endroit où il apparaît porte une information sur le sujet du document. La règle pratique ne change pas des bons usages éditoriaux : dites de quoi parle la page dans le titre, une fois, avec les mots qu'emploierait un lecteur. C'est aussi ce qui fait qu'un titre fonctionne comme lien et comme extrait.
Une page peut-elle se positionner sur une expression qu'elle ne contient jamais ?
Oui, et c'est l'illustration la plus nette de l'absence de cible pour la densité. La recherche par plongements projette requête et document dans le même espace vectoriel et les compare géométriquement, sans exiger la moindre correspondance de chaîne. Une page sur l'élimination du calcaire dans une machine à espresso peut être retournée pour une requête sur le détartrage d'une cafetière au vinaigre, parce que les vecteurs tombent proches. Les systèmes purement lexicaux ne pouvaient pas faire cela, et c'est pourquoi écrire pour couvrir un sujet l'emporte désormais sur écrire pour placer des occurrences.
Le bourrage de mots-clés est-il encore sanctionné, ou seulement inutile ?
Les deux, et l'inutilité vient d'abord. La saturation de BM25 fait que la quarantième occurrence n'apporte pratiquement rien de plus que la dixième : la pratique n'achète donc aucun score, avant même toute règle. Par-dessus, les règles anti-spam de Google citent le bourrage de mots-clés — remplir une page de mots répétés pour manipuler le classement — comme une infraction, décrite par son effet sur le lecteur plutôt que par un seuil chiffré. Le résumé honnête est donc que le bourrage est une façon de rendre une page pire pour les humains en échange d'un gain de score que la fonction de recherche a cessé de verser il y a des décennies.

Articles qui pourraient t'intéresser

Tous les guides
GuideBalises title, meta descriptions, et ce que les moteurs en fontCe que la documentation de Google dit réellement de la réécriture des titres et de la meta description, plutôt que ce qu'en dit le folklore SEO. Puis la partie mesurable : les titres sont tronqués à la largeur en pixels, si bien que deux titres de soixante caractères exactement peuvent s'afficher à 204,55 pixels d'écart et qu'un seul survit.GuideCe qui fait un bon slug d'URL : stabilité, lisibilité et le conflit entre les deuxUn slug a deux missions qui se contredisent : c'est un identifiant permanent et c'est un texte lisible. Longueur, tirets, mots vides, dates, caractères non ASCII et le motif identifiant + slug qui obtient les deux propriétés — avec les vrais chiffres d'un site qui localise 1 736 slugs d'outils en six langues.GuideDonnées structurées : à quoi les moteurs de recherche s'en servent vraimentLe balisage schema.org achète une éligibilité à un résultat enrichi, jamais une garantie ni un gain de classement. Voici quels types produisent encore quelque chose de visible en 2026, ce qu'exige chacun, et la règle qui fait sanctionner les sites.ExplicationCe que mesurent réellement les scores de lisibilité (et les trois choses qu'ils ne voient pas)Le Flesch Reading Ease et le niveau Flesch-Kincaid comptent des syllabes et des longueurs de phrase. Rien d'autre. Les deux formules en entier, un passage noté de bout en bout, et l'astuce de la virgule qui offre 3,9 niveaux scolaires sans changer un mot.ExplicationOù une ligne peut se couper : l'algorithme Unicode derrière chaque paragraphe justifié« Couper aux espaces » échoue dans la plupart des systèmes d'écriture. UAX #14 donne à chaque caractère une classe de coupure ; nous avons cherché les nôtres dans Unicode 17.0.0 et exécuté une implémentation conforme sur espaces insécables, traits d'union conditionnels, espaces de largeur nulle, URL, japonais et thaï.ExplicationFréquence des mots et loi de Zipf : nous avons compté six livres en six langues et ajusté la penteLe mot de rang n apparaît environ 1/n fois moins que le premier. Nous avons compté six livres du domaine public, imprimé rang × fréquence, ajusté log fréquence contre log rang, et obtenu des pentes entre -1,02 et -1,08 dans les six langues — et les deux endroits où la loi casse.

Outils similaires

Sources

Tu as repéré une erreur dans cet article ?