Skip to content
beginnertext

Detecting Stance in Tweets

Classification of stance expressed in tweets toward specific targets as favor, against, or neither. Based on SemEval-2016 Task 6 (Stance Detection).

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/semeval/2016/task06-stance-detection
potato start config.yaml

Configuration File

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

yaml
# Detecting Stance in Tweets
# Based on Mohammad et al., SemEval 2016
# Paper: https://aclanthology.org/S16-1003/
# Dataset: http://alt.qcri.org/semeval2016/task6/
#
# This task asks annotators to classify the stance expressed in a tweet
# toward a given target (topic or entity) as favor, against, or neither.
#
# Stance Labels:
# - Favor: The tweet expresses support for the target
# - Against: The tweet expresses opposition to the target
# - Neither: The tweet does not clearly express a stance toward the target

annotation_task_name: "Detecting Stance in Tweets"
task_dir: "."

data_files:
  - sample-data.json

item_properties:
  id_key: "id"
  text_key: "text"

output_annotation_dir: "annotation_output/"
export_annotation_format: "jsonl"

port: 8000

annotation_schemes:
  - annotation_type: radio
    name: stance
    description: "What stance does this tweet express toward the target?"
    labels:
      - name: "Favor"
        tooltip: "The tweet expresses support for or positive stance toward the target"
        key_value: "1"
      - name: "Against"
        tooltip: "The tweet expresses opposition to or negative stance toward the target"
        key_value: "2"
      - name: "Neither"
        tooltip: "The tweet does not clearly express a stance, or is unrelated to the target"
        key_value: "3"

annotation_instructions: |
  You will be shown a tweet and a target topic or entity. Your task is to determine
  the stance of the tweet author toward the target. Note that stance is about the
  author's position, not sentiment -- a tweet can be negative in tone but still
  express favor toward the target.

user_config:
  allow_all_users: true
max_annotations_per_user: 50
num_annotators_per_item: 2

Sample Data

json
[
  {
    "id": "stance_001",
    "text": "Climate change is the biggest threat to our planet. We need urgent action now before it's too late.",
    "target": "Climate Change is a Real Concern"
  },
  {
    "id": "stance_002",
    "text": "The so-called climate crisis is just another excuse for government overreach and higher taxes.",
    "target": "Climate Change is a Real Concern"
  }
]

// ... and 8 more items

Dataset & paper

Mohammad et al., SemEval 2016

Citation (BibTeX)

bibtex
@inproceedings{mohammad-etal-2016-semeval,
    title = "{S}em{E}val-2016 Task 6: Detecting Stance in Tweets",
    author = "Mohammad, Saif and Kiritchenko, Svetlana and Sobhani, Parinaz and Zhu, Xiaodan and Cherry, Colin",
    booktitle = "Proceedings of the 10th International Workshop on Semantic Evaluation",
    year = "2016",
    publisher = "Association for Computational Linguistics",
    url = "https://aclanthology.org/S16-1003"
}

Details

Annotation Types

radio

Domain

SemEvalNLPStance DetectionSocial Media

Use Cases

Stance DetectionOpinion MiningSocial Media Analysis

Tags

semevalsemeval-2016shared-taskstance-detectiontwitteropiniontarget-stance

Found an issue or want to improve this design?

Open an Issue(opens in a new tab)