Lexique · Concepts / définitions

Tokenisation : définition, algorithmes BPE et exemples

Le processus qui transforme un texte en une suite de tokens compréhensible par un modèle de langage : étapes, algorithmes BPE, WordPiece et Unigram, exemples de code et effets sur les langues, les nombres et le code.

Par Équipe Blent· Mis à jour le · 15 min de lecture· Niveau intermédiaire

Tokenisation en bref

Rôle
Convertir un texte en identifiants de tokens
Algorithmes courants
BPE, WordPiece, Unigram
Bibliothèques
tiktoken, Tokenizers, SentencePiece
Taille de vocabulaire
De 30 000 à plus de 200 000 tokens
Opération inverse
Le décodage (detokenization)
Particularité
Propre à chaque famille de modèles

Définition : Tokenisation

La tokenisation, ou tokenization en anglais, est le processus qui découpe un texte en unités élémentaires appelées tokens, puis associe chacune à un identifiant numérique tiré d'un vocabulaire fixe. Dans les grands modèles de langage, elle repose sur des algorithmes de sous-mots comme BPE, WordPiece ou Unigram, qui apprennent sur un corpus quels fragments de texte méritent leur propre entrée. Les mots fréquents deviennent un seul token, les mots rares sont décomposés en morceaux. La tokenisation est la première étape de tout traitement par un LLM, et son inverse, le décodage, reconstitue le texte à partir des identifiants générés.

En une phrase : la tokenisation découpe le texte en fragments numérotés selon un vocabulaire appris, pour que le modèle puisse le traiter.

Dans cette définition

Qu'est-ce que la tokenisation ?

La tokenisation est l'étape qui transforme une chaîne de caractères en une liste d'entiers qu'un modèle de langage peut traiter. Elle découpe le texte en tokens, cherche chacun dans un vocabulaire fixe et le remplace par son identifiant. À la sortie du modèle, l'opération inverse, le décodage, reconvertit les identifiants générés en texte lisible.

Historiquement, le traitement automatique du langage découpait le texte en mots. Cette approche bute sur deux problèmes : le vocabulaire explose avec les flexions, les noms propres et les fautes de frappe, et tout mot absent du dictionnaire devient un symbole « inconnu ». À l'inverse, un découpage caractère par caractère ne laisse rien d'inconnu mais produit des séquences très longues, coûteuses à traiter pour un Transformer. Les tokenizers en sous-mots, popularisés en traduction automatique au milieu des années 2010, puis par BERT et GPT-2, ont résolu ce dilemme : les mots fréquents restent entiers, les mots rares sont décomposés en morceaux connus.

Le tokenizer est entraîné une fois, sur un large corpus, avant le modèle lui-même. Son vocabulaire est ensuite figé : chaque identifiant correspond à une ligne de la matrice d'embeddings du modèle. C'est pourquoi tokenizer et poids sont indissociables, et pourquoi deux LLM différents découpent rarement un même texte de la même façon.

À retenir : la tokenisation est un dictionnaire appris qui détermine comment le modèle « voit » le texte. Elle influence la longueur des séquences, le coût des requêtes et certaines capacités du modèle.

Comment fonctionne la tokenisation d'un texte ?

Un tokenizer moderne enchaîne cinq opérations, de la chaîne de caractères brute à la liste d'identifiants transmise au modèle.

  1. Normaliser

    Le texte est éventuellement uniformisé : normalisation Unicode, gestion des accents, parfois passage en minuscules. Les tokenizers des LLM récents modifient très peu le texte pour pouvoir le restituer à l'identique.

  2. Pré-découper

    Une première segmentation, souvent par expression régulière, isole les mots, la ponctuation, les espaces et les nombres. Elle empêche par exemple de fusionner un mot avec la ponctuation qui le suit.

  3. Appliquer le modèle de sous-mots

    Chaque segment est découpé en tokens du vocabulaire selon l'algorithme du tokenizer : fusions successives pour BPE, plus long préfixe connu pour WordPiece, découpage le plus probable pour Unigram.

  4. Ajouter les tokens spéciaux

    Le tokenizer insère les marqueurs attendus par le modèle : début et fin de séquence, séparateurs, balises de rôle d'une conversation.

  5. Convertir en identifiants

    Chaque token est remplacé par son numéro dans le vocabulaire. Le modèle reçoit cette liste d'entiers, accompagnée si besoin d'un masque d'attention.

Les principaux algorithmes de tokenisation

Trois familles d'algorithmes se partagent les LLM actuels. Elles diffèrent surtout par la manière de construire le vocabulaire.

BPE (Byte Pair Encoding)

Le BPE vient de la compression de données, où il a été décrit par Philip Gage en 1994. Sennrich et ses coauteurs l'ont adapté à la traduction automatique en 2016. L'algorithme part d'un vocabulaire réduit aux caractères, compte les paires de symboles adjacents dans le corpus, fusionne la plus fréquente en un nouveau symbole, puis recommence jusqu'à atteindre la taille de vocabulaire visée. Pour tokeniser un nouveau texte, il rejoue les fusions apprises dans le même ordre.

GPT-2 a introduit une variante byte-level : le vocabulaire de départ n'est plus l'ensemble des caractères mais les 256 octets possibles. N'importe quelle chaîne UTF-8, emoji ou idéogramme compris, peut donc être encodée sans token inconnu. C'est l'approche de la plupart des LLM génératifs actuels, dont ceux d'OpenAI via la bibliothèque tiktoken.

WordPiece

Conçu chez Google au début des années 2010 et rendu célèbre par BERT, WordPiece procède aussi par fusions successives. Mais au lieu de retenir la paire la plus fréquente, il choisit celle qui augmente le plus la vraisemblance du corpus, ce qui favorise les paires dont les éléments apparaissent rarement séparément. À l'usage, il découpe chaque mot en cherchant le plus long préfixe présent dans le vocabulaire. Les fragments de continuation sont marqués par le préfixe ## : « tokenisation » peut ainsi devenir token, ##isation.

Unigram et SentencePiece

L'algorithme Unigram, proposé par Taku Kudo en 2018, suit le chemin inverse. Il part d'un très grand vocabulaire candidat et retire progressivement les tokens dont la suppression dégrade le moins la vraisemblance du corpus. Il peut proposer plusieurs découpages possibles d'un même mot, une propriété exploitée pour rendre les modèles plus robustes.

SentencePiece n'est pas un algorithme mais une bibliothèque de Google, publiée la même année, qui implémente BPE et Unigram. Sa particularité : elle traite le texte brut comme un flux, espaces compris (représentés par le symbole ▁), sans pré-découpage dépendant de la langue. Elle convient donc aussi aux langues qui ne séparent pas les mots par des espaces, comme le japonais ou le chinois. Des modèles comme T5 ou les premières générations de Llama l'ont utilisée.

BPE, WordPiece, Unigram : quelles différences ?

CritèreBPEWordPieceUnigram
ConstructionFusionne la paire la plus fréquenteFusionne la paire qui maximise la vraisemblanceÉlague un grand vocabulaire initial
Sens de constructionDu petit vers le grandDu petit vers le grandDu grand vers le petit
Découpage d'un motRejoue les fusions apprisesPlus long préfixe connuDécoupage le plus probable
Implémentationstiktoken, Tokenizers, SentencePieceTokenizersSentencePiece, Tokenizers
Modèles représentatifsGPT, Llama 3, Mistral, QwenBERT, DistilBERTT5, ALBERT, XLNet

Exemple : tokeniser un texte en Python

La bibliothèque tiktoken donne accès aux encodages des modèles d'OpenAI. L'encodage o200k_base est celui des modèles de la génération GPT-4o.

python
import tiktoken

enc = tiktoken.get_encoding("o200k_base")

texte = "La tokenisation découpe le texte en sous-mots."
ids = enc.encode(texte)

print(len(ids), "tokens :", ids)
# Chaque token est une suite d'octets : un caractère accentué peut être réparti sur deux tokens
print([enc.decode_single_token_bytes(i) for i in ids])
print(enc.decode(ids) == texte)  # True : le décodage est exact

Pour un modèle ouvert, on charge son tokenizer depuis le Hub de Hugging Face avec AutoTokenizer. Comparer deux familles de tokenizers sur la même phrase est très parlant :

python
from transformers import AutoTokenizer

texte = "La tokenisation découpe le texte en sous-mots."

for nom in ["google-bert/bert-base-multilingual-cased", "Qwen/Qwen2.5-0.5B-Instruct"]:
    tok = AutoTokenizer.from_pretrained(nom)
    encoded = tok(texte)
    print(nom)
    print("  tokens :", tok.convert_ids_to_tokens(encoded["input_ids"]))
    print("  nombre :", len(encoded["input_ids"]))

Le tokenizer WordPiece de BERT affiche des fragments préfixés par ## et encadre la phrase des tokens spéciaux [CLS] et [SEP]. Le tokenizer BPE byte-level de Qwen représente l'espace qui précède un mot par le caractère Ġ, une convention héritée de GPT-2. Les deux reconstituent pourtant exactement le texte au décodage.

À quoi sert la maîtrise de la tokenisation ?

La tokenisation est invisible tant que tout va bien. La comprendre devient utile dès qu'un comportement du modèle surprend ou qu'un projet sort de l'ordinaire.

  • Compter avec précision

    Utiliser le tokenizer exact d'un modèle pour estimer la taille d'un prompt ou d'un corpus.

  • Découper un corpus pour un RAG

    Fixer la taille des fragments en tokens plutôt qu'en caractères, pour respecter les limites du modèle d'embedding.

  • Préparer un fine-tuning

    Appliquer le bon modèle de chat et les bons tokens spéciaux aux exemples d'entraînement.

  • Évaluer un modèle multilingue

    Mesurer combien de tokens chaque langue consomme pour anticiper coûts et performances.

  • Diagnostiquer des erreurs

    Expliquer des difficultés sur l'orthographe, le comptage de lettres ou l'arithmétique.

  • Entraîner un tokenizer

    Construire un vocabulaire adapté à un domaine (chimie, code, langue rare) pour un modèle entraîné de zéro.

Pourquoi les LLM utilisent-ils des sous-mots ?

La tokenisation en sous-mots est un compromis entre le découpage en caractères, trop fin, et le découpage en mots, trop rigide.

  • Un vocabulaire de taille maîtrisée suffit à représenter n'importe quel texte, y compris des mots jamais vus.
  • Les mots fréquents tiennent en un seul token, ce qui raccourcit les séquences.
  • Les mots rares se décomposent en fragments porteurs de sens (préfixes, racines, suffixes).
  • Les variantes byte-level ne rencontrent jamais de caractère inconnu, même pour les emojis ou les langues rares.
  • Le découpage est déterministe et réversible : le décodage restitue exactement le texte d'origine.

Quelles sont les limites de la tokenisation ?

Beaucoup de faiblesses attribuées aux LLM viennent en réalité de leur tokenizer.

  • Les langues peu présentes dans le corpus du tokenizer consomment plus de tokens, donc coûtent plus cher.
  • Le modèle ne voit pas les lettres d'un mot, ce qui complique l'orthographe et le comptage de caractères.
  • Le découpage irrégulier des nombres gêne l'arithmétique.
  • Un même mot peut être tokenisé différemment selon l'espace qui le précède ou sa casse.
  • Le tokenizer est figé avec le modèle : le modifier impose de réentraîner au moins une partie des embeddings.
  • Certains tokens rares, mal appris pendant l'entraînement, peuvent provoquer des comportements anormaux.

Langues, nombres et code : les effets de la tokenisation

Le vocabulaire d'un tokenizer reflète son corpus d'entraînement. Tout ce qui y est rare est découpé plus finement, avec des conséquences concrètes.

  • Les langues : l'anglais, majoritaire dans les corpus, est le mieux compressé. Le français demande en général un peu plus de tokens pour un même contenu, et les langues à alphabet non latin peu représentées peuvent en demander plusieurs fois plus. Des travaux de recherche ont montré que cet écart se traduit par des coûts et des latences inégaux selon la langue de l'utilisateur. Les vocabulaires plus vastes et plus multilingues des modèles récents atténuent le phénomène.
  • Les nombres : selon le tokenizer, un nombre est découpé chiffre par chiffre ou par groupes de plusieurs chiffres, parfois de façon irrégulière. « 1234 » et « 12345 » ne sont alors pas alignés de la même manière, ce qui complique l'apprentissage de l'arithmétique. Certains tokenizers imposent un découpage régulier des chiffres précisément pour cette raison.
  • Le code : indentation, accolades et noms de variables pèsent lourd. Les premiers tokenizers gaspillaient un token par espace d'indentation ; les tokenizers récents disposent de tokens pour les suites d'espaces et pour les mots-clés courants des langages de programmation.
  • La casse et les espaces : « Paris », « paris » et « Paris » précédé d'une espace correspondent souvent à des tokens différents. Une variation de mise en forme peut ainsi modifier le nombre de tokens, et parfois la réponse du modèle.

Ces effets expliquent des faiblesses connues des LLM, comme la difficulté à épeler un mot, à inverser une chaîne de caractères ou à compter des lettres. Notre article Tokenization : comment les LLM découpent le texte en donne de nombreux exemples. Pour le volet économique (fenêtre de contexte, facturation au token), voir la fiche Token.

Quand faut-il se préoccuper du tokenizer ?

La plupart des projets utilisent le tokenizer fourni avec le modèle sans y toucher. Certaines situations exigent toutefois de s'y intéresser de près.

Pertinent si

Le tokenizer devient un sujet

  • Vous fine-tunez un modèle ou préparez des données d'entraînement.
  • Votre application traite plusieurs langues ou un jargon très spécifique.
  • Vous devez découper un corpus au token près.
  • Le modèle échoue de façon récurrente sur des nombres, du code ou des noms propres.
Moins adapté si

Le tokenizer par défaut suffit

  • Vous consommez un modèle par API pour des tâches courantes.
  • Un ordre de grandeur suffit pour estimer les coûts.
  • Vos textes sont en anglais ou en français standard.
  • Vous n'entraînez ni n'adaptez aucun modèle.

Bibliothèques et outils de tokenisation

Chaque famille de modèles s'accompagne de son tokenizer ; ces bibliothèques permettent de l'utiliser, de l'inspecter ou d'en entraîner un nouveau.

Les concepts à connaître autour de la tokenisation

La tokenisation fait le lien entre le texte et les représentations numériques des modèles.

Ressources pour approfondir la tokenisation

Trois articles pour relier la tokenisation au fonctionnement global des modèles de langage.

Questions fréquentes

Questions fréquentes

Le token est l'unité de texte manipulée par le modèle, celle que l'on compte pour mesurer le contexte et le coût. La tokenisation est le processus qui produit ces tokens à partir du texte brut. L'un est le résultat, l'autre la méthode.

Expertise

À propos de l'auteur

Équipe Blent

Les ingénieurs et mentors Blent conçoivent, évaluent et mettent en production des applications LLM, et forment chaque année des centaines de professionnels à l'IA générative.

Sources et méthodologie

  • Sennrich, Haddow et Birch, Neural Machine Translation of Rare Words with Subword Units, ACL 2016
  • Kudo et Richardson, SentencePiece: A simple and language independent subword tokenizer, EMNLP 2018
  • Documentation Hugging Face Tokenizers et OpenAI tiktoken