Emotion Detection (SemEval-2018 Task 1)
Multi-label emotion classification with intensity ratings based on SemEval-2018 Task 1. Annotate text for emotions (anger, anticipation, disgust, fear, joy, love, optimism, pessimism, sadness, surprise, trust) with intensity scales.
Configuration Fileconfig.yaml
# Emotion Detection (SemEval-style)
# Based on SemEval shared tasks for emotion detection
#
# This configuration supports multi-label emotion classification
# with optional intensity ratings for detected emotions.
#
# Emotion Taxonomy (Ekman's basic emotions):
# - Joy: Happiness, pleasure, contentment, elation
# - Sadness: Grief, sorrow, melancholy, disappointment
# - Fear: Anxiety, worry, terror, apprehension
# - Anger: Frustration, irritation, rage, annoyance
# - Surprise: Astonishment, amazement (can be positive or negative)
# - Disgust: Revulsion, aversion, distaste
#
# Annotation Guidelines:
# 1. Read the entire text before making judgments
# 2. Select ALL emotions that are expressed or evoked
# 3. An emotion is "expressed" if the author conveys feeling it
# 4. An emotion is "evoked" if the text would cause readers to feel it
# 5. Multiple emotions can co-occur (e.g., sad and angry)
# 6. "Neutral" should only be selected if NO emotion is present
# 7. For intensity, consider strength of emotional language
annotation_task_name: "Emotion Detection"
task_dir: "."
data_files:
- sample-data.json
item_properties:
id_key: "id"
text_key: "text"
output_annotation_dir: "annotation_output/"
output_annotation_format: "json"
annotation_schemes:
# Step 1: Multi-label emotion classification
- annotation_type: multiselect
name: emotions
description: "Select ALL emotions expressed or evoked by this text (select multiple if applicable)"
labels:
- "Joy"
- "Sadness"
- "Fear"
- "Anger"
- "Surprise"
- "Disgust"
- "Neutral"
label_colors:
"Joy": "#22c55e"
"Sadness": "#3b82f6"
"Fear": "#8b5cf6"
"Anger": "#ef4444"
"Surprise": "#f59e0b"
"Disgust": "#84cc16"
"Neutral": "#9ca3af"
tooltips:
"Joy": "Happiness, pleasure, contentment, elation, amusement, or positive excitement"
"Sadness": "Grief, sorrow, melancholy, disappointment, or loneliness"
"Fear": "Anxiety, worry, terror, apprehension, or nervousness about potential threats"
"Anger": "Frustration, irritation, rage, annoyance, or hostility"
"Surprise": "Astonishment, amazement, or unexpectedness (can be positive or negative)"
"Disgust": "Revulsion, aversion, distaste, or strong disapproval"
"Neutral": "No discernible emotion - factual or emotionally flat content"
min_selections: 1
max_selections: 7
# Step 2: Intensity rating for primary emotion
- annotation_type: likert
name: intensity
description: "How intense is the strongest emotion in this text?"
min_value: 1
max_value: 5
labels:
1: "Very weak"
2: "Weak"
3: "Moderate"
4: "Strong"
5: "Very strong"
tooltips:
1: "Barely perceptible emotion, subtle hints"
2: "Mild emotional content, understated"
3: "Clear but not overwhelming emotion"
4: "Strong emotional language, clearly intense"
5: "Extremely intense, powerful emotional expression"
# Step 3: Confidence in annotation
- annotation_type: likert
name: confidence
description: "How confident are you in your emotion labels?"
min_value: 1
max_value: 5
labels:
1: "Very uncertain"
2: "Somewhat uncertain"
3: "Moderately confident"
4: "Confident"
5: "Very confident"
allow_all_users: true
instances_per_annotator: 100
annotation_per_instance: 3
allow_skip: true
skip_reason_required: false
Sample Datasample-data.json
[
{
"id": "emo_001",
"text": "I just got accepted into my dream university! I can't believe it - I've been waiting for this moment for years and now it's finally happening!"
},
{
"id": "emo_002",
"text": "My grandmother passed away last night. She was the kindest person I've ever known, and I don't know how to go on without her."
}
]
// ... and 8 more itemsGet This Design
Clone or download from the repository
Quick start:
git clone https://github.com/davidjurgens/potato-showcase.git cd potato-showcase/text/emotion-sentiment/semeval-emotion-detection potato start config.yaml
Details
Annotation Types
Domain
Use Cases
Tags
Found an issue or want to improve this design?
Open an IssueRelated Designs
AnnoMI Counselling Dialogue Annotation
Annotation of motivational interviewing counselling dialogues based on the AnnoMI dataset. Annotators label therapist and client utterances for MI techniques (open questions, reflections, affirmations) and client change talk (sustain talk, change talk), with quality ratings for therapeutic interactions.
Clickbait Detection (Webis Clickbait Corpus)
Classify headlines and social media posts as clickbait or non-clickbait based on the Webis Clickbait Corpus. Identify manipulative content designed to attract clicks through sensationalism, curiosity gaps, or misleading framing.
Conversation Quality Attributes
Dialogue quality assessment based on controllable dialogue generation research (See et al., NAACL 2019). Annotators evaluate conversation turns for engagement quality, rate overall conversation quality, and identify specific dialogue attributes.