Aller au contenu principal

Leçon 2 — La tokenisation : comment le texte devient des unités calculables

Le problème que personne ne mentionne

Un modèle ne voit pas du texte. Il voit des nombres. Avant toute chose, il faut donc découper le texte en unités et attribuer un identifiant à chaque unité. Cette étape s'appelle la tokenisation, elle précède tout le reste, et elle détermine silencieusement une bonne partie de ce que le modèle pourra faire.

C'est l'étape la plus négligée du NLP et l'une des plus lourdes de conséquences.


Pourquoi découper sur les espaces ne marche pas

L'idée naturelle est de couper à chaque espace : un mot, un token. Trois problèmes surgissent immédiatement.

Le vocabulaire explose. Le français compte, formes fléchies comprises, plusieurs millions de mots possibles. Chaque mot du vocabulaire coûte une ligne dans la matrice de plongements. Un vocabulaire d'un million d'entrées avec des vecteurs de 768 dimensions représente à lui seul près de 800 millions de paramètres, avant même le modèle.

Les mots inconnus deviennent muets. Que fait le modèle face à un mot absent de son vocabulaire — un nom propre, un néologisme, une faute de frappe ? Rien. Il le remplace par un jeton « inconnu » et perd toute l'information. Or les mots rares sont souvent les plus informatifs.

Aucune parenté n'est visible. « Courir », « courais », « coureur » deviennent trois entrées sans lien. Le modèle doit apprendre séparément ce que chacune signifie, alors qu'elles partagent une racine.


La solution : découper en sous-mots

Les systèmes modernes utilisent la tokenisation en sous-mots. Le principe est simple et efficace : les mots fréquents restent entiers, les mots rares sont découpés en fragments réutilisables.

Concrètement, sur un tokeniseur courant :

TexteTokens produits
le chat dortle · chat · dort
anticonstitutionnellementanti · constitution · nelle · ment
InSkillMLIn · Skill · ML
zzzqxz · zz · q · x

Le gain est double. Un vocabulaire fixe d'environ 30 000 à 100 000 tokens suffit, ce qui reste économique. Et aucun mot n'est jamais inconnu : dans le pire des cas, il est découpé jusqu'aux caractères. Un néologisme inventé aujourd'hui est représentable par un modèle entraîné l'an dernier.


Comment le découpage est appris

Le tokeniseur n'est pas écrit à la main : il est entraîné sur un corpus. L'algorithme le plus répandu s'appelle BPE, pour byte pair encoding, et sa logique tient en trois lignes.

  1. On part d'un vocabulaire réduit aux caractères individuels.
  2. On cherche la paire de symboles adjacents la plus fréquente dans le corpus et on la fusionne en un nouveau symbole.
  3. On répète jusqu'à atteindre la taille de vocabulaire visée.

Les séquences fréquentes finissent donc par former des tokens entiers, les rares restent fragmentées. WordPiece, utilisé par BERT, et SentencePiece, très répandu pour le multilingue, sont des variantes de la même idée.

Le tokeniseur fait partie du modèle

On ne peut pas changer de tokeniseur après l'entraînement. Les identifiants de tokens sont les entrées sur lesquelles les plongements ont été appris : un autre découpage produirait des identifiants qui ne veulent plus rien dire. Tokeniseur et modèle se déploient toujours ensemble, et c'est une source classique de bugs en production quand les deux versions se désynchronisent.


Pourquoi cela vous concerne directement

Vous êtes facturé en tokens

Les API de modèles de langue facturent par token, pas par mot. En moyenne, sur du français, un token vaut environ 0,7 mot — autrement dit, 1 000 mots coûtent à peu près 1 400 tokens. Estimer un budget sans connaître ce rapport conduit à se tromper de 40 %.

La fenêtre de contexte se compte en tokens

Quand un modèle annonce une fenêtre de 128 000 tokens, ce ne sont pas 128 000 mots. C'est plutôt de l'ordre de 90 000 mots en français, et moins encore si votre texte contient du code, des tableaux ou beaucoup de noms propres, qui se fragmentent davantage.

Le français coûte plus cher que l'anglais

Les tokeniseurs des grands modèles sont entraînés sur des corpus majoritairement anglophones. Les séquences anglaises fréquentes ont donc obtenu leurs tokens entiers ; les formes françaises, moins représentées, se fragmentent plus. Le même contenu traduit en français consomme typiquement 15 à 25 % de tokens en plus. L'arabe, le japonais et les langues à écriture non latine peuvent doubler la facture.

Ce n'est pas un détail comptable : c'est un désavantage structurel qui touche le coût, la latence et la quantité de contexte utilisable.


Deux conséquences surprenantes

Un modèle compte mal les lettres. Demandez à un modèle combien de « r » contient « verrerie » : il se trompe souvent. Il ne voit pas les lettres, il voit des tokens. La question porte sur un niveau d'information auquel il n'a pas accès directement.

Les nombres sont fragiles. Selon le tokeniseur, « 1234 » peut devenir un token, ou « 12 » + « 34 », ou « 1 » + « 2 » + « 3 » + « 4 ». Cette instabilité explique une partie des erreurs arithmétiques des modèles de langue : les chiffres n'arrivent pas sous une forme régulière.


À retenir

  • Un modèle ne traite pas du texte mais des identifiants numériques de tokens.
  • Découper sur les espaces fait exploser le vocabulaire et rend les mots rares invisibles.
  • La tokenisation en sous-mots garde les mots fréquents entiers et fragmente les rares : vocabulaire fixe, aucun mot inconnu.
  • BPE apprend le découpage en fusionnant itérativement les paires les plus fréquentes.
  • Le tokeniseur est inséparable du modèle ; les désynchroniser casse tout silencieusement.
  • Tokens et mots ne se confondent pas : cela détermine votre facture, votre fenêtre de contexte, et le surcoût réel du français.

Leçon suivanteLes plongements : le sens comme géométrie →