Un modèle ne compte pas en mots mais en tokens : des unités de texte produites par un algorithme de découpage (tokenizer). Or le BPE, la méthode la plus répandue, découpe souvent un mot français en plusieurs morceaux — accents, terminaisons, mots composés — si bien qu'un texte de 100 mots peut facilement représenter 130 à 150 tokens. Voici le mécanisme, puis des exemples chiffrés et une méthode pour estimer l'écart.
Qu'est-ce qu'un token et pourquoi ce n'est pas un mot
Un token désigne ce qui est fourni en entrée à un modèle de langage : un morceau de texte transformé en identifiant numérique (un « id ») via un vocabulaire fixé à l'avance. Le modèle ne voit jamais de lettres ni de mots directement ; il calcule sur des séquences d'ids. Un token peut être un mot entier (« chat »), un fragment de mot (« anti- »), une terminaison (« -ment »), une ponctuation, un espace ou même un octet isolé dans certains tokenizers.
Un mot est, lui, une unité définie par la typographie : en français, un mot est généralement délimité par des espaces ou de la ponctuation. Le décompte en mots pose d'ailleurs déjà problème pour « aujourd'hui » ou « porte-monnaie ». Les tokenizers n'ont pas cette notion : ils découpent en fonction de fréquences apprises sur un corpus d'entraînement.
D'où l'écart : un mot très fréquent dans le corpus d'entraînement sera probablement un token unique, alors qu'un mot rare, accentué ou morphologiquement complexe sera découpé en plusieurs fragments. Le tokenizer n'est donc pas un dictionnaire : c'est une compression statistique du texte.
Le mécanisme BPE expliqué étape par étape
Le BPE (Byte Pair Encoding, « encodage par paires d'octets ») est un algorithme de fusion itérative. On part des caractères (ou des octets) et on fusionne de façon répétée les paires les plus fréquentes.
Étape 1 : initialisation. Chaque caractère devient un token. Le mot « maison » devient : m, a, i, s, o, n (6 tokens).
Étape 2 : comptage des paires. Sur un corpus, on compte les paires adjacentes fréquentes. Supposons que « ai » apparaisse très souvent. On fusionne : m, ai, s, o, n (5 tokens).
Étape 3 : fusion itérative. Aux itérations suivantes, « on » puis « son » puis « maison » peuvent être fusionnés si leur fréquence le justifie. On s'arrête quand le vocabulaire atteint la taille cible (souvent plusieurs dizaines de milliers de tokens).
Étape 4 : application. Pour encoder un texte, on applique exactement les mêmes fusions, dans le même ordre. Un mot inconnu à l'entraînement sera découpé en fragments connus, voire en caractères isolés si nécessaire : c'est le fallback (repli).
Contrairement au découpage par mots entiers, le BPE gère ainsi n'importe quel texte sans « mot inconnu » (out-of-vocabulary). Le prix à payer : la longueur en tokens peut dépasser le nombre de mots.
Voici le cœur du calcul en pseudo-code :
tokens = liste(charactères du mot)
pour chaque fusion (a, b) dans l'ordre appris :
remplacer toute occurrence de (a, b) par (a+b)
retourner tokens
Exemple de traçabilité : pour « rapidement », si les fusions apprises incluent r+a → ra, ra+p → rap, rap+id → rapid, rapid+e → rapide, mais pas rapide+ment, le mot peut finir en rapide + ment : 2 tokens pour 1 mot. À l'inverse, « de » ou « le », très fréquents, restent 1 token chacun. Le rapport tokens/mots dépend donc entièrement des mots du texte et de la couverture du vocabulaire.
Exemples chiffrés : décompte tokens vs mots en français
Prenons une phrase courte et réaliste :
« Les modèles de langage décomposent les mots rares. »
Décompte des mots (séparés par des espaces) : 8 mots.
Pour le décompte des tokens, on doit formuler une hypothèse explicite, car le découpage exact dépend du tokenizer (l'outil qui applique le BPE) et de son vocabulaire d'entraînement. Hypothèse de travail simple et prudente : les mots très fréquents et courts (« les », « de ») correspondent à 1 token ; les mots courants moyennement longs coûtent 1 à 2 tokens ; les mots rares ou accentués coûtent souvent 2 à 3 tokens. Voici un découpage illustratif cohérent avec cette hypothèse :
Les -> 1 token ("Les")
modèles -> 2 tokens ("mod" + "èles")
de -> 1 token ("de")
langage -> 2 tokens ("lang" + "age")
décomposent -> 3 tokens ("dé" + "compos" + "ent")
les -> 1 token ("les")
mots -> 1 token ("mots")
rares -> 2 tokens ("ra" + "res")
Total : 1+2+1+2+3+1+1+2 = 13 tokens pour 8 mots.
Ratio : 13 / 8 = 1,625 token par mot. L'écart absolu est de 13 - 8 = 5 tokens « en plus » des mots.
Ce chiffre n'est pas une norme : c'est le résultat d'une hypothèse de découpage. Un autre tokenizer pourrait donner 11 ou 16. La leçon pratique : le nombre de tokens n'est pas déductible du nombre de mots sans connaître le tokenizer.
Calculer l'écart tokens/mots et son impact sur les coûts
Deux formules suffisent :
ratio = nombre_de_tokens / nombre_de_mots
ecart_absolu = nombre_de_tokens - nombre_de_mots
ecart_relatif (%) = (nombre_de_tokens - nombre_de_mots) / nombre_de_mots * 100
Avec l'exemple ci-dessus : écart relatif = 5 / 8 = 62,5 %.
Pour le coût, la facturation se fait presque toujours au token, pas au mot. Si l'on note P le prix par token (valeur volontairement laissée symbolique, car les tarifs varient et changent), alors :
cout = nombre_de_tokens * P
surcout_vs_hypothese_mot = (nombre_de_tokens - nombre_de_mots) * P
Autrement dit, raisonner « en mots » sous-estime la facture d'environ le ratio calculé. Un texte de 1 000 mots au ratio 1,6 consomme environ 1 000 * 1,6 = 1 600 tokens, soit 60 % de plus que le nombre de mots.
Checklist pour estimer sans se tromper :
- Compter les mots par séparation sur les espaces (attention aux traits d'union et apostrophes : « l'arbre » = 1 ou 2 selon la convention choisie — fixez-la).
- Ne jamais supposer un ratio universel : il dépend de la langue, du domaine (vocabulaire technique = plus de tokens) et du tokenizer.
- Pour un chiffre fiable, passer le texte dans le tokenizer du modèle visé et lire le compte réel.
- Toujours exprimer le coût en tokens, puis convertir en mots seulement pour communiquer.
Idée de code (pseudo-code, à adapter au tokenizer utilisé) :
tokens = tokenizer.encode(texte)
mots = texte.split()
ratio = len(tokens) / len(mots)
L'essentiel : le token est l'unité de compte réelle ; le mot n'est qu'une approximation commode, souvent optimiste.
Questions fréquentes
Pourquoi un mot français produit-il souvent plusieurs tokens ?
Parce que le tokenizer (l'outil qui découpe le texte en tokens) a été entraîné sur un vocabulaire où les mots français complets, surtout les plus longs ou les plus rares, ne figurent pas tels quels. Le BPE (Byte Pair Encoding, un algorithme qui fusionne itérativement les paires de caractères les plus fréquentes) découpe alors le mot en sous-unités connues : par exemple « anticonstitutionnellement » sera fragmenté en plusieurs morceaux car il est trop rare pour avoir sa propre entrée. Un mot court et fréquent comme « le » ou « de » tient généralement en un seul token.
Le ratio tokens/mots est-il le même selon la langue ?
Non. Le ratio dépend de la couverture du vocabulaire du tokenizer pour la langue concernée. L'anglais, très représenté dans les corpus d'entraînement, obtient souvent un ratio proche de 1,3 token par mot, tandis que le français tourne fréquemment autour de 1,5 à 2 selon le tokenizer et le texte, et des langues moins représentées ou non latines peuvent dépasser 2 ou 3. Ces chiffres sont des ordres de grandeur estimés, à vérifier avec le tokenizer exact que vous utilisez.
Comment estimer le nombre de tokens d'un texte sans modèle ?
On peut appliquer un ratio empirique : compter les mots (séparés par des espaces) puis multiplier par un facteur propre à la langue et au tokenizer, par exemple tokens ≈ mots × 1,6 pour du français courant. Cette estimation reste grossière : elle ignore la ponctuation, les chiffres, les accents et les mots rares qui gonflent le décompte. Pour un chiffre fiable, il faut passer le texte dans le tokenizer réel, car seule la table de fusion du modèle donne le découpage exact.
Le BPE pénalise-t-il les mots rares ou les accents ?
Oui, dans une certaine mesure. Les mots rares et les formes accentuées absentes du vocabulaire entraîné sont découpés en davantage de sous-unités, donc coûtent plus de tokens ; un « é » isolé ou une terminaison inhabituelle peut ainsi créer un token supplémentaire. À l'inverse, un mot fréquent et bien couvert reste compact. Le BPE ne « pénalise » pas volontairement, mais son vocabulaire statistique reflète la fréquence dans les données d'entraînement.
Comment réduire le nombre de tokens pour baisser les coûts ?
Quelques leviers concrets : préférer des formulations courtes et des mots courants plutôt que des tournures rares, éviter les répétitions inutiles, retirer le remplissage (formules creuses, politesses redondantes) et, pour les traitements par lots, choisir un tokenizer ou un modèle dont le vocabulaire couvre mieux le français. Normaliser les accents n'est pas recommandé car cela dégrade la qualité du texte. On peut aussi tronquer ou résumer les longs contextes avant envoi, ce qui réduit directement le nombre de tokens facturés.