Buckets:
| # 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.