Aller au contenu
OneKitly

Fréquence des mots et loi de Zipf : nous avons compté six livres en six langues et ajusté la pente

Publié le 26/06/2025 · 15 min de lecture · Outils texte & langage

Daniel Okonkwo

Daniel OkonkwoDéveloppeur front-end et rédacteur Tech chez OneKitly

Performance web · Formats de fichiers

Vérifié à partir de 4 sources

Voir le profil
En bref

La loi de Zipf dit que dans un texte long en langue naturelle, le mot de rang n apparaît environ 1/n fois moins souvent que le mot le plus fréquent. Nous l'avons testée plutôt que citée. Le comptage des Misérables I: Fantine donne 111 887 mots de texte courant faits de 12 899 mots distincts ; « de » y figure 4 472 fois, soit 4,00 % du livre. Le rang 20 est « vous » à 783 occurrences et le rang 1 000 est « auquel » à 11, si bien que rang × fréquence vaut 15 660 au rang 20, 12 800 au rang 100, 12 500 au rang 500 et 11 000 au rang 1 000 — à peu près constant sur deux ordres de grandeur, ce que prédit la loi. L'ajustement de log fréquence contre log rang sur les rangs 10 à 1 000 donne une pente de -1,068 avec R² 0,998. Le même ajustement sur cinq autres romans dans cinq autres langues donne -1,083 en anglais, -1,054 en espagnol, -1,021 en portugais, -1,079 en allemand et -1,031 en italien, tous avec R² d'au moins 0,996. Conséquence pratique : 90 mots suffisent à couvrir la moitié du roman français, donc la fréquence brute dit très peu du sujet d'un document. La loi ajuste le milieu de la distribution, pas les extrémités, et n'apparaît pas du tout dans les textes courts.

Le 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.

L'affirmation, et comment nous l'avons testée

L'affirmation est simple à énoncer : trie tous les mots distincts d'un texte long par fréquence, et le mot en position n apparaîtra environ 1/n fois moins souvent que le mot en position 1. Le deuxième mot le plus fréquent apparaît environ deux fois moins que le premier, le dixième environ dix fois moins, le centième environ cent fois moins. On l'affirme d'ordinaire ; nous avons compté. Six romans viennent du Projet Gutenberg, un par langue du site, en-tête et pied de licence retirés. Chaque texte est passé par le même segmenteur — minuscules, puis suites de lettres et marques Unicode plus l'apostrophe — pour qu'aucune langue ne soit mieux traitée qu'une autre.

Segmenter est déjà une décision, pas un geste neutre. Découper sur les lettres Unicode ne confond « Don't » et « dont » que si l'on exclut l'apostrophe, traite « co-opérer » comme deux mots, et compte séparément les formes fléchies : l'allemand et l'italien, qui répartissent leur grammaire sur de nombreuses formes, finissent avec plus de mots distincts à volume de texte égal. Buddenbrooks a 25 071 mots distincts pour 230 086 mots courants ; Quincas Borba en a 10 329 pour 78 361. Ce sont autant des propriétés de notre segmenteur que des langues, et la mise en garde vaut pour tout compteur de fréquence, y compris le nôtre. L'essentiel ici est que le choix a été le même pour les six.

Rang × fréquence reste presque constant

Si la fréquence suit vraiment 1/rang, alors rang multiplié par fréquence devrait donner partout le même nombre. Dans Les Misérables I, c'est presque le cas. Le rang 20 est « vous » avec 783 occurrences : 20 × 783 = 15 660. Le rang 50 est « monsieur » avec 296 : 14 800. Le rang 100 est « après » avec 128 : 12 800. Le rang 500 est « cria » avec 25 : 12 500. Le rang 1 000 est « auquel » avec 11 : 11 000. Le rang 5 000 est « marchaient » avec 2 : 10 000. Sur des rangs qui varient d'un facteur 250, le produit varie d'environ un tiers — voilà à quoi ressemble « à peu près constant » dans des données réelles, et c'est un résultat fort pour une affirmation à un paramètre sur un roman que personne n'a écrit pour être compté.

La façon la plus nette de le voir est en axes log-log. Prendre le logarithme décimal du rang et de la fréquence transforme f = C / rang^s en une droite de pente -s, et un ajustement des moindres carrés retrouve s. Sur les rangs 10 à 1 000 des Misérables I, l'ajustement donne une pente de -1,068 et un R² de 0,998 sur 991 points — une très bonne droite. Les cinq autres livres donnent -1,083, -1,054, -1,021, -1,079 et -1,031, tous avec R² entre 0,996 et 0,999. La loi de Zipf dans sa forme nue prédit exactement -1 ; chacun de nos six textes se situe un peu plus raide, entre 2 % et 8 % en dessous. Cet excès systématique est bien documenté et explique que la forme généralisée écrive l'exposant comme un paramètre libre au lieu de le fixer à un.

La même forme en six langues, et sur deux siècles

Les six livres couvrent 1605 à 1901 et six langues aux grammaires très différentes, et leurs pentes tiennent dans une bande large de 0,06. C'est là le point intéressant : la forme ne vient ni de l'anglais, ni du roman, ni du XIXe siècle. Pour vérifier qu'elle survit à la prose contemporaine, nous avons appliqué le même comptage aux articles anglais de ce site — 533 articles, 513 756 mots courants écrits en 2026 sur des taux de TVA, des conversions d'unités et des formats de fichier. La pente sur les rangs 10 à 1 000 vaut -0,915 avec R² 0,997. Plus plate que celle des romans, mais la même droite sur les mêmes axes, 175 ans et un genre plus tard.

Les listes de tête diffèrent de façon évidente et s'accordent en profondeur. L'anglais donne the, of, and, a, to ; le français de, la, et, il, le ; l'espagnol que, de, y, la, a ; le portugais a, que, o, de, e ; l'allemand und, die, der, er, in ; l'italien e, che, di, a, il. Pas un seul nom. Ce sont tous des articles, des prépositions, des conjonctions ou des pronoms — de la colle grammaticale, pas du contenu. C'est sur cette observation que repose tout le reste de l'article.

Où la loi échoue : les deux extrémités, et tout texte court

N'ajuste que les dix premiers mots des Misérables I et la pente ressort à -0,541 au lieu de -1,068 ; la tête de la distribution est plus plate que la loi ne le prédit. Elle l'est ailleurs aussi : -0,793 en anglais, -0,693 en espagnol, -0,595 en portugais, -0,545 en allemand, -0,485 en italien. Le mot le plus fréquent n'est jamais aussi dominant qu'une règle stricte en 1/n l'exigerait, et c'est précisément pourquoi la forme de Zipf–Mandelbrot ajoute une constante au rang avant de l'élever à une puissance. À l'autre bout l'ajustement se dégrade autrement : sur les rangs 1 000 à la fin, le R² tombe de 0,998 à 0,921 en français et à 0,895 en portugais, parce que la queue est un escalier de mots qui apparaissent quatre, trois, deux puis une fois, et une droite à travers un escalier est une mauvaise droite.

L'échec le plus utile est celui de la longueur. Prends les 200 premiers mots de Moby-Dick et compte-les : 100 mots distincts, dont 86 n'apparaissent qu'une fois, et le token le plus fréquent est « chapter » avec 56 occurrences, parce que le passage est surtout une table des matières. L'ajustement donne une pente de -0,614 avec R² 0,685 — aucune loi visible. À 1 000 mots l'ajustement vaut -0,751 avec R² 0,920 ; à 5 000 mots -0,897 et 0,969 ; à 20 000 mots -0,991 et 0,991. La distribution ne devient reconnaissable que vers quelques dizaines de milliers de mots. Un billet de blog, une fiche produit ou un courriel sont très en dessous. Compter les fréquences sur 300 mots te dit ce que ce texte répète ; cela ne te dit rien de la langue.

Pourquoi les mots vides existent, et pourquoi la compression marche

Si cent mots font la moitié de ton texte, alors cent entrées dans une liste retireront la moitié des tokens d'un index. C'est tout ce qu'a jamais été une liste de mots vides : une mesure d'économie que la loi de Zipf rend énorme. Dans Les Misérables I, les dix mots les plus fréquents font 21,0 % du texte courant et les cent premiers 51,2 % ; 90 mots distincts couvrent la moitié du roman. Les autres langues s'accordent sur la forme et diffèrent sur le compte : 96 formes pour la moitié du roman anglais, 59 pour l'espagnol, 97 pour le portugais, 132 pour l'allemand, 141 pour l'italien. Note que c'est précisément pourquoi l'approche par mots vides est aujourd'hui en défaveur dans la recherche : ces mots portent un peu d'information, et « être ou ne pas être » n'est fait que de ceux-là.

Le lien avec la compression est mesurable. Moby-Dick emploie 17 422 mots distincts ; si tous étaient également probables, en nommer un coûterait log2(17 422) = 14,09 bits. La distribution unigramme réelle a une entropie de 10,00 bits par mot, soit 29,1 % de moins, et cette économie, c'est l'asymétrie — le fait que « the » revienne tous les quinze mots tandis que « gunwale » apparaît vingt et une fois dans tout le roman. Les compresseurs généralistes exploitent la même asymétrie au niveau des octets : gzip -9 ramène le livre de 1 206 Kio à 486 Kio. Mélanger les 216 603 mots dans un ordre aléatoire puis recompresser donne 459 Kio sur 1 152 Kio, soit essentiellement le même ratio, ce qui indique quelle part du gain de gzip vient ici de la distribution de fréquence plutôt que de l'ordre des mots.

La fréquence brute est un mauvais signal de pertinence — un exemple traité

Découpe Moby-Dick en chapitres, traite chacun comme un document, et demande au compteur de fréquences de quoi parle un chapitre. Nous avons pris les 134 chapitres assez longs pour être comptés et choisi celui intitulé « Queen Mab », 863 mots. Classés par fréquence brute, ses termes de tête sont a (39), i (36), the (26), he (22), of (20) — une description parfaite de l'anglais et une description inutile du chapitre. Pondère les mêmes comptes par la fréquence inverse de document et les termes de tête deviennent kicked (8), kick (7), wise (9), pyramid (5), says (10), flask (10), ce qui résume honnêtement un chapitre où Stubb s'est fait botter et en parle à Flask.

L'arithmétique derrière ce basculement tient en un logarithme. « The » apparaît dans 134 chapitres sur 134, donc sa fréquence inverse de document vaut ln(134/134) = 0,000 et son poids s'effondre à zéro quelle que soit sa fréquence. « Cetology » apparaît dans 3 chapitres, donc son idf vaut ln(134/3) = 3,799 et trois occurrences battent vingt-six occurrences de « the ». C'est le raisonnement du tf-idf et de BM25, la fonction de classement dont partent la plupart des moteurs, et c'est pourquoi la densité de mots-clés que rapportent les outils marketing n'a pas d'équivalent dans un système de recherche moderne. La densité mesure le mauvais axe : ce qui compte est le caractère inhabituel d'un terme dans la collection, pas sa répétition dans la page.

À quoi sert vraiment un comptage de fréquences

Dès que l'on cesse de lire le haut de la liste, le comptage devient vraiment utile. Compare un document à une liste de fréquences de référence et les mots anormalement fréquents en sont le sujet — c'est le calcul tf-idf ci-dessus avec un corpus que tu as déjà. Cherche les répétitions involontaires : un tic d'auteur, un terme répété onze fois dans une fiche produit de 400 mots, un nom orthographié de deux façons. Compte les hapax, les mots présents une seule fois, qui font 53,7 % des mots distincts des Misérables I et 55,9 % de Quincas Borba ; une chute brutale de cette part d'une version à l'autre est un indice honnête d'appauvrissement du vocabulaire. Et vérifie la couverture : si 90 mots portent la moitié de ton texte, l'autre moitié est là où se trouve le sens.

Une habitude mérite d'être conservée : indique le dénominateur. « Apparaît 12 fois » ne veut rien dire sans « sur 400 mots », et 12 sur 400 font 3 %, ce qui est très élevé pour un mot lexical et très bas pour « le ». Notre compteur de fréquences affiche pour cette raison le compte, la part et le rang ensemble, et l'outil de lisibilité voisin travaille sur le même flux de tokens.

Six romans du domaine public, un par langue du site, comptés avec le même segmenteur dans Node 26.3.0. La pente est un ajustement des moindres carrés de log10 fréquence sur log10 rang, rangs 10 à 1 000 ; la loi de Zipf prédit -1. La dernière ligne est le corpus des 533 articles anglais de ce site, écrits en 2026, à comparer à un roman de 1851.
CorpusMots courants / distinctsMot le plus fréquentPente (rangs 10–1000)Les 100 premiers mots couvrent
Moby-Dick (en, 1851)216 603 / 17 422the — 6,71 %-1,0830,99850,6 %
Les Misérables I (fr, 1862)111 887 / 12 899de — 4,00 %-1,0680,99851,2 %
Don Quijote (es, 1605)383 633 / 23 058que — 5,41 %-1,0540,99955,5 %
Quincas Borba (pt, 1891)78 361 / 10 329a — 3,73 %-1,0210,99850,4 %
Buddenbrooks (de, 1901)230 086 / 25 071und — 4,19 %-1,0790,99946,6 %
I promessi sposi (it, 1842)230 152 / 23 932e — 3,79 %-1,0310,99645,9 %
Les articles de ce site (en, 2026)513 756 / 14 375the — 6,55 %-0,9150,99747,6 %
Compteur de fréquence des motsCompte combien de fois chaque mot apparaît dans ton texte, du plus au moins fréquent.Essayer l'outil

Questions fréquentes

Quelle longueur faut-il pour que la loi de Zipf apparaisse ?
Des dizaines de milliers de mots. En tronquant Moby-Dick et en réajustant, on obtient R² 0,685 à 200 mots, 0,920 à 1 000, 0,969 à 5 000 et 0,991 à 20 000, la pente montant de -0,614 vers -1,0 à mesure que le texte grandit. En dessous de quelques milliers de mots, la plupart des mots distincts n'apparaissent qu'une fois — 86 des 100 mots distincts d'un échantillon de 200 mots — et une liste de rangs faite surtout d'ex æquo n'a pas de pente mesurable.
Faut-il retirer les mots vides avant de compter ?
Cela dépend de la question. Pour savoir de quoi parle un document, oui — ou mieux, pondère par la fréquence inverse de document, ce qui les élimine automatiquement : « the » apparaît dans les 134 chapitres de Moby-Dick, donc son idf vaut exactement zéro. Pour vérifier si un texte est atypique, non : un taux anormalement bas de mots grammaticaux est lui-même un signal, et les listes de mots vides suppriment du contenu réel, puisque « être ou ne pas être » n'est fait que de mots vides.
Pourquoi la pente ajustée est-elle plus raide que -1 ?
Parce que la loi nue en 1/n est une idéalisation. Chacun de nos six romans s'ajuste entre -1,021 et -1,083 sur les rangs 10 à 1 000 : l'excès est systématique, pas du bruit, et c'est pourquoi la forme généralisée de Zipf–Mandelbrot traite l'exposant comme un paramètre libre et ajoute une constante au rang pour redresser la tête trop plate. La plage ajustée change aussi la réponse : ajuster la liste complète au lieu des rangs 10 à 1 000 fait passer la pente anglaise de -1,083 à -1,154, parce que la queue bruitée constitue la majorité des points.
Le segmenteur change-t-il le résultat ?
Il change les comptes, pas la forme. Garder l'apostrophe, découper les mots composés ou lemmatiser les formes fléchies fait beaucoup bouger le nombre de mots distincts — 25 071 pour le roman allemand contre 10 329 pour le portugais, sur des textes de longueurs très différentes — alors que la pente log-log reste dans la même bande étroite. Ne compare des listes de fréquences que si elles viennent du même segmenteur, et dis lequel.
La densité de mots-clés est-elle un nombre utile ?
Seulement comme contrôle de la répétition. La densité est un nombre intra-document, la pertinence un nombre inter-documents : dans notre test sur un chapitre, la pondération par fréquence inverse de document a transformé un top-cinq a, i, the, he, of en kicked, kick, wise, pyramid, flask. Un mot présent dans tous les documents d'une collection a un idf exactement nul, quelle que soit sa densité sur ta page. Sers-toi du comptage pour repérer les répétitions accidentelles ; n'en fais pas une cible.

Articles qui pourraient t'intéresser

Tous les guides
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ï.GuideConvertir entre formats de liste sans perdre de données : les règles de guillemets que personne ne litPasser d'une liste à retours à la ligne à une liste à virgules est trivial jusqu'à ce qu'un élément contienne une virgule. Les règles de guillemets de la RFC 4180, pourquoi un champ CSV peut contenir un saut de ligne, pourquoi les tableurs européens utilisent le point-virgule, et ce qu'un élément vide fait à l'aller-retour — chaque cas exécuté et imprimé.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.ExplicationCompter les mots est ambigu, et chaque outil répond autrementUn compte de mots est une définition, pas une mesure. Nous avons compté le même paragraphe de quatre façons et obtenu 25, 28, 33 et 38 — puis compté 50 000 caractères de prose ordinaire et obtenu un accord à 4,5 % près. L'écart tient entièrement aux composés, aux chiffres et aux URL.ExplicationLa densité de mots-clés est une métrique morte, et voici ce qui l'a remplacéeLa 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.ExplicationCompter des caractères face à une limite fixée par quelqu'un d'autreUn émoji vaut 1 caractère, ou 7, ou 11, ou 25, selon qui compte. Lequel ton formulaire, ta base et ta passerelle SMS veulent dire — et un test d'un seul collage pour savoir auquel tu as affaire.

Outils similaires

Sources

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