1 00:00:05,680 --> 00:00:07,440 Comment découper et trancher un jeu de données. 2 00:00:08,640 --> 00:00:12,320 La plupart du temps, les données avec lesquelles vous travaillez ne sont pas parfaitement préparées pour les modèles d'entraînement. 3 00:00:13,120 --> 00:00:17,920 Dans cette vidéo, nous allons explorer différentes fonctionnalités fournies par Datasets pour nettoyer vos données. 4 00:00:19,760 --> 00:00:23,520 La bibliothèque Datasets fournit plusieurs méthodes intégrées qui vous permettent d'organiser vos données de diverses manières. 5 00:00:25,200 --> 00:00:29,360 Dans cette vidéo, nous verrons comment mélanger et diviser vos données, sélectionner les lignes qui vous 6 00:00:29,360 --> 00:00:33,840 intéressent, modifier les colonnes et appliquer des fonctions de traitement avec la méthode `map()`. 7 00:00:35,440 --> 00:00:39,920 Commençons par mélanger. C'est généralement une bonne idée d'appliquer un mélange au jeu d'entraînement 8 00:00:39,920 --> 00:00:42,640 afin que votre modèle n'apprenne aucun classement artificiel dans les données. 9 00:00:43,360 --> 00:00:46,880 Si vous souhaitez mélanger l'intégralité de le jeu de données, vous pouvez appliquer la méthode `shuffle()` correctement nommée 10 00:00:46,880 --> 00:00:51,280 à votre jeu de données. Vous pouvez voir un exemple de cette méthode en action ici, où nous avons téléchargé 11 00:00:51,280 --> 00:00:56,960 l'échantillon d'entraînement du jeu de données SQUAD et mélangé toutes les lignes de manière aléatoire. Une autre 12 00:00:56,960 --> 00:01:00,000 façon de mélanger les données consiste à créer des échantillons d'entraînement et de test aléatoires. 13 00:01:00,720 --> 00:01:05,600 Cela peut être utile si vous devez créer vos propres échantillons de test à partir de données brutes. Pour ce faire, il vous suffit 14 00:01:05,600 --> 00:01:11,760 d'appliquer la méthode `train_test_split` et de spécifier la taille de la répartition de test. Dans cet exemple, 15 00:01:11,760 --> 00:01:17,280 nous avons spécifié que le jeu de test doit représenter 10 % de la taille totale du jeu de données. Vous pouvez voir que 16 00:01:17,280 --> 00:01:22,400 la sortie de `train_test_split` est un objet `DatasetDict`, dont les clés correspondent aux nouveaux échantillons. 17 00:01:24,960 --> 00:01:28,400 Maintenant que nous savons comment mélanger un jeu de données, examinons comment renvoyer les lignes qui 18 00:01:28,400 --> 00:01:32,080 nous intéressent. La méthode la plus courante consiste à utiliser la méthode `select`. 19 00:01:32,960 --> 00:01:36,560 Cette méthode attend une liste ou un générateur d'indices du jeu de données, 20 00:01:36,560 --> 00:01:39,840 et renverra ensuite un nouvel objet Dataset contenant uniquement ces lignes. 21 00:01:41,280 --> 00:01:45,600 Si vous souhaitez créer un échantillon aléatoire de lignes, vous pouvez le faire en enchaînant les méthodes de mélange et de sélection 22 00:01:45,600 --> 00:01:51,120 Dans cet exemple, nous avons créé un échantillon de cinq éléments à partir du jeu de données SQuAD. 23 00:01:53,280 --> 00:01:57,360 La dernière façon de sélectionner des lignes spécifiques dans un jeu de données consiste à appliquer la méthode `filter`. 24 00:01:58,080 --> 00:02:01,360 Cette méthode vérifie si chaque ligne remplit une condition ou non. 25 00:02:02,080 --> 00:02:05,840 Par exemple, nous avons créé ici une petite fonction lambda qui vérifie si le 26 00:02:05,840 --> 00:02:10,800 titre commence par la lettre « L ». Une fois que nous appliquons cette fonction avec la méthode `filter`, 27 00:02:10,800 --> 00:02:13,840 nous obtenons un sous-ensemble de données composé uniquement de ces lignes. 28 00:02:16,080 --> 00:02:19,360 Jusqu'à présent, nous avons parlé des lignes d'un jeu de données, mais qu'en est-il des colonnes ? 29 00:02:20,240 --> 00:02:23,280 La bibliothèque Datasets propose deux méthodes principales pour transformer les colonnes : 30 00:02:23,840 --> 00:02:26,480 une méthode `rename_column` pour modifier le nom d'une colonne, 31 00:02:26,480 --> 00:02:31,360 et une méthode `remove_columns` pour les supprimer. Vous pouvez voir des exemples de ces deux méthodes ici. 32 00:02:34,000 --> 00:02:38,400 Certains jeux de données ont des colonnes imbriquées et vous pouvez les développer en appliquant la méthode `flatten`. 33 00:02:39,120 --> 00:02:44,240 Par exemple, dans le jeu de données SQUAD, la colonne des réponses contient un texte et un champ answer_start. 34 00:02:44,960 --> 00:02:49,840 Si nous voulons les promouvoir dans leurs propres colonnes distinctes, nous pouvons appliquer `flatten` comme indiqué ici. 35 00:02:51,280 --> 00:02:55,040 Bien sûr, aucune discussion sur la bibliothèque Datasets ne serait complète sans mentionner la 36 00:02:55,040 --> 00:03:00,240 fameuse méthode `map`. Cette méthode applique une fonction de traitement personnalisée à chaque ligne du jeu de données. 37 00:03:00,960 --> 00:03:06,480 Par exemple, ici, nous définissons d'abord une fonction `lowercase_title` qui met simplement le texte en minuscules dans la 38 00:03:06,480 --> 00:03:13,760 colonne de titre, puis nous transmettons cela à la méthode `map` et voilà ! Nous avons maintenant des titres en minuscules. 39 00:03:15,760 --> 00:03:19,280 La méthode `map` peut également être utilisée pour fournir des batchs de lignes à la fonction de traitement. 40 00:03:19,840 --> 00:03:24,240 Ceci est particulièrement utile pour la tokenisation, où les tokenizers sont soutenus par la 41 00:03:24,240 --> 00:03:31,840 bibliothèque Tokenizers peut utiliser le multithreading rapide pour traiter les batchs en parallèle.