1
00:00:05,109 --> 00:00:10,089
Les tokenizers rapides de la bibliothèque Transformers sont rapides, mais ils implémentent également des fonctionnalités

2
00:00:10,089 --> 00:00:14,610
qui seront très utiles pour le pré-traitement et le post-traitement des données.

3
00:00:14,610 --> 00:00:16,750
Jetons y un coup d'œil !

4
00:00:16,750 --> 00:00:21,759
Voyons d'abord la sortie habituelle d'un tokenizer.

5
00:00:21,759 --> 00:00:28,039
Nous obtenons des `input_ids` qui correspondent à des tokens, mais nous perdons beaucoup d'informations au cours du processus.

6
00:00:28,039 --> 00:00:33,270
Par exemple, ici la tokenisation est la même pour les deux phrases, même si l'une a

7
00:00:33,270 --> 00:00:36,510
plusieurs espaces de plus que l'autre.

8
00:00:36,510 --> 00:00:41,090
Le simple fait d'avoir les identifiants d'entrée n'est donc pas suffisant si nous voulons faire correspondre certains tokens avec une étendue

9
00:00:41,090 --> 00:00:46,610
de texte (ce que nous devrons faire lorsque nous aborderons la question-réponse par exemple).

10
00:00:46,610 --> 00:00:51,699
Il est également difficile de savoir quand deux tokens appartiennent ou non au même mot : cela semble facile

11
00:00:51,699 --> 00:00:57,250
quand on regarde simplement la sortie d'un tokenizer BERT, il suffit de chercher le ##. Mais 

12
00:00:57,250 --> 00:01:01,490
d'autres tokenizers ont différentes façons de tokeniser des parties de mots.

13
00:01:01,490 --> 00:01:06,910
Par exemple, RoBERTa ajoute ce symbole spécial G pour marquer les tokens au début d'un mot,

14
00:01:06,910 --> 00:01:12,160
et T5 utilise ce symbole spécial de soulignement dans le même but.

15
00:01:12,160 --> 00:01:16,759
Heureusement, les tokenizers rapides gardent une trace du mot d'où provient chaque token, avec une

16
00:01:16,759 --> 00:01:20,090
méthode `word_ids` que vous pouvez utiliser sur leurs sorties.

17
00:01:20,090 --> 00:01:24,799
La sortie n'est pas nécessairement claire, mais assemblées dans un joli tableau comme celui-ci, nous pouvons

18
00:01:24,799 --> 00:01:28,119
regarder la position du mot pour chaque token.

19
00:01:28,119 --> 00:01:32,659
Mieux encore, les tokenisers rapides gardent une trace de l'étendue des caractères d'où provient chaque token,

20
00:01:32,659 --> 00:01:38,780
et nous pouvons les obtenir en l'appelant sur un (ou plusieurs) texte en ajoutant l'argument `return_offsets_mapping=True`

21
00:01:38,780 --> 00:01:39,780
.

22
00:01:39,780 --> 00:01:46,469
Dans ce cas, nous pouvons voir comment nous sautons des positions entre le token `##s` et le super token, en

23
00:01:46,469 --> 00:01:50,579
raison des multiples espaces dans la phrase initiale.

24
00:01:50,579 --> 00:01:54,470
Pour ce faire, les tokenizers rapides stockent des informations supplémentaires à chaque étape de leur

25
00:01:54,470 --> 00:01:55,470
pipeline interne.

26
00:01:55,470 --> 00:02:00,899
Ce pipeline interne consiste en une normalisation, où nous appliquons un peu de nettoyage au texte,

27
00:02:00,899 --> 00:02:05,600
comme la mise en minuscules ou la suppression des accents. La pré-tokénisation, où nous divisons

28
00:02:05,600 --> 00:02:09,940
les textes en mots puis nous appliquons le modèle du tokenizer, c'est là que les

29
00:02:09,940 --> 00:02:15,300
mots sont divisés en tokens avant de faire finalement le post-traitement, où des tokens spéciaux

30
00:02:15,300 --> 00:02:17,110
sont ajoutés.

31
00:02:17,110 --> 00:02:20,730
Du début à la fin du pipeline, le tokenizer garde une trace de chaque étendue de

32
00:02:20,730 --> 00:02:23,680
texte qui correspond à chaque mot, puis à chaque token.

33
00:02:23,680 --> 00:02:29,099
Nous verrons à quel point cela est utile lorsque nous aborderons les tâches suivantes : lors de la

34
00:02:29,099 --> 00:02:34,360
modélisation d'un langage masqué, une variante qui obtient des résultats de pointe consiste à masquer tous les tokens d'un

35
00:02:34,360 --> 00:02:37,600
mot donné au lieu de tokens choisis au hasard.

36
00:02:37,600 --> 00:02:40,909
Cela nous obligera à utiliser les identifiants de mots que nous avons vus.

37
00:02:40,909 --> 00:02:45,209
Lors de la classification des tokens, nous devrons convertir les étiquettes que nous avons sur les mots en

38
00:02:45,209 --> 00:02:47,230
étiquettes sur chaque token.

39
00:02:47,230 --> 00:02:51,360
Quant aux mappages de décalage, ils seront très utiles lorsque nous aurons besoin de convertir des positions de token

40
00:02:51,360 --> 00:02:56,330
dans une phrase en une étendue de texte, ce que nous aurons besoin de savoir lorsque nous examinerons la réponse à une

41
00:02:56,330 --> 00:03:01,200
question ou lors du regroupement des tokens correspondant à la même entité dans la classification de token.

42
00:03:01,200 --> 00:03:09,730
Pour jeter un œil à ces tâches, consultez les vidéos en description !