Skip to content
intermediatetext

Dialogue Act Labeling

Classify utterances in conversations by their communicative function (question, statement, request, etc.).

Try it live — no install

Boot the real Potato server in your browser (WebAssembly) and annotate with this exact config. Nothing leaves your machine.

Run live in your browser

Get This Design

View on GitHub(opens in a new tab)

Clone or download from the repository

Quick start:

bash
git clone https://github.com/davidjurgens/potato-showcase.git
cd potato-showcase/templates/text/dialogue-act-labeling
potato start config.yaml

Configuration File

yaml
# Dialogue Act Labeling Configuration
# Classify utterances by communicative function

task_dir: "."
annotation_task_name: "Dialogue Act Labeling"

data_files:
  - "data/dialogue_turns.json"

item_properties:
  id_key: "id"
  text_key: "display"
  text_display_key: "display"

user_config:
  allow_all_users: true

annotation_schemes:
  - annotation_type: "radio"
    name: "dialogue_act"
    description: "What is the primary function of this utterance?"
    labels:
      - name: "Statement"
        tooltip: "Provides information or expresses an opinion"
        key_value: "s"
      - name: "Question"
        tooltip: "Requests information"
        key_value: "q"
      - name: "Directive"
        tooltip: "Request, command, or suggestion for action"
        key_value: "d"
      - name: "Commissive"
        tooltip: "Promise, offer, or commitment"
        key_value: "c"
      - name: "Acknowledgment"
        tooltip: "Shows understanding or agreement (yes, okay, uh-huh)"
        key_value: "a"
      - name: "Greeting"
        tooltip: "Social greeting or farewell"
        key_value: "g"
      - name: "Expressive"
        tooltip: "Expresses emotion (thanks, sorry, wow)"
        key_value: "e"
      - name: "Other"
        tooltip: "None of the above"
        key_value: "o"

  - annotation_type: "radio"
    name: "question_type"
    description: "If this is a question, what type?"
    labels:
      - name: "Yes/No Question"
      - name: "Wh-Question"
      - name: "Choice Question"
      - name: "Tag Question"
      - name: "Rhetorical Question"
      - name: "N/A (not a question)"
    show_if:
      field: "dialogue_act"
      value: "Question"

  - annotation_type: "multiselect"
    name: "secondary_acts"
    description: "Any secondary dialogue acts?"
    labels:
      - name: "Humor/Sarcasm"
      - name: "Politeness marker"
      - name: "Topic shift"
      - name: "Clarification"
      - name: "Elaboration"
      - name: "Correction"

output: "annotation_output/"

output_annotation_dir: "annotation_output/"
output_annotation_format: "json"

Sample Data

json
[
  {
    "id": "da_001",
    "speaker": "A",
    "utterance": "Hey, how's it going?",
    "context": "[Start of conversation]",
    "display": "**Context:** [Start of conversation]\n\n**Speaker A:** Hey, how's it going?"
  },
  {
    "id": "da_002",
    "speaker": "B",
    "utterance": "Pretty good! I just finished that project we talked about.",
    "context": "A: Hey, how's it going?",
    "display": "**Context:** A: Hey, how's it going?\n\n**Speaker B:** Pretty good! I just finished that project we talked about."
  }
]

// ... and 2 more items

Details

Annotation Types

multiselectradio

Domain

nlpconversational-ai

Use Cases

dialogue-understandingconversation-analysis

Tags

dialogueconversationspeech-actsclassificationchat

Found an issue or want to improve this design?

Open an Issue(opens in a new tab)