Datasets documentation
Processar dados de texto
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().
- 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, confira o guia de processo geral.
Map
A função map() suporta o processamento de lotes de exemplos de uma só vez, o que acelera a tokenização.
Carregue um tokenizer do 🤗 Transformers:
>>> from transformers import AutoTokenizer
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")Defina o parâmetro batched como True na função map() para aplicar o tokenizer a lotes de exemplos:
>>> 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() 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:
>>> dataset = dataset.map(lambda examples: tokenizer(examples["text"], return_tensors="np"), batched=True)Alinhar
A função 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 usa o seguinte mapeamento de rótulos:
>>> 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:
>>> label2id = {"contradiction": 0, "neutral": 1, "entailment": 2}Passe o dicionário dos mapeamentos de rótulos para a função align_labels_with_mapping(), bem como a coluna na qual alinhar:
>>> 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.
Update on GitHub