Skip to content

Textannotation

Ein vollständiger Leitfaden zur Textannotation: Klassifikation, Mehrfach-Tagging, Bewertung und Freitext, und wie du jede dieser Aufgaben in Potato mit fertigem Config-Code baust.

Textannotation heißt, geschriebene Sprache zu labeln: Dokumente in Kategorien einsortieren, die Themen eines Artikels taggen, einen Abschnitt nach Qualität bewerten oder eine Korrektur schreiben. Es ist die häufigste Annotationsaufgabe im Natural Language Processing, und dafür wurde Potato ursprünglich gebaut. Dieser Leitfaden behandelt Aufgaben auf Dokumentebene; zum Markieren von Bereichen innerhalb eines Textes siehe Span-Annotation.

Die Textaufgaben im Überblick

  • Dokumentklassifikation: ein Label für den ganzen Text (Textklassifikation).
  • Mehrfach-Tagging: mehrere Labels gleichzeitig, etwa Themen oder Inhaltswarnungen.
  • Bewerten und Einstufen: eine Position auf einer Skala, etwa Qualität oder die Intensität eines Sentiments.
  • Freitext: eine geschriebene Antwort, Paraphrase oder Korrektur.

Klassifikation: ein Label pro Dokument

Das Arbeitspferd der Textannotation. Nimm radio, wenn sich die Kategorien gegenseitig ausschließen:

yaml
annotation_schemes:
  - annotation_type: radio
    name: sentiment
    description: "What is the overall sentiment of this review?"
    labels: [Positive, Negative, Neutral]
    sequential_key_binding: true

sequential_key_binding legt die Labels auf die Tasten 1, 2, 3, sodass die Annotierenden die Hände auf der Tastatur lassen. Bei Tausenden von Elementen macht das viel aus. Das Design sentiment analysis zeigt es live an einem lauffähigen Beispiel.

Mehrfach-Labels: mehrere Tags auf einmal

Wenn mehr als ein Label passen kann, nimm multiselect. Begrenze die Zahl der Auswahlen passend zu deinen Richtlinien:

yaml
annotation_schemes:
  - annotation_type: multiselect
    name: content_warnings
    description: "Select every content warning that applies."
    labels: [Violence, Profanity, Sexual content, Self-harm, None]

Content-Moderation ist der Klassiker unter den Mehrfach-Label-Aufgaben; das Design toxicity detection verbindet eine Kategorie mit einem markierten Span.

Text auf einer Skala bewerten

Um den Grad statt einer Kategorie zu erfassen, nimm eine Likert-Skala:

yaml
annotation_schemes:
  - annotation_type: likert
    name: helpfulness
    description: "How helpful is this answer?"
    size: 5
    min_label: "Not helpful"
    max_label: "Very helpful"

Zu den Fallstricken beim Skalenentwurf, etwa Zustimmungstendenz und der Frage, wie viele Punkte sinnvoll sind, siehe Bewertungsskalen.

Freitext und Korrekturen

Manchmal ist das nützlichste Label ein Satz, den die annotierende Person selbst schreibt: eine Begründung, eine Umformulierung oder eine Transkription. Kombiniere ihn mit einer Kategorie und blende ihn nur ein, wenn er gebraucht wird:

yaml
annotation_schemes:
  - annotation_type: radio
    name: factuality
    description: "Is the claim supported by the source?"
    labels: [Supported, Contradicted, Not enough info]
  - annotation_type: text
    name: evidence
    description: "Quote the sentence that supports your choice."
    label_requirement:
      required: false

Zu konsistenten Textlabels kommen

Text ist mehrdeutig, Konsistenz entsteht also im Prozess drumherum, nicht in der Oberfläche:

  1. Schreib knappe Annotationsrichtlinien mit einer Option für nicht entscheidbar.
  2. Lass mehrere Annotierende auf denselben Elementen überlappen.
  3. Verfolge die Inter-Annotator-Übereinstimmung und kläre Uneinigkeiten.
  4. Beschleunige große Aufträge mit Vorannotation durch LLMs und prüfe die Vorschläge von Hand nach.

Weiterführende Lektüre