Accueil / Factory / Algos ML / Tokenisation (BPE) — factory / algos ML / préparation du texte

TOKENISATION BPE.

Avant de lire un texte, un LLM le découpe en tokens : des mots entiers pour les plus fréquents, des morceaux de mots pour les autres. Le BPE (Byte Pair Encoding) construit ce vocabulaire en fusionnant pas à pas les paires de symboles les plus fréquentes. Ce découpage explique la facturation au token et la longueur maximale des documents.

TexteLLMPrétraitementCoût des APINiveau : intermédiaire

FICHE D'IDENTITÉ

notes sur 5 · usage entreprise
PerformanceVocabulaire compact, et les mots rares restent découpables
InterprétabilitéChaque fusion et chaque token se lisent directement
VitesseDécoupage quasi instantané, même sur des millions de textes
Facilité de réglageUn seul vrai choix : la taille du vocabulaire
Tolérance aux données brutesFautes et mots inventés passent, au prix de plus de tokens
EN 30 SECONDES

Un sténographe qui invente une abréviation pour chaque groupe de lettres qu'il écrit souvent. Après quelques centaines d'abréviations, les mots courants s'écrivent en un ou deux signes.

1. On part des caractères

Chaque mot du corpus est découpé en caractères, avec un marqueur de fin de mot. Le vocabulaire de départ ne contient que ces caractères.

2. On fusionne la paire la plus fréquente

On compte toutes les paires de symboles voisins et on fusionne la plus fréquente en un nouveau token. Sur les avis, les premières fusions sont le point en fin de mot, puis « e » et « t » en fin de mot, puis « on ».

3. On répète jusqu'à la taille voulue

Chaque fusion ajoute un token au vocabulaire. Les LLM actuels en comptent de quelques dizaines de milliers à plus de 200 000. Un nouveau texte est découpé en rejouant les fusions dans le même ordre.

LE CAS MÉTIER

coût des LLM · service client / études
EN ENTRÉE

1 500 avis clients en français

Le corpus qu'on veut faire analyser par un LLM. Chaque avis sera envoyé au modèle, et l'API facture chaque token lu et produit.

EN SORTIE

Un vocabulaire et un nombre de tokens

Le code Python apprend 200 fusions sur les avis et compte les symboles avant et après : leur nombre est divisé par plus de trois. Un mot fréquent du corpus tient en quelques tokens, un mot jamais vu en beaucoup plus.

CE QU'ON MESURE

Le nombre de tokens, pas de mots

Le budget d'un traitement LLM se calcule en tokens : consigne, texte et réponse, multipliés par le nombre de documents. On mesure sur un échantillon avec le tokeniseur du modèle retenu, car chaque modèle a le sien.

QUAND LE SORTIR, QUAND L'ÉVITER

OUI

  • Estimer le coût d'un traitement LLM avant de le lancer
  • Vérifier qu'un document tient dans la fenêtre de contexte du modèle
  • Entraîner un modèle de langue sur un vocabulaire métier (juridique, industriel, médical)
  • Comprendre pourquoi un LLM peine à compter les lettres d'un mot ou à l'épeler

NON

  • Compter les tokens d'un LLM du marché : utiliser son propre tokeniseur (tiktoken pour OpenAI), pas un BPE maison
  • Analyse de texte classique (TF-IDF, thèmes) : un découpage en mots suffit
  • Petit corpus répétitif : les fusions apprises reflètent ses tournures plus que la langue
  • Changer le tokeniseur d'un modèle déjà entraîné : le modèle ne reconnaîtrait plus ses tokens
LES 3 CHOIX QUI COMPTENT

Le BPE n'a presque pas d'hyperparamètres. Noms donnés pour R (tokenizers.bpe) et pour le code Python de la fiche.

vocab_size / nombre de fusions

Plus le vocabulaire est grand, moins il faut de tokens par texte, mais plus le modèle a de vecteurs à apprendre. C'est le compromis central.

Pré-découpage

On découpe d'abord en mots, sur les espaces et la ponctuation, et les fusions ne franchissent jamais cette frontière. Le code Python marque la fin de mot par « _ ».

Caractères ou octets

Le BPE sur octets, utilisé depuis GPT-2, part des 256 valeurs d'octet : aucun caractère n'est jamais inconnu, emojis compris. Un BPE sur caractères, comme celui du code, bute sur un caractère absent du corpus.

LE CODE MINIMAL

jeu d'exemple : avis_clients.csv ↓
# Coût des requêtes LLM : tokenisation BPE en R
library(tokenizers.bpe)

avis <- read.csv("avis_clients.csv")
textes <- tolower(avis$texte)

# Apprentissage d'un vocabulaire de 300 tokens sur les avis
set.seed(42)
modele <- bpe(textes, vocab_size = 300,
              model_path = file.path(tempdir(), "bpe_avis.model"))

# Découpage de deux avis en tokens
print(bpe_encode(modele, x = textes[1:2], type = "subwords"))

# Nombre de tokens pour tout le corpus
ids <- bpe_encode(modele, x = textes, type = "ids")
nb_tokens <- sum(lengths(ids))
cat("Caractères :", sum(nchar(textes)), "| tokens :", nb_tokens, "\n")
cat("Caractères par token :", round(sum(nchar(textes)) / nb_tokens, 2), "\n")

# Un mot absent du corpus se découpe en plus petits morceaux
print(bpe_encode(modele, x = "réclamation", type = "subwords"))

QUESTIONS FRÉQUENTES

Combien de mots dans un token ?

Un token est souvent un mot court ou un morceau de mot. Pour l'anglais, OpenAI indique environ 4 caractères par token, soit à peu près trois quarts de mot. Le français demande en général un peu plus de tokens pour le même contenu, car les tokeniseurs sont construits sur des corpus majoritairement anglais.

Pourquoi les LLM ont-ils du mal à compter les lettres d'un mot ?

Parce qu'ils ne voient pas les lettres. Un mot arrive au modèle sous forme d'un ou deux tokens, sans accès direct aux caractères qui les composent. Compter les lettres oblige le modèle à reconstituer une information que le découpage a masquée.

BPE, WordPiece, SentencePiece : quelle différence ?

Trois façons voisines de construire un vocabulaire de sous-mots. BPE fusionne la paire la plus fréquente ; WordPiece, utilisé par BERT, retient la fusion qui augmente le plus la vraisemblance du corpus ; SentencePiece est une bibliothèque qui applique BPE ou un modèle unigramme directement au texte brut, espaces compris.

LES ALGOS VOISINS

à comparer avant de choisir
ce qui lit les tokens

GPT et LLM

Le modèle de langage reçoit une suite de tokens et prédit le suivant. Son tokeniseur fait partie du modèle.

Voir la fiche →
l'étape d'après

Embeddings

Chaque token, puis chaque texte, devient un vecteur de nombres qui porte le sens.

Voir la fiche →
le découpage classique

TF-IDF

Compte des mots entiers, sans sous-mots. Suffit pour la recherche et la classification simples.

Voir la fiche →
— formation

Passer de la fiche à la pratique

Dataistudio forme les équipes au machine learning et à l'IA, sur des cas concrets.

Voir les formations →