1 00:00:05,250 --> 00:00:09,840 Jetons un coup d'œil à l'intérieur du pipeline de classification de tokens. 2 00:00:09,840 --> 00:00:14,690 Dans la vidéo du pipeline, nous avons examiné les différentes applications 3 00:00:14,690 --> 00:00:20,820 prises en charge par la bibliothèque Transformers, l'une d'entre elles étant la classification de tokens, par exemple en prédisant pour chaque mot d'une 4 00:00:20,820 --> 00:00:27,760 phrase s'il correspond à une personne, une organisation ou un lieu. 5 00:00:27,760 --> 00:00:32,660 On peut même regrouper les tokens correspondant à une même entité, par exemple tous les tokens 6 00:00:32,660 --> 00:00:37,950 qui ont formé ici le mot « Sylvain », ou « Hugging » et « Face ». 7 00:00:37,950 --> 00:00:42,480 Le pipeline de classification de tokens fonctionne de la même manière que le pipeline de classification de texte que 8 00:00:42,480 --> 00:00:44,379 nous avons étudié dans une vidéo précédente. 9 00:00:44,379 --> 00:00:49,600 Il y a trois étapes : la tokenisation, le modèle et le post-traitement. 10 00:00:49,600 --> 00:00:56,340 Les deux premières étapes sont identiques au pipeline de classification de texte, sauf que nous utilisons un 11 00:00:56,340 --> 00:01:01,640 modèle de classification de token automatique au lieu d'un modèle de classification de séquence. 12 00:01:01,640 --> 00:01:05,840 Nous tokenisons notre texte puis le transmettons au modèle. 13 00:01:05,840 --> 00:01:10,400 Au lieu d'obtenir un numéro pour chaque étiquette possible pour toute la phrase, nous obtenons un numéro 14 00:01:10,400 --> 00:01:16,690 pour chacune des 9 étiquettes possibles pour chaque token de la phrase, ici 19. 15 00:01:16,690 --> 00:01:22,299 Comme tous les autres modèles de la bibliothèque Transformers, notre modèle génère des logits, que nous 16 00:01:22,299 --> 00:01:25,900 transformons en prédictions en utilisant une SoftMax. 17 00:01:25,900 --> 00:01:31,430 Nous obtenons également l'étiquette prédite pour chaque token en prenant la prédiction maximale (puisque la 18 00:01:31,430 --> 00:01:35,470 fonction softmax préserve l'ordre, nous aurions pu le faire sur les logits si nous n'avions pas besoin 19 00:01:35,470 --> 00:01:37,759 des prédictions). 20 00:01:37,759 --> 00:01:42,340 La configuration du modèle contient l'association d'étiquette dans son champ `id2label`. 21 00:01:42,340 --> 00:01:45,331 En l'utilisant, nous pouvons mapper chaque token à son étiquette correspondante. 22 00:01:45,331 --> 00:01:50,490 L'étiquette `O` correspond à « aucune entité », c'est pourquoi nous ne l'avons pas vu dans nos résultats dans 23 00:01:50,490 --> 00:01:51,579 la première diapositive. 24 00:01:51,579 --> 00:01:57,430 En plus de l'étiquette et de la probabilité, ces résultats incluaient le caractère de début et de fin 25 00:01:57,430 --> 00:01:58,570 dans la phrase. 26 00:01:58,570 --> 00:02:02,610 Nous devrons utiliser l'association de décalage du tokenizer pour les obtenir (regardez la vidéo 27 00:02:02,610 --> 00:02:04,820 liée ci-dessous si vous ne les connaissez pas déjà). 28 00:02:04,820 --> 00:02:09,750 Ensuite, en parcourant chaque token qui a une étiquette distincte de `O`, nous pouvons construire la 29 00:02:09,750 --> 00:02:12,440 liste des résultats que nous avons obtenus avec notre premier pipeline. 30 00:02:12,440 --> 00:02:18,920 La dernière étape consiste à regrouper les tokens qui correspondent à la même entité. 31 00:02:18,920 --> 00:02:23,290 C'est pourquoi nous avions deux labels pour chaque type d'entité : `I-PER` et `B-PER` par exemple. 32 00:02:23,290 --> 00:02:29,190 Il nous permet de savoir si un token est dans la même entité que le précédent. A noter 33 00:02:29,190 --> 00:02:34,750 qu'il existe deux manières d'étiqueter utilisées pour la classification des tokens, l'une (en rose ici) utilise l' 34 00:02:34,750 --> 00:02:40,380 étiquette `B-PER` au début de chaque nouvelle entité, mais l'autre (en bleu) ne l'utilise que pour séparer 35 00:02:40,380 --> 00:02:43,380 deux entités adjacentes du même type. 36 00:02:43,380 --> 00:02:48,880 Dans les deux cas, nous pouvons marquer une nouvelle entité chaque fois que nous voyons apparaître une nouvelle étiquette 37 00:02:48,880 --> 00:02:54,051 (avec le préfixe `I` ou `B`) puis prendre tous les tokens suivants étiquetés de la même manière, avec un 38 00:02:54,051 --> 00:02:55,051 drapeau `I`. 39 00:02:55,051 --> 00:02:59,360 Ceci, couplé à l'association de décalage pour obtenir les caractères de début et de fin, nous permet d' 40 00:02:59,360 --> 00:03:02,000 obtenir l'étendue des textes pour chaque entité.