Skip to content

Anotação de Diálogo

Anote conversas no Potato com avaliações por turno, rótulos de segmento e exibição personalizada. Suporta diálogos com vários falantes, transcrições de chat e respostas encadeadas.

O Potato suporta a anotação de dados com vários itens, em que cada instância contém uma lista de elementos de texto. Isso é comumente usado para:

  • Anotação de diálogo: conversas com vários turnos
  • Comparação par a par: comparação de duas ou mais variantes de texto
  • Tarefas com múltiplos documentos: avaliação ou rotulagem de vários textos relacionados

Formato dos Dados

Dados de Entrada

Dados com vários itens são representados como uma lista de strings no 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 string na lista representa um item (por exemplo, um turno de diálogo, uma variante de documento).

Configuração

Configuração 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

Opções de Exibição

A configuração list_as_text controla como os itens da lista são exibidos:

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 Prefixo

OpçãoExemploMelhor Para
alphabetA. B. C.Comparações par a par, opções
number1. 2. 3.Turnos sequenciais, listas ordenadas
bullet. . .Itens não ordenados
none(sem prefixo)Diálogo com nomes de falantes no texto

Opções de Layout

OpçãoDescrição
horizontal: falseLayout vertical (padrão) - itens empilhados
horizontal: trueLayout lado a lado - para comparação par a par
alternating_shading: trueSombreia turnos alternados no diálogo

Exemplos de Configuração

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

Comparação Par a Par de Textos

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

Exemplo Prático

Um exemplo completo e funcional está disponível em project-hub/dialogue_analysis/:

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

Formato dos dados de exemplo:

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

Dicas

  1. Nomes dos Falantes: inclua os nomes dos falantes no texto (por exemplo, "Tom: Olá") ao usar text_list_prefix_type: none para diálogos

  2. Anotação de Segmentos: ao usar anotação de segmentos com dados de diálogo, os anotadores podem destacar texto dentro de qualquer um dos turnos exibidos

  3. Escolha do Prefixo:

    • Use none para diálogos em que os nomes dos falantes estão embutidos no texto
    • Use number quando a ordem da sequência importa
    • Use alphabet para tarefas de comparação par a par
  4. Legibilidade: ative alternating_shading em diálogos longos para ajudar os anotadores a acompanhar qual turno estão lendo

  5. Tarefas de Comparação: use horizontal: true com prefixos alphabet para comparação lado a lado

Leitura Complementar

Para detalhes de implementação, consulte a documentação de origem.