Skip to content

Datenformate für die Annotation entwerfen

Wie du Eingabedaten (JSON, JSONL, CSV) für ein Annotationsprojekt strukturierst, welche Felder Potato erwartet und wie du einen sauberen Export in Trainingspipelines vorbereitest.

Gute Annotation beginnt bei gut strukturierten Eingabedaten. Jedes Element braucht eine stabile eindeutige Kennung und den zu labelnden Inhalt; alles andere ist optionaler Kontext. Wer das am Anfang richtig macht, erspart sich schmerzhafte Wiederholungsläufe, denn Annotationen hängen an deinen Element-IDs.

Übliche Austauschformate sind JSON, JSON Lines (ein Objekt pro Zeile, gut für große Datensätze) und CSV. Potato liest alle drei. Die vollständige Referenz steht unter Datenformate.

Das Minimum pro Element

  • Eine eindeutige ID, die sich nie ändert. Annotationen werden unter dieser ID gespeichert; nummerierst du Elemente mitten im Projekt neu, verlierst du die Verbindung zu den vorhandenen Labels.
  • Den zu annotierenden Inhalt: ein Textfeld, eine Bild-URL, einen Audiopfad, ein zeitlich ausgerichtetes Transkript oder einen strukturierten Trace.

Eine JSONL-Datei für eine Textaufgabe sieht so aus:

json
{"id": "rev_001", "text": "The battery lasts all day. Highly recommend."}
{"id": "rev_002", "text": "Stopped working after a week."}

Welche Schlüssel verwendet werden, sagst du Potato so:

yaml
item_properties:
  id_key: id
  text_key: text
 
data_files:
  - "data/reviews.jsonl"

Kontext mitführen, aber von den Labels getrennt halten

Zusätzliche Felder, etwa eine Quell-URL, ein Zeitstempel oder ein Modellname, können an jedem Element mitreisen und den Annotierenden angezeigt werden, ohne selbst zu Labels zu werden. Benenne sie eindeutig, dann ist der Export später leicht zu lesen.

Transkriptdateien zählen ebenfalls als Eingabe

Bei gesprochenen Inhalten musst du nichts vorab in ein Textfeld pressen. Potato liest 21 Transkript- und Untertitelformate, darunter Whisper- und WhisperX-JSON, Deepgram, AssemblyAI, AWS Transcribe, SRT, WebVTT, TTML, Praat TextGrid und ELAN EAF. Eine Datendatei kann direkt auf die Dateien zeigen, die dein ASR-Werkzeug geschrieben hat:

json
{"id": "int_001", "conversation": {"audio": "media/int_001.mp3",
                                   "transcript": "media/int_001.srt"}}

Erkannt wird anhand des Dateiinhalts statt der Endung, dasselbe Transkript funktioniert also eingebettet wie auch als separate Datei. Die vollständige Liste und das normalisierte Turn-Modell, in das alles umgewandelt wird, findest du unter Transkriptformate.

Plane den Export, bevor du labelst

Entscheide früh, wie die gelabelten Daten in deine Pipeline gelangen. Potato exportiert nach JSON, JSONL und CSV sowie in ML-nahe Formate wie CoNLL für Sequenzlabeling, Hugging Face Datasets, spaCy und COCO/YOLO für Vision. Legst du das Zielformat vorab fest, weißt du jetzt schon, welche Felder und welches ID-Schema du brauchst. Siehe Annotationen für ML exportieren.

yaml
output_annotation_dir: "annotation_output/"
output_annotation_format: "jsonl"

Weiterführende Lektüre