Emotion Cause Extraction (RECCON)
Extract emotion causes from conversational text based on RECCON (Poria et al., EMNLP 2020). Identify which utterances and specific spans caused an emotion expressed in dialogue.
text annotation
Configuration Fileconfig.yaml
# Emotion Cause Extraction (RECCON)
# Based on Poria et al., EMNLP 2020
# Paper: https://aclanthology.org/2020.emnlp-main.431/
# Dataset: https://github.com/declare-lab/RECCON
#
# RECCON focuses on recognizing emotion causes in conversations.
# For each utterance expressing an emotion, annotators identify:
# 1. The emotion being expressed
# 2. Which prior utterance(s) contain the cause
# 3. The specific span within those utterances that is causal
#
# Cause Types:
# - Self-contagion: Cause is in the same speaker's prior utterance
# - Inter-personal: Cause is in another speaker's utterance
# - No explicit cause: Emotion has no identifiable textual cause
#
# Annotation Guidelines:
# 1. First identify the target emotion in the highlighted utterance
# 2. Look backwards in the conversation for potential causes
# 3. Mark specific spans that directly trigger the emotion
# 4. A cause must be NECESSARY for the emotion (counterfactual test)
# 5. Multiple causes can exist for a single emotion
port: 8000
server_name: localhost
task_name: "Emotion Cause Extraction"
data_files:
- sample-data.json
id_key: id
text_key: dialogue
output_file: annotations.json
annotation_schemes:
# Step 1: Identify the emotion in the target utterance
- annotation_type: radio
name: emotion
description: "What emotion is expressed in the highlighted (last) utterance?"
labels:
- "Happiness"
- "Sadness"
- "Anger"
- "Fear"
- "Surprise"
- "Disgust"
- "Neutral"
tooltips:
"Happiness": "Joy, excitement, contentment, satisfaction, amusement"
"Sadness": "Sorrow, disappointment, grief, melancholy"
"Anger": "Frustration, irritation, annoyance, rage"
"Fear": "Anxiety, worry, nervousness, terror"
"Surprise": "Astonishment, amazement, shock (positive or negative)"
"Disgust": "Revulsion, disapproval, contempt"
"Neutral": "No clear emotion expressed"
# Step 2: Identify cause location
- annotation_type: radio
name: cause_type
description: "Where is the cause of this emotion located?"
labels:
- "In speaker's own prior utterance"
- "In other speaker's utterance"
- "In multiple utterances"
- "No explicit cause in text"
tooltips:
"In speaker's own prior utterance": "Self-contagion: the speaker's earlier words triggered their current emotion"
"In other speaker's utterance": "Inter-personal: another speaker's words triggered this emotion"
"In multiple utterances": "The cause spans multiple prior utterances"
"No explicit cause in text": "The emotion has no identifiable textual cause in the conversation"
# Step 3: Mark causal spans
- annotation_type: span
name: causal_spans
description: "Highlight the specific text spans that CAUSED the emotion"
labels:
- "Cause"
label_colors:
"Cause": "#ef4444"
tooltips:
"Cause": "The specific words/phrases that directly triggered the emotion (necessary condition)"
allow_overlapping: false
allow_all_users: true
instances_per_annotator: 50
annotation_per_instance: 2
allow_skip: true
skip_reason_required: false
Sample Datasample-data.json
[
{
"id": "ece_001",
"dialogue": "Speaker A: I heard you got the promotion! Congratulations!\nSpeaker B: Thank you so much! I've been working towards this for three years.\n[TARGET] Speaker B: I'm absolutely thrilled - this is a dream come true!"
},
{
"id": "ece_002",
"dialogue": "Speaker A: Did you hear? They cancelled the concert we had tickets for.\nSpeaker B: What? We've been planning this for months!\n[TARGET] Speaker B: I can't believe it. I'm so disappointed."
}
]
// ... and 6 more itemsGet This Design
Clone or download from the repository
Quick start:
git clone https://github.com/davidjurgens/potato-showcase.git cd potato-showcase/emotion-cause-extraction potato start config.yaml
Details
Annotation Types
Domain
Use Cases
Tags
Found an issue or want to improve this design?
Open an IssueRelated Designs
Dialogue Relation Extraction (DialogRE)
Extract relations between entities in dialogue. Based on Yu et al., ACL 2020. Identify 36 relation types between speakers and entities mentioned in conversations.
News Headline Emotion Roles (GoodNewsEveryone)
Annotate emotions in news headlines with semantic roles. Based on Bostan et al., LREC 2020. Identify emotion, experiencer, cause, target, and textual cue.
Coreference Resolution (OntoNotes)
Link pronouns and noun phrases to the entities they refer to in text. Based on the OntoNotes coreference annotation guidelines and CoNLL shared tasks. Identify mention spans and cluster coreferent mentions together.