Skip to content

Anotación de Diálogos

Anota conversaciones y texto multi-elemento con opciones especiales de visualización.

Anotación de Diálogos y Listas

Potato soporta la anotación de datos multi-elemento donde cada instancia contiene una lista de elementos de texto. Esto se usa comúnmente para:

  • Anotación de diálogos: Conversaciones con múltiples turnos
  • Comparación por pares: Comparar dos o más variantes de texto
  • Tareas multi-documento: Calificar o etiquetar múltiples textos relacionados

Formato de Datos

Datos de Entrada

Los datos multi-elemento se representan como una lista de cadenas en el campo 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!"]}

Cada cadena en la lista representa un elemento (por ejemplo, un turno de diálogo, una variante de documento).

Configuración

Configuración Básica

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

Opciones de Visualización

La configuración list_as_text controla cómo se muestran los elementos de la lista:

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

Tipos de Prefijo

OpciónEjemploMejor Para
alphabetA. B. C.Comparaciones por pares, opciones
number1. 2. 3.Turnos secuenciales, listas ordenadas
bullet. . .Elementos sin orden
none(sin prefijo)Diálogo con nombres de hablantes en el texto

Opciones de Diseño

OpciónDescripción
horizontal: falseDiseño vertical (predeterminado) - elementos apilados
horizontal: trueDiseño lado a lado - para comparación por pares
alternating_shading: trueSombrea cada otro turno para diálogos

Configuraciones de Ejemplo

Anotación de Diálogos

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

Comparación de Textos por Pares

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

Ejemplo Funcional

Un ejemplo funcional completo está disponible en project-hub/dialogue_analysis/:

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

Formato de datos de ejemplo:

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

Consejos

  1. Nombres de Hablantes: Incluye nombres de hablantes en el texto (por ejemplo, "Tom: Hola") cuando uses text_list_prefix_type: none para diálogos

  2. Anotación de Segmentos: Cuando uses anotación de segmentos con datos de diálogo, los anotadores pueden resaltar texto dentro de cualquiera de los turnos mostrados

  3. Elección de Prefijo:

    • Usa none para diálogos donde los nombres de hablantes están incrustados en el texto
    • Usa number cuando el orden secuencial importa
    • Usa alphabet para tareas de comparación por pares
  4. Legibilidad: Habilita alternating_shading para diálogos largos para ayudar a los anotadores a seguir qué turno están leyendo

  5. Tareas de Comparación: Usa horizontal: true con prefijos alphabet para comparación lado a lado

Lectura Adicional

Para detalles de implementación, consulta la documentación fuente.