# Procesar datos de texto

Esta guía muestra métodos específicos para procesar conjuntos de datos de texto. Aprenda a:

- Tokeniza un conjunto de datos con [map()](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.Dataset.map).
- Alinear las etiquetas del conjunto de datos con los ids de etiqueta para los conjuntos de datos de NLI.

Para una guía sobre cómo procesar cualquier tipo de conjunto de datos, consulte la guía de proceso general.

## Map

La función [map()](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.Dataset.map) admite el procesamiento de lotes de ejemplos a la vez, lo que acelera la tokenización.

Carga un tokenizador desde 🤗 [Transformers](https://huggingface.co/transformers/):

```py
>>> from transformers import AutoTokenizer

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

Establezca el parámetro `batched` en `True` en la función [map()](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.Dataset.map) para aplicar el tokenizador a lotes de ejemplos:

```py
>>> 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 función [map()](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.Dataset.map) convierte los valores devueltos a un formato compatible con PyArrow. Pero devolver explícitamente los tensores como matrices de NumPy es más rápido porque es un formato nativamente compatible con PyArrow. Establece `return_tensors="np"` cuando tokenices tu texto:

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

## Alinear

La función [align_labels_with_mapping()](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.Dataset.align_labels_with_mapping) alinea el identificador de etiqueta de un conjunto de datos con el nombre de la etiqueta. No todos los modelos de 🤗 Transformers siguen el mapeo de etiquetas prescrito del conjunto de datos original, especialmente en el caso de conjuntos de datos de NLI. Por ejemplo, el conjunto de datos [MNLI](https://huggingface.co/datasets/glue) utiliza el siguiente mapeo de etiquetas:

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

Para alinear el mapeo de etiquetas del conjunto de datos con el mapeo utilizado por un modelo, cree un diccionario con el nombre y el id de la etiqueta para alinear:

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

Pase el diccionario de las correspondencias de etiquetas a la función [align_labels_with_mapping()](/docs/datasets/v5.2.0/es/package_reference/main_classes#datasets.Dataset.align_labels_with_mapping), junto con la columna sobre la que alinear:

```py
>>> from datasets import load_dataset

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

También puede usar esta función para asignar un mapeo personalizado de etiquetas a ids.

