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

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.

from datasets import load_dataset

data = load_dataset("SetFit/ag_news", split="train")
data.features

Estas son las features de nuestro dataset:

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

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.

Sube el dataset

Ahora que hemos definido la configuración, podemos crear el dataset:

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:

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.