Buckets:

rtrm's picture
|
download
raw
4.43 kB
# Carga tu dataset en Argilla[[load-your-dataset-to-argilla]]
Según la tarea de PLN en la que estés trabajando y el caso de uso o aplicación concreta, tus datos y la tarea de anotación tendrán formas distintas. Para esta sección del curso usaremos [un dataset de noticias](https://huggingface.co/datasets/SetFit/ag_news) para completar dos tareas: una clasificación de texto sobre el tema de cada texto y una clasificación de tokens para identificar las entidades nombradas que se mencionan.
Es posible importar datasets del Hub directamente desde la interfaz de Argilla, pero usaremos el SDK para aprender cómo hacer modificaciones adicionales sobre los datos si hace falta.
## Configura tu dataset
El primer paso es conectarnos a nuestra instancia de Argilla como hicimos en la sección anterior:
```python
import argilla as rg
HF_TOKEN = "..." # solo para Spaces privados
client = rg.Argilla(
api_url="...",
api_key="...",
headers={"Authorization": f"Bearer {HF_TOKEN}"}, # solo para Spaces privados
)
```
Ahora podemos pensar en la configuración de nuestro dataset en Argilla. Esta configuración representa la tarea de anotación que haremos sobre nuestros datos. Primero podemos cargar el dataset desde el Hub e inspeccionar sus features para asegurarnos de configurarlo correctamente.
```python
from datasets import load_dataset
data = load_dataset("SetFit/ag_news", split="train")
data.features
```
Estas son las features de nuestro dataset:
```python out
{'text': Value(dtype='string', id=None),
'label': Value(dtype='int64', id=None),
'label_text': Value(dtype='string', id=None)}
```
Contiene un campo `text` y también algunas etiquetas iniciales para la clasificación de texto. Las añadiremos a la configuración de nuestro dataset junto con una pregunta `spans` para las entidades nombradas:
```python
settings = rg.Settings(
fields=[rg.TextField(name="text")],
questions=[
rg.LabelQuestion(
name="label", title="Classify the text:", labels=data.unique("label_text")
),
rg.SpanQuestion(
name="entities",
title="Highlight all the entities in the text:",
labels=["PERSON", "ORG", "LOC", "EVENT"],
field="text",
),
],
)
```
Profundicemos un poco en lo que significa esta configuración. Primero, hemos definido **fields**, que incluyen la información que vamos a anotar. En este caso solo tenemos un field y está en forma de texto, así que hemos elegido un `TextField`.
Después definimos las **questions**, que representan las tareas que queremos realizar sobre nuestros datos:
- Para la tarea de clasificación de texto hemos elegido una `LabelQuestion` y usamos los valores únicos de la columna `label_text` como etiquetas, para asegurarnos de que la pregunta sea compatible con las etiquetas que ya existen en el dataset.
- Para la tarea de clasificación de tokens necesitaremos una `SpanQuestion`. Hemos definido un conjunto de etiquetas que usaremos para esa tarea, además del field sobre el que dibujaremos los spans.
Para saber más sobre todos los tipos disponibles de fields y questions, así como otras configuraciones avanzadas como metadata y vectors, consulta la [documentación de Argilla](https://docs.argilla.io/latest/how_to_guides/dataset/#define-dataset-settings).
## Sube el dataset
Ahora que hemos definido la configuración, podemos crear el dataset:
```python
dataset = rg.Dataset(name="ag_news", settings=settings)
dataset.create()
```
El dataset ya aparece en nuestra instancia de Argilla, pero verás que está vacío:
Ahora tenemos que añadir los registros que vamos a anotar, es decir, las filas de nuestro dataset. Para ello, solo tenemos que registrar los datos como records y proporcionar un mapping para aquellos elementos que no tienen el mismo nombre en los datasets del Hub y en los de Argilla:
```python
dataset.records.log(data, mapping={"label_text": "label"})
```
En nuestro mapping hemos especificado que la columna `label_text` del dataset debe mapearse a la pregunta con nombre `label`. De esta forma, usaremos las etiquetas ya existentes en el dataset como preanotaciones para anotar más rápido.
Mientras los records terminan de cargarse, ya puedes empezar a trabajar con tu dataset en la interfaz de Argilla. En este punto debería verse así:
Ahora nuestro dataset está listo para empezar a anotar.

Xet Storage Details

Size:
4.43 kB
·
Xet hash:
0940c3b115923029f5fc9e92193a8c0d5a6f079cd4e3ad99e8c158f905b9f7db

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.