Datasets documentation

Traiter les données textuelles

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v4.8.4).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Traiter les données textuelles

Ce guide présente des méthodes spécifiques pour le traitement de jeux de données textuels. Apprenez à :

  • Tokeniser un jeu de données avec map().
  • Aligner les étiquettes du jeu de données avec les identifiants d'étiquettes pour les jeux de données NLI.

Pour un guide sur la façon de traiter n'importe quel type de jeu de données, consultez le guide de processus général.

Carte

La fonction map() prend en charge le traitement de lots d'exemples à la fois, ce qui accélère la tokenisation.

Charger un tokenizer depuis 🤗 Transformers :

>>> from transformers import AutoTokenizer

>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")

Définissez le paramètre batched sur True dans la fonction map() pour appliquer le tokenizer à des lots d'exemples :

>>> dataset = dataset.map(lambda examples: tokenizer(examples["text"]), batched=True)
>>> dataset[0]
{'text': 'the rock is destined to be the 21st century\'s new " conan " and that he\'s going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .', 
 'label': 1, 
 'input_ids': [101, 1996, 2600, 2003, 16036, 2000, 2022, 1996, 7398, 2301, 1005, 1055, 2047, 1000, 16608, 1000, 1998, 2008, 2002, 1005, 1055, 2183, 2000, 2191, 1037, 17624, 2130, 3618, 2084, 7779, 29058, 8625, 13327, 1010, 3744, 1011, 18856, 19513, 3158, 5477, 4168, 2030, 7112, 16562, 2140, 1012, 102], 
 'token_type_ids': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
 'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}

La fonction map() convertit les valeurs renvoyées dans un format pris en charge par PyArrow. Mais renvoyer explicitement les tenseurs sous forme de tableaux NumPy est plus rapide, car il s’agit d’un format nativement pris en charge par PyArrow. Définissez return_tensors="np" lors de la tokenisation de votre texte :

>>> dataset = dataset.map(lambda examples: tokenizer(examples["text"], return_tensors="np"), batched=True)

Aligner

La fonction align_labels_with_mapping() aligne l’identifiant d’étiquette d’un jeu de données avec le nom de l’étiquette. Tous les modèles 🤗 Transformers ne suivent pas le mappage d’étiquettes prescrit du jeu de données d’origine, en particulier pour les jeux de données NLI. Par exemple, le jeu de données MNLI utilise le mappage d’étiquettes suivant :

>>> label2id = {"entailment": 0, "neutral": 1, "contradiction": 2}

Pour aligner la correspondance des étiquettes du jeu de données avec celle utilisée par un modèle, créez un dictionnaire des noms et identifiants d'étiquettes à aligner :

>>> label2id = {"contradiction": 0, "neutral": 1, "entailment": 2}

Transmettez le dictionnaire des correspondances d'étiquettes à la fonction align_labels_with_mapping(), ainsi que la colonne sur laquelle effectuer l'alignement :

>>> from datasets import load_dataset

>>> mnli = load_dataset("nyu-mll/glue", "mnli", split="train")
>>> mnli_aligned = mnli.align_labels_with_mapping(label2id, "label")

Vous pouvez également utiliser cette fonction pour affecter une correspondance personnalisée entre les libellés et les identifiants.

Update on GitHub