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.