# Processar dados de texto

Este guia mostra métodos específicos para processar conjuntos de dados de texto. Aprenda como:

- Tokenize um dataset com [map()](/docs/datasets/main/pt/package_reference/main_classes#datasets.Dataset.map).
- Alinhe os rótulos do conjunto de dados com os ids de rótulo para conjuntos de dados de NLI.

Para um guia sobre como processar qualquer tipo de conjunto de dados, consulte o guia de processo geral.

## Map

A função [map()](/docs/datasets/main/pt/package_reference/main_classes#datasets.Dataset.map) suporta o processamento de lotes de exemplos de uma só vez, o que acelera a tokenização.

Carregue um tokenizer do 🤗 [Transformers](https://huggingface.co/transformers/):

```py
>>> from transformers import AutoTokenizer

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

Defina o parâmetro `batched` como `True` na função [map()](/docs/datasets/main/pt/package_reference/main_classes#datasets.Dataset.map) para aplicar o tokenizer a lotes de exemplos:

```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]}
```

A função [map()](/docs/datasets/main/pt/package_reference/main_classes#datasets.Dataset.map) converte os valores retornados para um formato suportado pelo PyArrow. Mas retornar explicitamente os tensores como arrays NumPy é mais rápido, pois é um formato nativamente suportado pelo PyArrow. Defina `return_tensors="np"` ao tokenizar seu texto:

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

## Alinhar

A função [align_labels_with_mapping()](/docs/datasets/main/pt/package_reference/main_classes#datasets.Dataset.align_labels_with_mapping) alinha o id de um rótulo do conjunto de dados com o nome do rótulo. Nem todos os modelos do 🤗 Transformers seguem o mapeamento de rótulos prescrito do conjunto de dados original, especialmente para conjuntos de dados de NLI. Por exemplo, o conjunto de dados [MNLI](https://huggingface.co/datasets/glue) usa o seguinte mapeamento de rótulos:

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

Para alinhar o mapeamento de rótulos do conjunto de dados com o mapeamento usado por um modelo, crie um dicionário com o nome e o id do rótulo para alinhar:

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

Passe o dicionário dos mapeamentos de rótulos para a função [align_labels_with_mapping()](/docs/datasets/main/pt/package_reference/main_classes#datasets.Dataset.align_labels_with_mapping), bem como a coluna na qual alinhar:

```py
>>> from datasets import load_dataset

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

Você também pode usar esta função para atribuir um mapeamento personalizado de rótulos para ids.

