BLEU Score
Le BLEU (Bilingual Evaluation Understudy) est une métrique d’évaluation automatique qui mesure la qualité d’un texte généré par une machine en comparant le chevauchement de n-grammes entre la traduction candidate et une ou plusieurs traductions de référence humaines.
Introduit en 2002 par Kishore Papineni et son équipe chez IBM, le BLEU score a révolutionné la recherche en traduction automatique en offrant une alternative rapide et reproductible à l’évaluation humaine. Avant BLEU, comparer deux systèmes de traduction nécessitait des semaines de travail humain. Avec BLEU, la même comparaison prend quelques secondes. Bien que ses limites soient bien connues (il ne comprend pas le sens, ignore les synonymes, et ne capture pas la fluidité), il reste la métrique de référence la plus citée en NLP pour la traduction et la génération de texte.
- Nom complet
- Bilingual Evaluation Understudy
- Type
- Métrique d’évaluation automatique basée sur les n-grammes
- Auteurs
- Kishore Papineni, Salim Roukos, Todd Ward, Wei-Jing Zhu (IBM, 2002)
- Papier
- « BLEU: a Method for Automatic Evaluation of Machine Translation » (ACL 2002)
- Plage
- 0 à 1 (souvent exprimé en 0 à 100). Plus haut = meilleur.
- Usage principal
- Traduction automatique, génération de texte, résumé, image captioning
- Limites
- Pas de compréhension sémantique, pénalise les synonymes, ignore la fluidité
- Verdict
- Métrique historique incontournable, mais à compléter avec COMET, chrF ou BERTScore pour une évaluation fiable.
L’intuition : compter les mots en commun
L’idée centrale de BLEU est simple : une bonne traduction partage beaucoup de mots et de groupes de mots avec une traduction humaine de référence. Plus il y a de n-grammes en commun, meilleure est la traduction.
Prenons un exemple concret :
Référence : "Le chat noir dort sur le canapé"
Candidat A : "Le chat noir dort sur le canapé" → BLEU parfait
Candidat B : "Le chat dort sur le sofa" → BLEU élevé (beaucoup de chevauchement)
Candidat C : "Un félin sombre sommeille sur le divan" → BLEU faible (peu de mots communs)
Candidat D : "Chat le sur canapé dort noir le" → BLEU modéré (mêmes mots, mauvais ordre)
Le candidat C est une excellente traduction (peut-être même plus élégante que la référence), mais BLEU le pénalise car il utilise des synonymes (« félin » au lieu de « chat », « divan » au lieu de « canapé »). C’est la limite fondamentale de BLEU : il compare des chaînes de caractères, pas des significations.
Comment BLEU est calculé
Étape 1 : Précision des n-grammes
Un n-gramme est une séquence de n mots consécutifs. Pour la phrase « le chat dort » :
Unigrammes (1-gram) : "le", "chat", "dort"
Bigrammes (2-gram) : "le chat", "chat dort"
Trigrammes (3-gram) : "le chat dort"
BLEU calcule la précision de chaque ordre de n-gramme : quelle proportion des n-grammes du candidat apparaît dans la référence ?
Précision n-gram = (n-grammes du candidat présents dans la référence) / (total des n-grammes du candidat)
Étape 2 : Précision modifiée (clipped precision)
La précision brute a un défaut : un candidat qui répète un seul mot (« le le le le le le le ») obtiendrait une précision de 100 % si « le » apparaît dans la référence. Pour éviter cela, BLEU utilise une précision « clippée » : chaque n-gramme du candidat ne peut être compté qu’autant de fois qu’il apparaît dans la référence.
Référence : "Le chat est sur le tapis"
Candidat : "le le le le le le le"
Précision brute des unigrammes : 7/7 = 100 % (faux positif !)
Précision clippée : "le" apparaît 2 fois dans la référence → 2/7 = 28.6 %
Cette modification est essentielle pour empêcher les traductions dégénérées d’obtenir des scores artificiellement élevés.
Étape 3 : Brevity Penalty (pénalité de brièveté)
La précision favorise naturellement les traductions courtes : un candidat d’un seul mot bien choisi aura une précision parfaite. Pour contrebalancer, BLEU applique une pénalité de brièveté qui pénalise les traductions plus courtes que la référence :
BP = {
1 si c > r (candidat plus long que la référence)
exp(1 - r/c) si c ≤ r (candidat plus court)
}
# c = longueur du candidat, r = longueur de la référence
Si le candidat fait la moitié de la longueur de la référence, BP = exp(1 – 2) = exp(-1) ≈ 0.37, ce qui réduit le score de 63 %. Si le candidat est aussi long ou plus long que la référence, il n’y a pas de pénalité (BP = 1).
Étape 4 : Score final
Le BLEU score combine les précisions des n-grammes de 1 à N (typiquement N = 4) avec la brevity penalty :
BLEU = BP · exp( Σₙ₌₁ᴺ wₙ · log(pₙ) )
Où pₙ est la précision modifiée pour les n-grammes d’ordre n, et wₙ est le poids (par défaut, wₙ = 1/N, soit des poids uniformes). Pour BLEU-4 (le standard), c’est la moyenne géométrique des précisions unigramme, bigramme, trigramme et 4-gramme, multipliée par la brevity penalty.
Exemple de calcul complet
Référence : "The cat sat on the mat"
Candidat : "The cat on the mat"
# Précisions clippées :
p₁ (unigrammes) : 5 matchs sur 5 mots = 5/5 = 1.00
("The", "cat", "on", "the", "mat" → tous présents)
p₂ (bigrammes) : "The cat", "cat on", "on the", "the mat"
"The cat" ✓, "cat on" ✗, "on the" ✓, "the mat" ✓ → 3/4 = 0.75
p₃ (trigrammes) : "The cat on", "cat on the", "on the mat"
"The cat on" ✗, "cat on the" ✗, "on the mat" ✓ → 1/3 = 0.33
p₄ (4-grammes) : "The cat on the", "cat on the mat"
"The cat on the" ✗, "cat on the mat" ✗ → 0/2 = 0.00
# Brevity Penalty :
c = 5 (longueur candidat), r = 6 (longueur référence)
BP = exp(1 - 6/5) = exp(-0.2) ≈ 0.819
# BLEU-4 (avec p₄ = 0, le BLEU-4 est 0 car log(0) = -∞)
# En pratique, on utilise un lissage (smoothing) pour éviter ce cas
nltk), qui ajoute un petit epsilon aux précisions nulles.
Interpréter un score BLEU
| BLEU Score | Interprétation |
|---|---|
| < 10 | Traduction quasiment inutilisable |
| 10 – 20 | L’idée générale est perceptible, mais la traduction est difficile à comprendre |
| 20 – 30 | Traduction compréhensible mais contenant des erreurs significatives |
| 30 – 40 | Bonne traduction, quelques erreurs mineures |
| 40 – 50 | Traduction de haute qualité |
| 50 – 60 | Excellente traduction, proche du niveau humain |
| > 60 | Rare : souvent supérieur à ce qu’un humain produirait par rapport à la référence |
Ces seuils sont indicatifs et varient selon la paire de langues, le domaine (technique, littéraire, médical) et le nombre de références disponibles. Un BLEU de 40 en traduction anglais-allemand n’est pas comparable à un BLEU de 40 en anglais-japonais.
Implémentation en Python
Avec NLTK
from nltk.translate.bleu_score import sentence_bleu, corpus_bleu
from nltk.translate.bleu_score import SmoothingFunction
# BLEU pour une seule phrase
reference = [["le", "chat", "noir", "dort", "sur", "le", "canapé"]]
candidate = ["le", "chat", "dort", "sur", "le", "sofa"]
# BLEU-4 avec lissage (recommandé pour les phrases courtes)
smoother = SmoothingFunction().method1
score = sentence_bleu(reference, candidate, smoothing_function=smoother)
print(f"BLEU-4 : {score:.4f}")
# BLEU sur un corpus entier
references_corpus = [
[["le", "chat", "dort"]],
[["il", "fait", "beau", "aujourd'hui"]]
]
candidates_corpus = [
["le", "chat", "dort"],
["il", "fait", "beau"]
]
corpus_score = corpus_bleu(references_corpus, candidates_corpus)
print(f"BLEU corpus : {corpus_score:.4f}")
Avec SacreBLEU (recommandé)
SacreBLEU standardise le calcul du BLEU en fixant la tokenisation, ce qui garantit des scores reproductibles entre les études :
import sacrebleu
refs = ["Le chat noir dort sur le canapé."]
hyps = ["Le chat dort sur le sofa."]
bleu = sacrebleu.corpus_bleu(hyps, [refs])
print(f"BLEU : {bleu.score:.1f}")
print(f"Détail : {bleu}") # affiche les précisions par n-gramme + BP
Avec Hugging Face Evaluate
import evaluate
bleu_metric = evaluate.load("bleu")
results = bleu_metric.compute(
predictions=["Le chat dort sur le sofa."],
references=[["Le chat noir dort sur le canapé."]]
)
print(f"BLEU : {results['bleu']:.4f}")
Forces et limites du BLEU
Ce qui fait la valeur de BLEU
Rapidité. Calculable en millisecondes, même sur de grands corpus. C’est ce qui a permis aux chercheurs de comparer des centaines de configurations de systèmes de traduction en quelques heures.
Reproductibilité. Avec SacreBLEU et une tokenisation standardisée, les scores sont exactement reproductibles entre les études. C’est essentiel pour le benchmarking.
Corrélation avec le jugement humain au niveau corpus. Sur des corpus suffisamment grands, BLEU corrèle bien avec les évaluations humaines de la qualité de traduction. C’est moins vrai au niveau de la phrase individuelle.
Indépendance linguistique. BLEU fonctionne pour toute paire de langues sans modification. Pas besoin de ressources linguistiques spécifiques.
Largement adopté. C’est la métrique que tout le monde comprend et rapporte. Cela facilite les comparaisons entre papiers et entre systèmes.
Les limites bien connues
Aucune compréhension sémantique. BLEU traite les mots comme des chaînes de caractères. « Chat » et « félin » sont aussi différents que « chat » et « voiture ». Une paraphrase parfaite qui n’utilise aucun mot de la référence obtient un BLEU de 0.
Insensibilité à l’ordre des mots (au niveau unigramme). Les unigrammes ne capturent pas l’ordre. « Le chat mange la souris » et « La souris mange le chat » ont le même score unigramme. Les n-grammes d’ordre supérieur atténuent ce problème, mais ne l’éliminent pas.
Pénalise les traductions valides mais différentes. Plus la traduction s’éloigne de la référence (même si elle est correcte), plus le BLEU baisse. C’est particulièrement problématique avec les systèmes NMT modernes qui produisent des traductions fluides mais non littérales.
Faible fiabilité au niveau de la phrase. BLEU est conçu pour évaluer un corpus, pas une phrase isolée. Le score d’une seule phrase est très bruité et peu fiable.
Dépendance au nombre de références. Plus il y a de traductions de référence, plus le BLEU est élevé (car le candidat a plus de chances de matcher). Les scores ne sont comparables que si le nombre de références est le même.
BLEU et ses alternatives modernes
| Métrique | Principe | Avantage sur BLEU | Usage |
|---|---|---|---|
| ROUGE | Rappel n-gramme (plutôt que précision) | Mieux adapté au résumé | Résumé automatique |
| METEOR | Alignement mot à mot avec synonymes et stemming | Gère les synonymes et la morphologie | Traduction, génération |
| chrF | F-score sur les n-grammes de caractères | Plus robuste aux variations morphologiques | Traduction (langues morphologiquement riches) |
| BERTScore | Similarité cosinus d’embeddings contextuels | Capture la sémantique | Toute génération de texte |
| COMET | Modèle entraîné sur des évaluations humaines | Meilleure corrélation avec le jugement humain | Traduction (état de l’art) |
| MetricX | Modèle d’erreur appris (Google) | Très haute corrélation humaine, reference-free possible | Traduction (production chez Google) |
Recommandation pratique : rapportez toujours le BLEU (pour la comparabilité historique), mais complétez-le avec COMET ou BERTScore pour une évaluation plus fiable de la qualité réelle. Pour les systèmes en production, les métriques apprises (COMET, MetricX) corrèlent nettement mieux avec les évaluations humaines que BLEU.
BLEU au-delà de la traduction
Bien que conçu pour la traduction, BLEU est utilisé (parfois abusivement) pour d’autres tâches de génération :
Image captioning : comparer les légendes générées aux légendes de référence. BLEU est l’une des métriques standards sur les benchmarks COCO et Flickr30k.
Résumé automatique : utilisé occasionnellement, mais ROUGE est préféré car il mesure le rappel (les informations clés sont-elles couvertes ?) plutôt que la précision.
Dialogue et chatbots : utilisé pour évaluer la similarité des réponses avec des réponses de référence, mais très limité car les dialogues ont une grande variabilité (beaucoup de réponses valides très différentes).
Évaluation de code : le CodeBLEU adapte BLEU à l’évaluation de la génération de code en ajoutant des critères syntaxiques (AST) et de flux de données.
Bonnes pratiques
1. Utilisez SacreBLEU. La tokenisation affecte significativement le score. SacreBLEU standardise le processus et garantit la reproductibilité. C’est le standard de fait dans les publications récentes.
2. Rapportez le score au niveau corpus, pas phrase. Le BLEU d’une phrase individuelle est trop bruité pour être significatif. Évaluez toujours sur un corpus de test de taille raisonnable (au moins quelques centaines de phrases).
3. Ne comparez que dans des conditions identiques. Même paire de langues, même jeu de test, même nombre de références, même tokenisation. Un BLEU anglais-français n’est pas comparable à un BLEU anglais-chinois.
4. Complétez avec une métrique sémantique. BLEU + COMET (ou BERTScore) donne une image beaucoup plus complète de la qualité qu’une seule métrique.
5. Ne sur-interprétez pas les petites différences. Un écart de 0.5 point BLEU n’est généralement pas significatif. Les papiers sérieux rapportent des intervalles de confiance ou utilisent des tests de significativité statistique (bootstrap resampling).
Questions fréquentes sur le BLEU score
Qu’est-ce qu’un « bon » BLEU score ?
Il n’y a pas de seuil universel. En traduction automatique, un BLEU supérieur à 30 est généralement considéré comme une traduction compréhensible, et au-dessus de 40, la qualité est bonne. Mais ces seuils varient fortement selon la paire de langues (l’anglais-français est « plus facile » que l’anglais-japonais), le domaine (technique vs littéraire), et le nombre de traductions de référence. Ne comparez les scores BLEU que dans des conditions strictement identiques.
Quelle est la différence entre BLEU et ROUGE ?
BLEU mesure la précision (quelle proportion des n-grammes du candidat apparaît dans la référence ?), tandis que ROUGE mesure le rappel (quelle proportion des n-grammes de la référence apparaît dans le candidat ?). BLEU pénalise les traductions qui ajoutent du contenu inexistant. ROUGE pénalise les résumés qui omettent des informations clés. C’est pourquoi BLEU est standard en traduction et ROUGE en résumé automatique.
Pourquoi BLEU pénalise-t-il les synonymes ?
BLEU compare les mots comme des chaînes de caractères exactes. « Chat » et « félin » sont traités comme deux mots complètement différents, sans aucune correspondance. C’est la limite fondamentale des métriques basées sur les n-grammes. Des métriques comme METEOR (qui utilise des dictionnaires de synonymes et le stemming) ou BERTScore (qui compare des embeddings sémantiques) adressent directement ce problème.
Peut-on utiliser BLEU pour évaluer les LLMs ?
BLEU est peu adapté à l’évaluation des LLMs conversationnels (ChatGPT, Claude, Gemini) car les réponses valides sont extrêmement variées. Il n’y a pas de « référence » unique pour une réponse conversationnelle. Pour les LLMs, on préfère la perplexité (pour la modélisation du langage), les benchmarks de tâches (MMLU, HumanEval), et les évaluations humaines ou LLM-as-Judge (Chatbot Arena). BLEU reste pertinent pour les tâches de traduction spécifiques où une référence existe.
Que signifie « BLEU-4 » ?
BLEU-4 est le score BLEU standard qui combine les précisions des n-grammes de 1 à 4 (unigrammes, bigrammes, trigrammes et 4-grammes) avec des poids égaux. C’est le défaut dans la plupart des implémentations. BLEU-1 n’utilise que les unigrammes (capture le vocabulaire mais pas l’ordre), BLEU-2 ajoute les bigrammes (capture partiellement l’ordre), etc. BLEU-4 est le compromis standard entre granularité et fiabilité.