Skip to content

Dialogannotation

Gespräche und mehrteilige Texte mit speziellen Anzeigeoptionen annotieren.

Potato unterstützt die Annotation von mehrteiligen Daten, bei denen jede Instanz eine Liste von Textelementen enthält. Dies wird häufig verwendet für:

  • Dialogannotation: Gespräche mit mehreren Gesprächszügen
  • Paarweiser Vergleich: Vergleich von zwei oder mehr Textvarianten
  • Mehrdokument-Aufgaben: Bewertung oder Beschriftung mehrerer verwandter Texte

Datenformat

Eingabedaten

Mehrteilige Daten werden als Liste von Zeichenketten im Feld text dargestellt:

json
{"id": "conv_001", "text": ["Tom: Isn't this awesome?!", "Sam: Yes! I like you!", "Tom: Great!", "Sam: Awesome! Let's party!"]}
{"id": "conv_002", "text": ["Tom: I am so sorry for that", "Sam: No worries", "Tom: Thanks for your understanding!"]}

Jede Zeichenkette in der Liste repräsentiert ein Element (z. B. einen Gesprächszug, eine Dokumentvariante).

Konfiguration

Grundlegende Einrichtung

yaml
# Data configuration
data_files:
  - data/dialogues.json
 
item_properties:
  id_key: id
  text_key: text
 
# Configure list display
list_as_text:
  text_list_prefix_type: none  # No prefix since speaker names are in text
  alternating_shading: true    # Shade every other turn for readability
 
# Annotation schemes
annotation_schemes:
  - annotation_type: radio
    name: sentiment
    description: "What is the overall sentiment of this conversation?"
    labels:
      - positive
      - neutral
      - negative

Anzeigeoptionen

Die list_as_text-Konfiguration steuert, wie Listenelemente angezeigt werden:

yaml
list_as_text:
  text_list_prefix_type: alphabet  # Prefix type for items
  horizontal: false                # Layout direction
  alternating_shading: false       # Shade alternate turns

Präfixtypen

OptionBeispielAm besten geeignet für
alphabetA. B. C.Paarweise Vergleiche, Optionen
number1. 2. 3.Sequenzielle Züge, geordnete Listen
bullet• • •Ungeordnete Elemente
none(kein Präfix)Dialog mit Sprechernamen im Text

Layout-Optionen

OptionBeschreibung
horizontal: falseVertikales Layout (Standard) - Elemente übereinander
horizontal: trueNebeneinander-Layout - für paarweisen Vergleich
alternating_shading: trueJeden zweiten Zug für Dialog schattieren

Beispielkonfigurationen

Dialogannotation

yaml
annotation_task_name: Dialogue Analysis
 
data_files:
  - data/dialogues.json
 
item_properties:
  id_key: id
  text_key: text
 
list_as_text:
  text_list_prefix_type: none
  alternating_shading: true
 
annotation_schemes:
  - annotation_type: span
    name: certainty
    description: Highlight phrases expressing certainty or uncertainty
    labels:
      - certain
      - uncertain
    sequential_key_binding: true
 
  - annotation_type: radio
    name: sentiment
    description: What sentiment does the conversation hold?
    labels:
      - positive
      - neutral
      - negative
    sequential_key_binding: true

Paarweiser Textvergleich

yaml
annotation_task_name: Text Comparison
 
data_files:
  - data/pairs.json
 
item_properties:
  id_key: id
  text_key: text
 
list_as_text:
  text_list_prefix_type: alphabet
  horizontal: true
 
annotation_schemes:
  - annotation_type: radio
    name: preference
    description: Which text is better?
    labels:
      - A is better
      - B is better
      - Equal

Funktionierendes Beispiel

Ein vollständiges funktionierendes Beispiel ist unter project-hub/dialogue_analysis/ verfügbar:

bash
python potato/flask_server.py start project-hub/dialogue_analysis/configs/dialogue-analysis.yaml -p 8000

Beispiel-Datenformat:

json
{"id":"1","text":["Tom: Isn't this awesome?!", "Sam: Yes! I like you!", "Tom: great!", "Sam: Awesome! Let's party!"]}
{"id":"2","text":["Tom: I am so sorry for that", "Sam: No worries", "Tom: thanks for your understanding!"]}

Tipps

  1. Sprechernamen: Sprechernamen im Text einschließen (z. B. „Tom: Hallo"), wenn text_list_prefix_type: none für Dialog verwendet wird

  2. Spannen-Annotation: Bei Verwendung von Spannen-Annotation mit Dialogdaten können Annotatoren Text in jedem der angezeigten Züge hervorheben

  3. Präfixauswahl:

    • none für Dialog verwenden, wenn Sprechernamen im Text eingebettet sind
    • number verwenden, wenn die Reihenfolge wichtig ist
    • alphabet für paarweise/Vergleichsaufgaben verwenden
  4. Lesbarkeit: alternating_shading für lange Dialoge aktivieren, um Annotatoren zu helfen, den aktuellen Zug zu verfolgen

  5. Vergleichsaufgaben: horizontal: true mit alphabet-Präfixen für nebeneinander liegende Vergleiche verwenden

Weiterführende Lektüre

Implementierungsdetails sind in der Quelldokumentation zu finden.