Zipf et les singes dactylos

Image: Laura H. Azran. Source: ici

En statistiques, la loi de Zipf est « l’un des faits les plus frappants en économie et en sciences sociales en général », un « mystère urbain » comme l’écrit Paul Krugman. Peu de lois statistiques sont en effet aussi universelles qu’elle et pourtant elle a réussi à entretenir la controverse depuis que George Zipf l’eut popularisée en 1941. Signe d’une complexité auto-organisée pour les uns, simple curiosité statistique pour les autres, elle fascine autant qu’elle énerve…

La fréquence des mots est inversement proportionnelle à leur popularité

George Kingsley Zipf était un drôle de bonhomme, professeur de philologie à Harvard et passionné de statistiques (à cause de son nom improbable?) qui faisait des théories sur tout et n’importe quoi. Mandelbrot écrivait à son propos [1] « je connais peu d’ouvrages où tant d’éclairs de génie, projetés dans tant de directions, se perdent dans une gangue aussi épaisse d’élucubrations. D’une part on y trouve un chapitre traitant de la forme des organes sexuels, et un autre où l’on justifie l’Anschluss par une formule mathématique ».

A l’époque on n’avait pas d’ordinateur et encore moins de grands corpus de textes numérisés, alors Zipf embaucha ses étudiants pour relever dans l’Ulysse de Joyce la liste des mots utilisés, noter combien de fois ils apparaissent dans le texte et ensuite les classer par ordre de fréquences. Aux premiers rangs du classement on trouve bien sûr des petits mots très usuels comme le, un, à, en, etc. Et en queue de peloton on trouve une flopée de mots rares qui ne sont utilisés qu’une seule fois dans le livre. Ce que Zipf découvrit (ou plutôt redécouvrit car le phénomène avait déjà été repéré bien avant) est que la fréquence d’usage d’un mot est inversement proportionnelle à son rang dans le classement.

f * r = C (f est la fréquence du mot, r son rang et C une constante).

Autrement dit le mot le plus populaire est deux fois plus utilisé que le second, trois fois plus que le troisième, etc. Et cette loi se vérifie dans toutes les langues, dans tous les textes et chez tous les auteurs (même si bien entendu le classement de chaque mot varie beaucoup d’un texte à l’autre). En général on la représente sur un graphique en échelle logarithmique, ça permet de caser toutes les valeurs et surtout la courbe se présente comme une magnifique droite de pente -1 (Log f = – Log r + une constante):

Source: Wikipedia

C’est joli, mais c’est surtout pratique pour faire votre devoir d’histoire:

Profonde ou triviale la loi de Zipf?

L’interprétation de cette loi étonnante est encore loin de faire l’unanimité. Zipf y voyait l’application de la « loi du moindre effort » (son dada pour expliquer le comportement humain dans tous les domaines) appliquée à la communication. Celui qui parle aurait la flemme de trouver le mot juste pour exprimer précisément sa pensée. S’il ne tenait qu’à lui, utiliserait donc très peu de mots, comptant sur leurs multiples acceptions pour se faire comprendre. Un peu comme un Shtrumpf:

Source: ici

Pour celui qui écoute, il est au contraire plus facile de comprendre des mots précis et sans ambiguïté. Sa préférence va donc vers un vocabulaire le plus diversifié possible. Entre ces deux tendances contradictoires s’établit un compromis qui expliquerait la distribution très particulière des fréquences des mots…

Vous n’avez pas bien compris l’explication? Rassurez-vous vous n’êtes pas le seul car elle  ne tient pas vraiment la route. D’une part les mots les plus fréquents d’une langue sont des petits mots de liaison comme le, la, una, etc. dont l’usage est imposé par la grammaire et non pas par la paresse de celui qui parle. Mais surtout si vous asseyez un singe devant une machine à écrire et que vous le laissez taper au hasard sur les touches, le pseudo-texte qu’il produira obéira aussi à la loi de Zipf! Et si vous n’avez pas de singe sous la main, une démonstration théorique assez simple est donnée ici. On peut aussi s’en convaincre directement en pratiquant l’analyse non pas sur les mots d’un texte, mais sur les pseudo-mots, constitués des suites de caractères entre deux e successifs. Par exemple dans la phrase précédente les pseudo-mots seraient: maissurtoutons’ap, rçutqu, silonass, yait, nimaginationd, ssing, sd, vantun, machin, a, crir, etc. C’est impressionnant comme ça marche bien:

Distribution de mots (en haut) et de pseudo-mots (en bas) dans le corpus de Brown. Les pseudo-mots sont définis comme toutes séquences de lettres comprises entre deux e successifs. La prédiction du modèle de Zipf est représentée par les droites en pointillé (de pente -1). Source: ici

Manifestement, la loi de Zipf n’est pas propre au langage. D’ailleurs on se demande un peu à quoi elle est propre tant on la trouve absolument dans toutes les statistiques imaginables de la taille des villes à la popularité des applications Linux, en passant par la répartition des dons ou des richesses.  C’en est au point qu’on s’interroge lorsqu’une variable ne suit pas la loi de Zipf, comme l’audience des billets de blogs chez Tom Roud par exemple.

Quelques exemples de distribution de Zipf:

La distribution des richiesses et des dons suit la loi de Zipf (du moins dans sa partie supérieure). Credit Image: Q. Chen, et al.
Source: ici

La popularité des applications sous Unix suit aussi une loi de Zipf. Ici quatre distributions Debian: Woody (orange), Sarge (vert), Etch (bleu) et Lenny (noir). Credit: T. Maillart, et al. Source: ici

La taille des villes américaines suit une loi de Zipf. Données 2009 de E Glaeser. Source: NYT

Certaines de ces régularités s’expliquent plus facilement que d’autres. Pour la taille des villes, il suffit de modéliser la croissance comme étant indépendante de leur taille (5% par an par exemple pour toutes les villes). L’hypothèse est tellement banale que c’en est à se demander si la loi de Zipf n’est pas une simple curiosité statistique sans grand intérêt. Au début, ses détracteurs ne manquèrent d’ailleurs pas de constater que l’on n’en avait pas retiré grand chose en linguistique, une fois la phase d’étonnement passée. Ça a bien changé par la suite, comme on va le voir.

Oui, les singes dactylographes sont de bons codeurs!

Mandelbrot qui s’est intéressé à la linguistique a apporté un éclairage intéressant sur le sujet. Grâce aux outils de la théorie de l’information née quelques années plus tôt, il démontra que la fameuse régularité statistique surgit dès qu’une langue minimise le nombre de lettres par mot pour exprimer une quantité d’information donnée [1]. Cette interprétation explique pourquoi les pseudo-mots suivent cette loi: Pour être efficace, tout système de codage doit utiliser des codes courts pour les mots fréquemment utilisés: imaginez l’enfer que ce serait si vous deviez remplacer l’article le par le mot supercalifragilisticexpidélilicieux! Or la génération aléatoire de pseudo-mots est parfaite en ce sens: un mot de une lettre (f par exemple) a 26 fois plus de chances d’apparaître qu’un mot de deux lettres (comme fu), qui lui-même est 26 fois plus probable qu’un mot de trois lettres (fut). Paradoxalement un tel codage totalement aléatoire est très efficace même s’il n’exprime que du bruit! Evidemment si l’on avait imposé une longueur constante à tous les mots, tout aurait été différent. Les mots auraient tous été équiprobables et adieu la loi de Zipf. Tout ça pour dire que la loi de Zipf semble être une condition nécessaire mais pas suffisante pour « signer » une communication efficace.

La signature d’une langue?

Tout récemment j’ai découvert toujours dans ce billet de Tom Roud que la loi de Zipf pourrait constituer la « signature » statistique d’un régime biologique à l’état critique: un réseau de neurones, le langage, les mouvements collectifs etc. Cette loi s’observerait chaque fois qu’un tel système complexe se trouve pile à l’état de transition entre un état purement aléatoire et un état hautement organisé. Un peu comme une transition de phase dans un système physique classique, sauf qu’ici le paramètre sensible (l’exposant β proche de 1 dans la formule f=C/rβ) s’ajusterait tout seul sur la valeur critique au lieu d’être déterminé par les conditions extérieures au système. C’est ce qu’on appelle la criticalité auto-organisée (l’article est disponible ici).
Ce genre de considérations a redonné de la crédibilité à tous ceux qui voient dans la loi de Zipf un outil statistique intéressant pour tout un tas de domaines. Et dans le fond, quel meilleur juge de paix pour évaluer la puissance d’une loi scientifique, que le nombre d’applications inédites qu’elle permet?

Zipf en guerre contre spams et plagiats

On avait vu dans ce billet comment une autre loi statistique, la loi de Benford, permet au fisc américain de repérer les séries de nombres inventées de toutes pièces. De la même façon la loi de Zipf semble très efficace dans la lutte contre… le plagiat. Tous les auteurs suivent la loi de Zipf, mais chacun a ses petites préférences en matière de vocabulaire. Les fréquences relatives des mots constituent une « signature » propre à chaque auteur. L’analyse des ruptures de fréquences permet du coup de repérer les parties suspectes un texte, même sans connaître la source originale. La détection des plagiaires peut se faire en ligne gratuitement (ici). Je ne l’ai pas essayé, mais si ça marche, c’est la mort assurée du copier-coller pour les lycéens! En tout cas, ces statistiques semblent montrer que Shakespeare n’a pas écrit à lui tout seul son impressionnante bibliographie.

Les travaux de Zipf sur la taille du vocabulaire sont aussi utiles dans la lutte contre le spam. Le vocabulaire d’une langue n’est pas infini, loin de là. Alors qu’on pourrait fabriquer 300 millions de combinaisons avec 6 lettres, notre lexique se limite à quelques centaines de milliers de mots, toutes déclinaisons confondues. Zipf avait découvert que le nombre de mots N(f) correspondant à une fréquence f donnée suit une loi de puissance: N(f)~f-α (α étant proche de 2). Or les séries de lettres aléatoires ne suivent pas cette loi… et les spams non plus, dont le vocabulaire est disons assez limité (sexe, viagra, medicine, free etc). L’analyse dite de Zipf inverse sur le nombre de mots ayant une fréquence donnée serait une technique particulièrement efficace pour repérer très vite les pourriels. Fortiche Zipf!

Zipf contre les envahisseurs

Stèle de la Vallée de l’Indus (3500 av JC) avec les symboles visibles.
Source: ici

Si l’on n’a pas affaire à des mots mais à une suite de caractères collés les uns aux autres, comme sur ces stèles de la vallée de l’Indus, il peut être intéressant de faire l’analyse de Zipf sur chaque caractère isolé, puis sur chaque paire de caractères, sur chaque triplet etc. (on appelle ça des « n-gram »). Ça revient à étudier les corrélations entre lettres voisines. En français, on trouve par exemple toujours un u après un q, et très souvent une consonne après une voyelle. Dans un langage simple, ces corrélations sont limitées à des lettres voisines mais plus une langue est complexe, plus les corrélations portent sur des lettres éloignées les unes des autres. L’étude statistique des stèles de l’Indus a révélé en 2010 des corrélations jusqu’à 4 caractères successifs, indiquant que ces inscriptions correspondent  non pas à une série de symboles, mais à une langue assez sophistiquée.

Et ce qui marche pour des caractères peut aussi fonctionner pour des sons. Des chercheurs ont adapté la méthode pour analyser les cris des dauphins et affirment y avoir détecté la signature d’une langue complexe, avec là encore des corrélations jusqu’à quatre lettres d’intervalles (la méthode fait apparemment débat, voir cet article).

Pourquoi s’arrêter en si bon chemin? Après les civilisations anciennes et les animaux, cap sur le cosmos! Les chercheurs du SETI (Search for Extra Terrestrial Intelligence) comptent eux-aussi sur les lois de Zipf pour détecter un petit signal de nos copains extra-terrestres au milieu de tous les bruits du cosmos. Sans succès pour l’instant, mais c’est une autre histoire.

J’arrête là: pour une loi « triviale », je trouve qu’elle se défend plutôt pas mal cette loi de Zipf. Et il faut reconnaître à son farfelu d’auteur qu’il a eut du nez pour y reconnaître une vraie pépite statistique.

[1] Benoît Mandelbrot: Fractales, hasard et finance et Les objets fractals

Disclaimer: aucun singe n’a été maltraité pour écrire ce billet

15 comments for “Zipf et les singes dactylos

  1. 12/10/2012 at 00:26

    « Biographie » de Shaekspeare ?
    Bibliographie non ? Car je ne vois pas vraiment de supposer qu’il ait écrit une biographie. Ou alors je ne comprend rien.

  2. 12/10/2012 at 12:53

    Oups, merci Arthur. C’est corrigé!

  3. Maria
    12/10/2012 at 16:38

    Un autre outil pour détecter le plagiat (bien utilisé à l’Université de Nice par les profs): http://turnitin.com/

  4. bob
    13/10/2012 at 09:58

    Intéressant éclairage
    (depuis que George Zipf l’eût popularisée en 1941 : l’accent circonflexe est de trop, simple passé simple)/

  5. bob
    13/10/2012 at 09:59

    Intéressant éclairage (depuis que George Zipf l’eût popularisée en 1941 : l’accent circonflexe est de trop, simple passé simple).

  6. Pli
    13/10/2012 at 15:35

    Bonjour,

    Sauriez-vous si les textes mathématiques suivent aussi une loi de Zipf (ou plus généralement, s’il existe une signature statistique des textes mathématiques) ?

  7. 14/10/2012 at 14:17

    @bob: merci, c’est corrigé.
    @phi: oui, le langage mathématique et globalement tous les langages « artificiels » (de programmation par exemple) suivent aussi la loi de Zipf.

  8. Pli
    15/10/2012 at 15:56

    Merci pour votre réponse !

  9. 20/10/2012 at 17:03

    je suis curieux de tester un de ces outils statistiques sur mon blog pour voir si j’ai bien écrit tous mes articles moi même 😀
    malheureusement en version gratuite pour plus de 1000 charactères c’est pas facile à trouver.

    sympathique analyse en tous cas!

  10. Abel
    27/02/2013 at 17:06

    Intéressant… Je me demande si cette loi pourrait s’appliquer aux caractères chinois. Dans ce cas de langue où l’oral et l’écrit sont largement dissociés, les 60 000 ou 70 000 caractères sont cependant tous composés des mêmes éléments, un peu comme un puzzle (il y a 214 des ces éléments), qui sont eux-mêmes composés de seulement huit traits fondamentaux. Certains caractères sont très simples, d’autres très compliqués (composés de beaucoup d’éléments). Pour vérifier la loi de Zipf dans le chinois, on pourrait mettre en rapport la fréquence des caractères et leur complexité. Le caractère le plus simple est composé d’un seul trait, et il est très fréquent: c’est le chiffre ‘un’. Le caractère le plus compliqué est composé de 64 traits, et il est très peu fréquent: ‘nang’, une façon désuette de dire ‘avoir le nez légèrement bouché’. Qui s’y colle ? Grâce à l’informatique, c’est tellement plus simple… En tous cas d’instinct je dirais que la loi de Zipf marche là aussi, mais ce n’est pas certain. Merci pour vos bons articles.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *