Datasets documentation

Procesar datos de texto

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

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().
  • 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, consulta la guía de proceso general.

Map

La función map() admite el procesamiento de lotes de ejemplos a la vez, lo que acelera la tokenización.

Carga un tokenizador desde 🤗 Transformers:

>>> from transformers import AutoTokenizer

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

Establezca el parámetro batched en True en la función map() para aplicar el tokenizador a lotes de ejemplos:

>>> 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() 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:

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

Alinear

La función 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 utiliza el siguiente mapeo de etiquetas:

>>> 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:

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

Pase el diccionario de las correspondencias de etiquetas a la función align_labels_with_mapping(), junto con la columna sobre la que alinear:

>>> 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.

Update on GitHub