Datenformate
Unterstützte Datenformate und Strukturierung von Annotationsdaten.
Potato unterstützt mehrere Datenformate von Haus aus. Diese Anleitung erklärt, wie Sie Ihre Daten für die Annotation strukturieren.
From input file to exported labels
Unterstützte Formate
| Format | Erweiterung | Beschreibung |
|---|---|---|
| JSON | .json | Array von Objekten |
| JSON Lines | .jsonl | Ein JSON-Objekt pro Zeile |
| CSV | .csv | Durch Komma getrennte Werte |
| TSV | .tsv | Durch Tabulator getrennte Werte |
JSON-Format
Das gängigste Format. Ihre Daten sollten ein Array von Objekten sein:
[
{
"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"
}
]JSON-Lines-Format
Jede Zeile ist ein separates JSON-Objekt. Nützlich für große Datensätze:
{"id": "doc_001", "text": "First document"}
{"id": "doc_002", "text": "Second document"}
{"id": "doc_003", "text": "Third document"}CSV/TSV-Format
Tabellarische Daten mit Kopfzeilen:
id,text,source
doc_001,"This is the first document",twitter
doc_002,"This is the second document",redditKonfiguration
Grundeinrichtung
Konfigurieren Sie Datendateien und Feldzuordnungen in Ihrer YAML-Datei:
data_files:
- "data/documents.json"
item_properties:
id_key: id # Field name for unique ID
text_key: text # Field name for content to annotateMehrere Datendateien
Mehrere Datenquellen kombinieren:
data_files:
- "data/batch_1.json"
- "data/batch_2.json"
- "data/batch_3.jsonl"Dateien werden der Reihe nach verarbeitet und zusammengeführt.
Datentypen
Einfacher Text
Einfacher Textinhalt:
{
"id": "1",
"text": "The product arrived quickly and works great!"
}Mediendateien
Verweise auf Bilder, Videos oder Audio:
{
"id": "1",
"image_path": "images/photo_001.jpg"
}item_properties:
id_key: id
image_key: image_pathDialog/Listen
Listen werden automatisch horizontal dargestellt:
{
"id": "1",
"text": "Option A,Option B,Option C"
}Textpaare
Für Vergleichsaufgaben:
{
"id": "pair_001",
"text": {
"A": "Response from Model A",
"B": "Response from Model B"
}
}HTML-Dateien
Verweise auf HTML-Dateien in Ordnern:
{
"id": "1",
"html_file": "html/document_001.html"
}Kontextuelle Annotation
Kontext neben dem Haupttext einschließen:
{
"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: contextAnzeigeeinstellungen
Optionen für die Listendarstellung
Steuern Sie, wie Listen und Wörterbücher dargestellt werden:
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 keysHTML-Inhalt
HTML-Rendering in Text aktivieren:
html_content: true{
"id": "1",
"text": "<p>This is <strong>formatted</strong> text.</p>"
}Ausgabekonfiguration
Ausgabeverzeichnis
Angeben, wo Annotationen gespeichert werden:
output_annotation_dir: "output/"Ausgabeformat
Ausgabeformat wählen:
output_annotation_format: "json" # json, jsonl, csv, or tsvAusgabestruktur
Annotationen enthalten Dokument-ID und Antworten:
{
"id": "doc_001",
"user": "annotator_1",
"annotations": {
"sentiment": "Positive",
"confidence": 4
},
"timestamp": "2024-01-15T10:30:00Z"
}Spezielle Datentypen
Best-Worst Scaling
Für Rangordnungsaufgaben verwenden Sie durch Komma getrennte Elemente:
{
"id": "1",
"text": "Item A,Item B,Item C,Item D"
}Benutzerdefinierte Argumente
Zusätzliche Felder für Anzeige oder Filterung einschließen:
{
"id": "1",
"text": "Document content",
"category": "news",
"priority": "high",
"custom_field": "any value"
}Datenbank-Backend
Für große Datensätze, verwenden Sie MySQL:
database:
type: mysql
host: localhost
database: potato_db
user: ${DB_USER}
password: ${DB_PASSWORD}Potato erstellt beim ersten Start automatisch die erforderlichen Tabellen.
Datenvalidierung
Potato validiert Ihre Daten beim Start:
- Fehlendes ID-Feld – Alle Elemente benötigen eindeutige Bezeichner
- Fehlendes Textfeld – Elemente benötigen zu annotierenden Inhalt
- Doppelte IDs – Alle IDs müssen eindeutig sein
- Datei nicht gefunden – Überprüfen Sie die Pfade der Datendateien
Vollständiges Beispiel
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: trueBewährte Vorgehensweisen
1. Aussagekräftige IDs verwenden
Erleichtert Nachverfolgung und Fehlerbehebung:
{"id": "twitter_2024_001", "text": "..."}2. Text prägnant halten
Lange Texte verlangsamen die Annotation. Erwägen Sie:
- Kürzung auf die wesentlichen Abschnitte
- Bereitstellung von Zusammenfassungen
- Verwendung von Scroll-Containern
3. Metadaten einschließen
Hilft bei der Filterung und Analyse:
{
"id": "1",
"text": "Content",
"source": "twitter",
"date": "2024-01-15",
"language": "en"
}4. Vor dem Laden validieren
Überprüfen Sie Ihre Daten offline:
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. Originaldaten sichern
Halten Sie Rohdaten getrennt von Annotationen für die Reproduzierbarkeit.
6. JSON Lines für große Dateien verwenden
Speichereffizienter als JSON-Arrays:
# Convert JSON array to JSON Lines
cat data.json | jq -c '.[]' > data.jsonlWeiterführende Informationen
- Datenverzeichnis laden – Aus Verzeichnissen mit Live-Überwachung laden
- Dialog-Annotation – Anzeige von Mehrelement-Daten
- Exportformate – Optionen für Ausgabeformate
Implementierungsdetails finden Sie in der Quelldokumentation.