1
00:00:05,520 --> 00:00:12,080
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,

2
00:00:12,080 --> 00:00:15,280
mais que faites-vous lorsque vous souhaitez mesurer la qualité du texte généré à partir d'un

3
00:00:15,280 --> 00:00:19,680
modèle ? Dans cette vidéo, nous allons examiner une métrique largement utilisée pour la traduction automatique

4
00:00:19,680 --> 00:00:22,960
appelée BLEU. L'idée de base de

5
00:00:22,960 --> 00:00:27,280
BLEU est d'attribuer un score numérique unique à une traduction qui nous indique à quel point elle est bonne

6
00:00:27,280 --> 00:00:32,080
par rapport à une ou plusieurs traductions de référence. Dans cet exemple, nous avons une phrase en espagnol qui

7
00:00:32,080 --> 00:00:37,280
a été traduite en anglais par un modèle. Si nous comparons la traduction générée à certaines

8
00:00:37,280 --> 00:00:42,160
traductions humaines de référence, nous pouvons voir que le modèle est plutôt bon, mais a fait une erreur courante :

9
00:00:42,960 --> 00:00:48,000
le mot espagnol « tengo » signifie « avoir » en anglais et cette traduction un à un n'est pas tout à fait naturel.

10
00:00:49,680 --> 00:00:53,280
Alors, comment mesurer automatiquement la qualité d'une traduction générée ?

11
00:00:54,080 --> 00:00:58,000
L'approche adoptée par BLEU consiste à comparer les n-grammes de la traduction générée aux

12
00:00:58,000 --> 00:01:03,760
n-grammes des références. Un n-gramme n'est qu'une façon élégante de dire « un morceau de n mots ».


13
00:01:03,760 --> 00:01:07,280
Donc commençons par les unigrammes, qui correspondent aux mots individuels d'une phrase.

14
00:01:08,720 --> 00:01:12,160
Dans cet exemple, vous pouvez voir que quatre des mots de la traduction générée

15
00:01:12,160 --> 00:01:18,000
sont également trouvés dans l'une des traductions de référence. Maintenant que nous avons trouvé nos correspondances,

16
00:01:18,000 --> 00:01:21,920
une façon d'attribuer un score à la traduction consiste à calculer la précision des unigrammes.

17
00:01:22,880 --> 00:01:27,200
Cela signifie que nous comptons simplement le nombre de mots correspondants dans les traductions générées et de référence

18
00:01:27,200 --> 00:01:30,400
et que nous normalisons le nombre en divisant par le nombre de mots dans la génération.

19
00:01:31,600 --> 00:01:35,600
Dans cet exemple, nous avons trouvé 4 mots correspondants et notre génération a 5 mots,

20
00:01:36,960 --> 00:01:40,320
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

21
00:01:40,320 --> 00:01:48,160
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

22
00:01:48,160 --> 00:01:51,840
parfois bloqués dans des schémas répétitifs et répètent plusieurs fois le même mot.

23
00:01:52,960 --> 00:01:56,240
Si nous comptons simplement le nombre de correspondances de mots, nous pouvons obtenir des scores de très haute précision

24
00:01:56,240 --> 00:01:58,720
même si la traduction est terrible d'un point de vue humain !

25
00:01:59,840 --> 00:02:04,640
Par exemple, si notre modèle génère simplement le mot « six », nous obtenons un score de précision unigramme parfait.

26
00:02:07,040 --> 00:02:12,000
Pour gérer cela, BLEU utilise une précision modifiée qui limite le nombre de fois pour compter un mot, en

27
00:02:12,000 --> 00:02:14,960
fonction du nombre maximal de fois qu'il apparaît dans la traduction de référence.

28
00:02:16,160 --> 00:02:19,360
Dans cet exemple, le mot « six » n'apparaît qu'une seule fois dans la référence.

29
00:02:19,360 --> 00:02:23,840
Nous coupons donc le numérateur à un et la précision de l'unigramme modifié donne désormais un score beaucoup plus faible.

30
00:02:27,440 --> 00:02:31,600
Un autre problème avec la précision unigramme est qu'elle ne tient pas compte de l'ordre des

31
00:02:31,600 --> 00:02:37,200
mots dans les traductions. Par exemple, supposons que nous ayons demandé à Yoda de traduire notre phrase en espagnol,

32
00:02:37,200 --> 00:02:43,120
nous pourrions alors obtenir quelque chose à l'envers comme « années trente six j'ai ». Dans ce cas,

33
00:02:43,120 --> 00:02:46,560
la précision unigramme modifiée donne une haute précision qui n'est pas ce que nous voulons.

34
00:02:48,240 --> 00:02:52,400
Ainsi, pour traiter les problèmes d'ordre des mots, BLEU calcule en fait la précision pour plusieurs

35
00:02:52,400 --> 00:02:57,360
n-grammes différents, puis calcule la moyenne du résultat. Par exemple, si nous comparons 4-grammes, nous pouvons

36
00:02:57,360 --> 00:03:03,840
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.

37
00:03:05,440 --> 00:03:10,880
Pour calculer les scores BLEU dans la bibliothèque Datasets, c'est très simple : il suffit d'utiliser la fonction `load_metric(),

38
00:03:10,880 --> 00:03:13,840
fournir les prédictions de votre modèle avec les références et vous êtes prêt !

39
00:03:16,240 --> 00:03:19,920
Le résultat contient plusieurs champs d'intérêt. Le champ `précisions` 

40
00:03:19,920 --> 00:03:22,800
contient tous les scores de précision individuels pour chaque n-gramme.

41
00:03:24,800 --> 00:03:30,320
Le score `bleu` lui-même est ensuite calculé en prenant la moyenne géométrique des scores de précision. Par

42
00:03:30,320 --> 00:03:34,880
défaut, la moyenne des précisions des quatre n-grammes est rapportée, une métrique parfois également appelée

43
00:03:34,880 --> 00:03:40,480
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.

44
00:03:43,440 --> 00:03:46,640
La métrique BLEU a de belles propriétés, mais elle est loin d'être une métrique parfaite.

45
00:03:47,280 --> 00:03:51,520
Les bonnes propriétés sont qu'il est facile à calculer et largement utilisé dans la recherche afin que vous puissiez comparer

46
00:03:51,520 --> 00:03:56,560
votre modèle à d'autres sur un benchmark. D'autre part, il y a plusieurs problèmes avec BLEU,

47
00:03:56,560 --> 00:04:00,560
y compris le fait qu'elle n'intègre pas la sémantique et les difficultés sur les langues autres que l'anglais.

48
00:04:01,680 --> 00:04:04,560
Un autre problème avec BLEU est qu'elle suppose que les traductions humaines ont

49
00:04:04,560 --> 00:04:08,400
déjà été tokenisées, ce qui rend difficile la comparaison de modèles avec différents tokenizers.

50
00:04:11,200 --> 00:04:15,280
Comme nous avons vu, mesurer la qualité des textes reste un problème difficile et ouvert en recherche en NLP.

51
00:04:15,280 --> 00:04:17,680
Pour la traduction automatique, la recommandation actuelle est

52
00:04:17,680 --> 00:04:21,600
d'utiliser la métrique SacreBLEU qui résout les limites de tokenisation de BLEU.

53
00:04:22,640 --> 00:04:26,560
Comme vous pouvez le voir dans cet exemple, le calcul du score SacreBLEU est presque identique à celui

54
00:04:26,560 --> 00:04:30,800
du BLEU. La principale différence est que nous passons maintenant une liste de textes au lieu d'une liste

55
00:04:30,800 --> 00:04:41,200
de mots pour les traductions, et SacreBLEU s'occupe de la tokenisation sous le capot.