|
| 1 | +# Chargez votre jeu de données dans Argilla[[load-your-dataset-to-argilla]] |
| 2 | + |
| 3 | +<CourseFloatingBanner chapter={10} |
| 4 | + classNames="absolute z-10 right-0 top-0" |
| 5 | + notebooks={[ |
| 6 | + {label: "English", value: "https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/en/chapter10/section3.ipynb"}, |
| 7 | + {label: "Français", value: "https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/en/chapter10/section3.ipynb"}, |
| 8 | + {label: "English", value: "https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/fr/chapter10/section3.ipynb"}, |
| 9 | + {label: "Français", value: "https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/fr/chapter10/section3.ipynb"}, |
| 10 | +]} /> |
| 11 | + |
| 12 | +En fonction de la tâche NLP sur laquelle vous travaillez et du cas d'utilisation/votre application spécifique, vos données et la tâche d'annotation se présenteront différemment. Pour cette partie du cours, nous utiliserons [un jeu de données collectant des actualités](https://huggingface.co/datasets/SetFit/ag_news) pour réaliser deux tâches : de la classification indiquant le thème de chaque texte et de la reconnaissannce d'entités nommées pour identifier les entités mentionnées. |
| 13 | + |
| 14 | +<iframe |
| 15 | + src="https://huggingface.co/datasets/SetFit/ag_news/embed/viewer/default/train" |
| 16 | + frameborder="0" |
| 17 | + width="100%" |
| 18 | + height="560px" |
| 19 | +></iframe> |
| 20 | + |
| 21 | +Il est possible d'importer des jeux de données depuis le Hub en utilisant directement l'interface utilisateur Argilla, mais nous utiliserons le SDK pour apprendre à modifier les données si nécessaire. |
| 22 | + |
| 23 | +## Configurez votre jeu de données |
| 24 | + |
| 25 | +La première étape consiste à se connecter à notre instance Argilla comme nous l'avons fait dans la section précédente : |
| 26 | + |
| 27 | +```python |
| 28 | +import argilla as rg |
| 29 | + |
| 30 | +HF_TOKEN = "..." # uniquement pour les spaces privés |
| 31 | + |
| 32 | +client = rg.Argilla( |
| 33 | + api_url="...", |
| 34 | + api_key="...", |
| 35 | + headers={"Authorization": f"Bearer {HF_TOKEN}"}, # uniquement pour les spaces privés |
| 36 | +) |
| 37 | +``` |
| 38 | + |
| 39 | +Nous pouvons maintenant réfléchir aux paramètres de notre jeu de données dans Argilla. Ceux-ci représentent la tâche d'annotation que nous allons effectuer sur nos données. Tout d'abord, nous pouvons charger le jeu de données depuis le Hub et inspecter ses caractéristiques, afin de nous assurer que nous le configurons correctement. |
| 40 | + |
| 41 | +```python |
| 42 | +from datasets import load_dataset |
| 43 | + |
| 44 | +data = load_dataset("SetFit/ag_news", split="train") |
| 45 | +data.features |
| 46 | +``` |
| 47 | + |
| 48 | +Voici les caractéristiques de notre jeu de données : |
| 49 | + |
| 50 | +```python out |
| 51 | +{'text': Value(dtype='string', id=None), |
| 52 | + 'label': Value(dtype='int64', id=None), |
| 53 | + 'label_text': Value(dtype='string', id=None)} |
| 54 | +``` |
| 55 | + |
| 56 | +Il contient un `text` ainsi que des labels pour la tâche de classification. Nous les ajouterons à nos paramètres de jeu de données avec une question `spans` pour les entités nommées : |
| 57 | + |
| 58 | +```python |
| 59 | +settings = rg.Settings( |
| 60 | + fields=[rg.TextField(name="text")], |
| 61 | + questions=[ |
| 62 | + rg.LabelQuestion( |
| 63 | + name="label", title="Classifier le texte :", labels=data.unique("label_text") |
| 64 | + ), |
| 65 | + rg.SpanQuestion( |
| 66 | + name="entities", |
| 67 | + title="Surligner toutes les entités présentes dans le texte :", |
| 68 | + labels=["PERSON", "ORG", "LOC", "EVENT"], |
| 69 | + field="text", |
| 70 | + ), |
| 71 | + ], |
| 72 | +) |
| 73 | +``` |
| 74 | + |
| 75 | +Voyons un peu plus en détail ce que signifient ces paramètres. Tout d'abord, nous avons défini les **champs**, qui contiennent les informations que nous allons annoter. Dans ce cas, nous n'avons qu'un seul champ et il se présente sous la forme d'un texte, nous avons donc choisi un `TextField`. |
| 76 | + |
| 77 | +Ensuite, nous définissons des **questions** qui représentent les tâches que nous voulons effectuer sur nos données : |
| 78 | + |
| 79 | +- Pour la tâche de classification de texte, nous avons choisi une `LabelQuestion` et nous avons utilisé les valeurs uniques de la colonne `label_text` comme nos labels, pour s'assurer que la question est compatible avec ceux qui existent déjà dans le jeu de données. |
| 80 | +- Pour la tâche de classification de *tokens*, nous aurons besoin d'une `SpanQuestion`. Nous avons défini un ensemble de labels que nous utiliserons pour cette tâche, ainsi que le champ sur lequel nous surlignerons les entités. |
| 81 | + |
| 82 | +Pour en savoir plus sur tous les types de champs et de questions disponibles et sur d'autres paramètres avancés, tels que les métadonnées et les vecteurs, consultez la [documentation](https://docs.argilla.io/latest/how_to_guides/dataset/#define-dataset-settings). |
| 83 | + |
| 84 | +## Charger le jeu de données |
| 85 | + |
| 86 | +Maintenant que nous avons défini quelques paramètres, nous pouvons créer le jeu de données : |
| 87 | + |
| 88 | +```python |
| 89 | +dataset = rg.Dataset(name="ag_news", settings=settings) |
| 90 | + |
| 91 | +dataset.create() |
| 92 | +``` |
| 93 | + |
| 94 | +Le jeu de données apparaît maintenant dans notre instance Argilla, mais vous verrez qu'il est vide : |
| 95 | + |
| 96 | +<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter10/empty_dataset.png" alt="Screenshot of the empty dataset."/> |
| 97 | + |
| 98 | +Nous devons maintenant ajouter les enregistrements que nous allons annoter, c'est-à-dire les lignes de notre jeu de données. Pour ce faire, nous devons simplement saisir les données en tant qu'enregistrements et fournir une correspondance pour les éléments qui n'ont pas le même nom dans les jeux de données du Hub et d'Argilla : |
| 99 | + |
| 100 | +```python |
| 101 | +dataset.records.log(data, mapping={"label_text": "label"}) |
| 102 | +``` |
| 103 | + |
| 104 | +Dans notre correspondance, nous avons spécifié que la colonne `label_text` dans le jeu de données devrait être associée à la question avec le nom `label`. De cette façon, nous utiliserons les étiquettes existantes dans le jeu de données comme pré-annotations afin de pouvoir annoter plus rapidement. |
| 105 | + |
| 106 | +Pendant que les enregistrements continuent à être consignés, vous pouvez déjà commencer à travailler avec votre jeu de données dans l'interface utilisateur d'Argilla. A ce stade, cela devrait ressembler à ceci : |
| 107 | + |
| 108 | +<img src="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter10/argilla_initial_dataset.png" alt="Screenshot of the dataset in Argilla."/> |
| 109 | + |
| 110 | +Notre jeu de données est maintenant prêt à être annoté ! |
0 commit comments