Formatos de Datos
Formatos de datos soportados y cómo estructurar tus datos de anotación.
Potato soporta múltiples formatos de datos de forma nativa. Esta guía explica cómo estructurar tus datos para la anotación.
From input file to exported labels
Formatos Soportados
| Formato | Extensión | Descripción |
|---|---|---|
| JSON | .json | Array de objetos |
| JSON Lines | .jsonl | Un objeto JSON por línea |
| CSV | .csv | Valores separados por comas |
| TSV | .tsv | Valores separados por tabulaciones |
Formato JSON
El formato más común. Tus datos deben ser un array de objetos:
[
{
"id": "doc_001",
"text": "This is the first document to annotate.",
"source": "twitter",
"date": "2024-01-15"
},
{
"id": "doc_002",
"text": "This is the second document.",
"source": "reddit",
"date": "2024-01-16"
}
]Formato JSON Lines
Cada línea es un objeto JSON separado. Útil para conjuntos de datos grandes:
{"id": "doc_001", "text": "First document"}
{"id": "doc_002", "text": "Second document"}
{"id": "doc_003", "text": "Third document"}Formato CSV/TSV
Datos tabulares con encabezados:
id,text,source
doc_001,"This is the first document",twitter
doc_002,"This is the second document",redditConfiguración
Configuración Básica
Configura los archivos de datos y las asignaciones de campos en tu YAML:
data_files:
- "data/documents.json"
item_properties:
id_key: id # Field name for unique ID
text_key: text # Field name for content to annotateMúltiples Archivos de Datos
Combina múltiples fuentes de datos:
data_files:
- "data/batch_1.json"
- "data/batch_2.json"
- "data/batch_3.jsonl"Los archivos se procesan en orden y se combinan.
Tipos de Datos
Texto Plano
Contenido de texto simple:
{
"id": "1",
"text": "The product arrived quickly and works great!"
}Archivos Multimedia
Referencia imágenes, videos o audio:
{
"id": "1",
"image_path": "images/photo_001.jpg"
}item_properties:
id_key: id
image_key: image_pathDiálogos/Listas
Las listas se muestran automáticamente de forma horizontal:
{
"id": "1",
"text": "Option A,Option B,Option C"
}Pares de Texto
Para tareas de comparación:
{
"id": "pair_001",
"text": {
"A": "Response from Model A",
"B": "Response from Model B"
}
}Archivos HTML
Referencia archivos HTML almacenados en carpetas:
{
"id": "1",
"html_file": "html/document_001.html"
}Anotación Contextual
Incluye contexto junto con el texto principal:
{
"id": "1",
"text": "This is great!",
"context": "Previous message: How do you like the new feature?"
}item_properties:
id_key: id
text_key: text
context_key: contextConfiguración de Visualización
Opciones de Visualización de Listas
Controla cómo se muestran las listas y diccionarios:
list_as_text:
# Add prefixes to items
text_prefix: "A" # A., B., C. (or "1" for 1., 2., 3.)
# Display orientation
horizontal: true # Side-by-side (false for vertical)
# Randomization
randomize_values: true # Shuffle list items
randomize_keys: true # Shuffle dictionary keysContenido HTML
Habilita el renderizado de HTML en el texto:
html_content: true{
"id": "1",
"text": "<p>This is <strong>formatted</strong> text.</p>"
}Configuración de Salida
Directorio de Salida
Especifica dónde se guardan las anotaciones:
output_annotation_dir: "output/"Formato de Salida
Elige el formato de salida:
output_annotation_format: "json" # json, jsonl, csv, or tsvEstructura de Salida
Las anotaciones incluyen el ID del documento y las respuestas:
{
"id": "doc_001",
"user": "annotator_1",
"annotations": {
"sentiment": "Positive",
"confidence": 4
},
"timestamp": "2024-01-15T10:30:00Z"
}Tipos de Datos Especiales
Escalamiento Mejor-Peor
Para tareas de clasificación, usa elementos separados por comas:
{
"id": "1",
"text": "Item A,Item B,Item C,Item D"
}Argumentos Personalizados
Incluye campos adicionales para visualización o filtrado:
{
"id": "1",
"text": "Document content",
"category": "news",
"priority": "high",
"custom_field": "any value"
}Backend de Base de Datos
Para conjuntos de datos grandes, usa MySQL:
database:
type: mysql
host: localhost
database: potato_db
user: ${DB_USER}
password: ${DB_PASSWORD}Potato crea automáticamente las tablas necesarias en el primer inicio.
Validación de Datos
Potato valida tus datos al iniciar:
- Campo ID faltante - Todos los elementos necesitan identificadores únicos
- Campo de texto faltante - Los elementos necesitan contenido para anotar
- IDs duplicados - Todos los IDs deben ser únicos
- Archivo no encontrado - Verifica las rutas de los archivos de datos
Ejemplo Completo
task_name: "Document Classification"
task_dir: "."
port: 8000
# Data configuration
data_files:
- "data/documents.json"
item_properties:
id_key: id
text_key: text
context_key: metadata
# Display settings
list_as_text:
text_prefix: "1"
horizontal: false
# Output
output_annotation_dir: "output/"
output_annotation_format: "json"
# Annotation scheme
annotation_schemes:
- annotation_type: radio
name: category
description: "Select the document category"
labels:
- News
- Opinion
- Tutorial
- Other
allow_all_users: trueMejores Prácticas
1. Usa IDs Significativos
Facilita el seguimiento y la depuración:
{"id": "twitter_2024_001", "text": "..."}2. Mantén el Texto Conciso
Los textos largos ralentizan la anotación. Considera:
- Truncar a las partes clave
- Proporcionar resúmenes
- Usar contenedores con scroll
3. Incluye Metadatos
Ayuda con el filtrado y el análisis:
{
"id": "1",
"text": "Content",
"source": "twitter",
"date": "2024-01-15",
"language": "en"
}4. Valida Antes de Cargar
Comprueba tus datos sin conexión:
import json
with open('data.json') as f:
data = json.load(f)
# Check for required fields
for item in data:
assert 'id' in item, f"Missing id: {item}"
assert 'text' in item, f"Missing text: {item}"
# Check for duplicates
ids = [item['id'] for item in data]
assert len(ids) == len(set(ids)), "Duplicate IDs found"
print(f"Validated {len(data)} items")5. Respalda los Datos Originales
Mantén los datos crudos separados de las anotaciones para reproducibilidad.
6. Usa JSON Lines para Archivos Grandes
Más eficiente en memoria que arrays JSON:
# Convert JSON array to JSON Lines
cat data.json | jq -c '.[]' > data.jsonlLectura Adicional
- Carga desde Directorio de Datos - Carga desde directorios con observación en vivo
- Anotación de Diálogos - Visualización de datos multi-elemento
- Formatos de Exportación - Opciones de formato de salida
Para detalles de implementación, consulta la documentación fuente.