Skip to content

Annotation de dialogues

Annotez des conversations et du texte multi-éléments avec des options d'affichage spéciales.

Annotation de dialogues et de listes

Potato prend en charge l'annotation de données multi-éléments où chaque instance contient une liste d'éléments textuels. Ceci est couramment utilisé pour :

  • Annotation de dialogues : Conversations à plusieurs tours
  • Comparaison par paires : Comparaison de deux ou plusieurs variantes de texte
  • Tâches multi-documents : Évaluation ou étiquetage de plusieurs textes liés

Format de données

Données d'entrée

Les données multi-éléments sont représentées comme une liste de chaînes dans le champ text :

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!"]}

Chaque chaîne de la liste représente un élément (par exemple, un tour de dialogue, une variante de document).

Configuration

Configuration de base

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

Options d'affichage

La configuration list_as_text contrôle l'affichage des éléments de liste :

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

Types de préfixes

OptionExempleIdéal pour
alphabetA. B. C.Comparaisons par paires, options
number1. 2. 3.Tours séquentiels, listes ordonnées
bullet. . .Éléments non ordonnés
none(pas de préfixe)Dialogues avec noms de locuteurs dans le texte

Options de mise en page

OptionDescription
horizontal: falseMise en page verticale (défaut) - éléments empilés
horizontal: trueMise en page côte à côte - pour la comparaison par paires
alternating_shading: trueOmbre les tours alternés pour les dialogues

Exemples de configuration

Annotation de dialogues

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

Comparaison de textes par paires

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

Exemple fonctionnel

Un exemple fonctionnel complet est disponible dans project-hub/dialogue_analysis/ :

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

Format de données exemple :

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!"]}

Conseils

  1. Noms de locuteurs : Incluez les noms de locuteurs dans le texte (par ex. "Tom: Bonjour") lorsque vous utilisez text_list_prefix_type: none pour les dialogues

  2. Annotation de segments : Lors de l'utilisation de l'annotation de segments avec des données de dialogue, les annotateurs peuvent surligner du texte dans n'importe quel tour affiché

  3. Choix du préfixe :

    • Utilisez none pour les dialogues où les noms de locuteurs sont intégrés dans le texte
    • Utilisez number quand l'ordre séquentiel est important
    • Utilisez alphabet pour les tâches de comparaison par paires
  4. Lisibilité : Activez alternating_shading pour les longs dialogues afin d'aider les annotateurs à suivre quel tour ils lisent

  5. Tâches de comparaison : Utilisez horizontal: true avec les préfixes alphabet pour la comparaison côte à côte

Pour aller plus loin

Pour les détails d'implémentation, voir la documentation source.