Skip to content
このページはまだお使いの言語に翻訳されていません。英語版を表示しています。

Dialogannotation

Gespräche und mehrteilige Texte mit speziellen Anzeigeoptionen annotieren.

Dialog- und Listenannotation

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.