Skip to content
Showcase/Tweet Emotion Intensity via Best-Worst Scaling (multilingual)
intermediatetext

Tweet Emotion Intensity via Best-Worst Scaling (multilingual)

Rate the intensity (degree) of emotion in tweets using Best-Worst Scaling. Each item is a 4-tuple of tweets that all convey the same emotion (anger, fear, joy, or sadness); annotators pick the tweet showing the MOST and the LEAST of that emotion, and real-valued intensity scores are derived from best-minus-worst counts. This is the annotation design behind the WASSA-2017 Emotion Intensity (EmoInt) dataset (Mohammad & Bravo-Marquez, 2017), later extended to Arabic and Spanish in SemEval-2018 Task 1. Sample data includes English, Arabic, and Spanish tuples.

Submit

Configuration Fileconfig.yaml

This Potato config reproduces the annotation task. Save it as config.yaml and run potato start config.yaml to try it.

yaml
# Tweet Emotion Intensity via Best-Worst Scaling (multilingual)
# Based on Mohammad & Bravo-Marquez, "WASSA-2017 Shared Task on Emotion
# Intensity" (EmoInt), extended to Arabic and Spanish in SemEval-2018 Task 1
# ("Affect in Tweets", Mohammad, Bravo-Marquez, Salameh & Kiritchenko).
#
# Best-Worst Scaling (BWS / MaxDiff) annotation design:
#   - Each item is a tuple of FOUR tweets that all express the SAME emotion.
#   - The target emotion (anger, fear, joy, or sadness) is stated per item.
#   - The annotator selects the tweet with the HIGHEST degree of that emotion
#     and the tweet with the LOWEST degree of it.
#   - Every tweet appears in several different 4-tuples. A real-valued
#     intensity score in [0, 1] is later computed per tweet as
#     (proportion chosen most) - (proportion chosen least). BWS produces
#     more reliable intensity scores than direct 0-100 rating scales.
#
# Multilingual note: the same design was applied to English, Arabic, and
# Spanish tweets. Judge intensity in the language of the tuple; do not
# compare across languages within a single item (each tuple is one language).
#
# Annotation guidelines:
#   1. Read all four tweets before deciding.
#   2. Judge the intensity of the STATED emotion only, not overall sentiment.
#   3. "Most" = the author most strongly feels/expresses the emotion;
#      "Least" = the emotion is present but weakest of the four.
#   4. Consider emotion words, intensifiers, emphasis, emoji, and hashtags.
#   5. Use Skip if you cannot read the language of the tuple.

annotation_task_name: "Tweet Emotion Intensity (BWS)"
task_dir: "."

data_files:
  - sample-data.json

item_properties:
  id_key: "id"
  text_key: "prompt"
  text_display_key: "prompt"
  list_display_key: "options"

output_annotation_dir: "annotation_output/"
output_annotation_format: "json"

annotation_schemes:
  - annotation_type: radio
    name: most_intense
    description: "Which tweet expresses the MOST of the stated emotion?"
    labels:
      - "Tweet 1"
      - "Tweet 2"
      - "Tweet 3"
      - "Tweet 4"

  - annotation_type: radio
    name: least_intense
    description: "Which tweet expresses the LEAST of the stated emotion?"
    labels:
      - "Tweet 1"
      - "Tweet 2"
      - "Tweet 3"
      - "Tweet 4"

  - annotation_type: radio
    name: confidence
    description: "How confident are you in these two choices?"
    labels:
      - name: "High"
        tooltip: "Clear difference in intensity between the tweets"
      - name: "Medium"
        tooltip: "Some judgment required"
      - name: "Low"
        tooltip: "Tweets are very close in intensity"

allow_all_users: true
instances_per_annotator: 100
annotation_per_instance: 4
allow_skip: true
skip_reason_required: false

Sample Datasample-data.json

json
[
  {
    "id": "ei_en_anger_001",
    "emotion": "anger",
    "language": "English",
    "prompt": "TARGET EMOTION: ANGER (English). Which tweet expresses the most vs. least anger?\n\nTweet 1: This is mildly annoying, wish the bus were on time.\nTweet 2: Absolutely LIVID. They cancelled my flight AGAIN with zero notice. #furious\nTweet 3: Not thrilled about the parking ticket but whatever.\nTweet 4: I am so done with this company, worst service of my life, never again!!!",
    "options": [
      "This is mildly annoying, wish the bus were on time.",
      "Absolutely LIVID. They cancelled my flight AGAIN with zero notice. #furious",
      "Not thrilled about the parking ticket but whatever.",
      "I am so done with this company, worst service of my life, never again!!!"
    ]
  },
  {
    "id": "ei_en_joy_002",
    "emotion": "joy",
    "language": "English",
    "prompt": "TARGET EMOTION: JOY (English). Which tweet expresses the most vs. least joy?\n\nTweet 1: Nice day out, the weather is pleasant.\nTweet 2: BEST DAY OF MY LIFE!!! We got engaged!!! I can't stop crying happy tears 😭❤️\nTweet 3: Coffee was decent this morning, small win.\nTweet 4: So happy my sister is visiting this weekend, been looking forward to it!",
    "options": [
      "Nice day out, the weather is pleasant.",
      "BEST DAY OF MY LIFE!!! We got engaged!!! I can't stop crying happy tears 😭❤️",
      "Coffee was decent this morning, small win.",
      "So happy my sister is visiting this weekend, been looking forward to it!"
    ]
  }
]

// ... and 6 more items

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

Clone or download from the repository

Quick start:

git clone https://github.com/davidjurgens/potato-showcase.git
cd potato-showcase/text/emotion-sentiment/tweet-emotion-intensity-bws
potato start config.yaml

Dataset & paper

Mohammad & Bravo-Marquez, WASSA 2017

Citation (BibTeX)

bibtex
@inproceedings{mohammad-bravo-marquez-2017-wassa,
    title = "{WASSA}-2017 Shared Task on Emotion Intensity",
    author = "Mohammad, Saif and Bravo-Marquez, Felipe",
    booktitle = "Proceedings of the 8th Workshop on Computational Approaches to Subjectivity, Sentiment and Social Media Analysis",
    month = sep,
    year = "2017",
    address = "Copenhagen, Denmark",
    publisher = "Association for Computational Linguistics",
    url = "https://aclanthology.org/W17-5205",
    pages = "34--49"
}

Details

Annotation Types

radio

Domain

NLPAffective ComputingSocial MediaMultilingual

Use Cases

Emotion IntensityBest-Worst ScalingMultilingual Emotion

Tags

best-worst-scalingmaxdiffemotion-intensityemointwassa2017multilingualarabicspanishtweetsmohammad

Found an issue or want to improve this design?

Open an Issue