Qu'est-ce que la métrique BLEU ? Pour de nombreuses tâches de NLP, nous pouvons utiliser des métriques courantes telles que la précision ou le score F1,
mais que faites-vous lorsque vous souhaitez mesurer la qualité du texte généré à partir d'un
modèle ? Dans cette vidéo, nous allons examiner une métrique largement utilisée pour la traduction automatique
appelée BLEU. L'idée de base de
BLEU est d'attribuer un score numérique unique à une traduction qui nous indique à quel point elle est bonne
par rapport à une ou plusieurs traductions de référence. Dans cet exemple, nous avons une phrase en espagnol qui
a été traduite en anglais par un modèle. Si nous comparons la traduction générée à certaines
traductions humaines de référence, nous pouvons voir que le modèle est plutôt bon, mais a fait une erreur courante :
le mot espagnol « tengo » signifie « avoir » en anglais et cette traduction un à un n'est pas tout à fait naturel.
Alors, comment mesurer automatiquement la qualité d'une traduction générée ?
L'approche adoptée par BLEU consiste à comparer les n-grammes de la traduction générée aux
n-grammes des références. Un n-gramme n'est qu'une façon élégante de dire « un morceau de n mots ».
Donc commençons par les unigrammes, qui correspondent aux mots individuels d'une phrase.
Dans cet exemple, vous pouvez voir que quatre des mots de la traduction générée
sont également trouvés dans l'une des traductions de référence. Maintenant que nous avons trouvé nos correspondances,
une façon d'attribuer un score à la traduction consiste à calculer la précision des unigrammes.
Cela signifie que nous comptons simplement le nombre de mots correspondants dans les traductions générées et de référence
et que nous normalisons le nombre en divisant par le nombre de mots dans la génération.
Dans cet exemple, nous avons trouvé 4 mots correspondants et notre génération a 5 mots,
donc notre précision unigramme est de 4/5 ou 0,8. En général, la précision est comprise entre 0 et 1, et des
scores de précision plus élevés signifient une meilleure traduction. L'un des problèmes de la précision des unigrammes est que les modèles de traduction restent
parfois bloqués dans des schémas répétitifs et répètent plusieurs fois le même mot.
Si nous comptons simplement le nombre de correspondances de mots, nous pouvons obtenir des scores de très haute précision
même si la traduction est terrible d'un point de vue humain !
Par exemple, si notre modèle génère simplement le mot « six », nous obtenons un score de précision unigramme parfait.
Pour gérer cela, BLEU utilise une précision modifiée qui limite le nombre de fois pour compter un mot, en
fonction du nombre maximal de fois qu'il apparaît dans la traduction de référence.
Dans cet exemple, le mot « six » n'apparaît qu'une seule fois dans la référence.
Nous coupons donc le numérateur à un et la précision de l'unigramme modifié donne désormais un score beaucoup plus faible.
Un autre problème avec la précision unigramme est qu'elle ne tient pas compte de l'ordre des
mots dans les traductions. Par exemple, supposons que nous ayons demandé à Yoda de traduire notre phrase en espagnol,
nous pourrions alors obtenir quelque chose à l'envers comme « années trente six j'ai ». Dans ce cas,
la précision unigramme modifiée donne une haute précision qui n'est pas ce que nous voulons.
Ainsi, pour traiter les problèmes d'ordre des mots, BLEU calcule en fait la précision pour plusieurs
n-grammes différents, puis calcule la moyenne du résultat. Par exemple, si nous comparons 4-grammes, nous pouvons
voir qu'il n'y a pas de blocs correspondants de 4 mots dans les traductions et donc la précision de 4-grammes est de 0.
Pour calculer les scores BLEU dans la bibliothèque Datasets, c'est très simple : il suffit d'utiliser la fonction `load_metric(),
fournir les prédictions de votre modèle avec les références et vous êtes prêt !
Le résultat contient plusieurs champs d'intérêt. Le champ `précisions`
contient tous les scores de précision individuels pour chaque n-gramme.
Le score `bleu` lui-même est ensuite calculé en prenant la moyenne géométrique des scores de précision. Par
défaut, la moyenne des précisions des quatre n-grammes est rapportée, une métrique parfois également appelée
BLEU-4. Dans cet exemple, nous pouvons voir que le score BLEU est égal à 0 car la précision du 4-grammes était de 0.
La métrique BLEU a de belles propriétés, mais elle est loin d'être une métrique parfaite.
Les bonnes propriétés sont qu'il est facile à calculer et largement utilisé dans la recherche afin que vous puissiez comparer
votre modèle à d'autres sur un benchmark. D'autre part, il y a plusieurs problèmes avec BLEU,
y compris le fait qu'elle n'intègre pas la sémantique et les difficultés sur les langues autres que l'anglais.
Un autre problème avec BLEU est qu'elle suppose que les traductions humaines ont
déjà été tokenisées, ce qui rend difficile la comparaison de modèles avec différents tokenizers.
Comme nous avons vu, mesurer la qualité des textes reste un problème difficile et ouvert en recherche en NLP.
Pour la traduction automatique, la recommandation actuelle est
d'utiliser la métrique SacreBLEU qui résout les limites de tokenisation de BLEU.
Comme vous pouvez le voir dans cet exemple, le calcul du score SacreBLEU est presque identique à celui
du BLEU. La principale différence est que nous passons maintenant une liste de textes au lieu d'une liste
de mots pour les traductions, et SacreBLEU s'occupe de la tokenisation sous le capot.