HatEval - Multilingual Detection of Hate Speech Against Immigrants and Women
Detection and classification of hate speech targeting immigrants and women on Twitter, including fine-grained annotation of target range (individual vs. generic) and aggressiveness. Based on SemEval-2019 Task 5 (HatEval).
Configuration Fileconfig.yaml
This Potato config reproduces the annotation task. Save it as config.yaml and run potato start config.yaml to try it.
# HatEval - Multilingual Detection of Hate Speech
# Based on Basile et al., SemEval 2019
# Paper: https://aclanthology.org/S19-2007/
# Dataset: https://competitions.codalab.org/competitions/19935
#
# HatEval targets hate speech against immigrants and women. Following the
# official protocol, annotators complete two subtasks:
# Task A (HS): binary detection of hate speech.
# Task B: for hateful tweets, the target range (TR) and aggressiveness (AG).
#
# Task A - Hate Speech (HS):
# - Hateful: The tweet contains hate speech against immigrants or women
# - Not Hateful: The tweet does not contain hate speech
#
# Task B - Target Range (TR): applies only when the tweet is hateful
# - Individual: hate directed at a specific individual
# - Generic: hate directed at a group / class of people
#
# Task B - Aggressiveness (AG): applies only when the tweet is hateful
# - Aggressive: the tweet incites harm or aggressive action
# - Not Aggressive: hateful but without inciting aggression
annotation_task_name: "HatEval - Hate Speech 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"
port: 8000
server_name: localhost
annotation_schemes:
- annotation_type: radio
name: hate_speech
description: "Task A (HS): Does this tweet contain hate speech against immigrants or women?"
labels:
- "Hateful"
- "Not Hateful"
keyboard_shortcuts:
"Hateful": "1"
"Not Hateful": "2"
tooltips:
"Hateful": "The tweet contains hate speech against immigrants or women"
"Not Hateful": "The tweet does not contain hate speech"
- annotation_type: radio
name: target_range
description: "Task B (TR): If hateful, is the target an individual or a group?"
labels:
- "Individual"
- "Generic"
tooltips:
"Individual": "Hate directed at a specific person"
"Generic": "Hate directed at a group or class of people"
- annotation_type: radio
name: aggressiveness
description: "Task B (AG): If hateful, is the tweet aggressive?"
labels:
- "Aggressive"
- "Not Aggressive"
tooltips:
"Aggressive": "The tweet incites harm or aggressive action against the target"
"Not Aggressive": "Hateful but does not incite aggression"
annotation_instructions: |
You will be shown a tweet. Your task is to:
1. Task A (HS): Determine whether the tweet contains hate speech against
immigrants or women (hateful vs. not hateful).
2. Task B: If the tweet is hateful, judge the target range (individual vs.
generic group) and whether the tweet is aggressive.
Leave the Task B fields unanswered when the tweet is not hateful.
html_layout: |
<div style="padding: 15px; max-width: 800px; margin: auto;">
<div style="background: #fefce8; border: 1px solid #fde68a; border-radius: 8px; padding: 12px; margin-bottom: 12px;">
<strong style="color: #a16207;">Target Group:</strong>
<span style="font-size: 15px;">{{target_group}}</span>
</div>
<div style="background: #f0f9ff; border: 1px solid #bae6fd; border-radius: 8px; padding: 16px; margin-bottom: 16px;">
<strong style="color: #0369a1;">Tweet:</strong>
<p style="font-size: 16px; line-height: 1.7; margin: 8px 0 0 0;">{{text}}</p>
</div>
</div>
allow_all_users: true
instances_per_annotator: 50
annotation_per_instance: 2
allow_skip: true
skip_reason_required: false
Sample Datasample-data.json
[
{
"id": "hateval_001",
"text": "These immigrants are ruining our country. They should all go back where they came from. #buildthewall",
"target_group": "Immigrants"
},
{
"id": "hateval_002",
"text": "Just had the most amazing tacos from the new Mexican restaurant downtown. Highly recommend!",
"target_group": "None"
}
]
// ... 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/semeval/2019/task05-hateval potato start config.yaml
Dataset & paper
Basile et al., SemEval 2019
Citation (BibTeX)
@inproceedings{basile-etal-2019-semeval,
title = "{S}em{E}val-2019 Task 5: Multilingual Detection of Hate Speech Against Immigrants and Women in {T}witter",
author = "Basile, Valerio and Bosco, Cristina and Fersini, Elisabetta and Nozza, Debora and Patti, Viviana and Rangel Pardo, Francisco Manuel and Rosso, Paolo and Sanguinetti, Manuela",
booktitle = "Proceedings of the 13th International Workshop on Semantic Evaluation",
month = jun,
year = "2019",
address = "Minneapolis, Minnesota, USA",
publisher = "Association for Computational Linguistics",
url = "https://aclanthology.org/S19-2007/",
doi = "10.18653/v1/S19-2007",
pages = "54--63"
}Details
Annotation Types
Domain
Use Cases
Tags
Found an issue or want to improve this design?
Open an IssueRelated Designs
iSarcasmEval: Intended Sarcasm Detection
SemEval-2022 Task 6 (iSarcasmEval): detecting intended sarcasm in English and Arabic. Unlike prior datasets labeled by third parties, iSarcasmEval texts are labeled by their own authors for intended sarcasm. Annotators decide whether a text is sarcastic and, if so, which category of ironic speech it expresses.
AfriHate - Hate and Abusive Language for African Languages
Multilingual content-moderation annotation following the AfriHate scheme (Muhammad et al., NAACL 2025), a collection of hate speech and abusive language datasets for 15 African languages including Amharic, Hausa, Igbo, Yoruba, Swahili, Somali and isiZulu. Native speakers familiar with the regional culture assign each tweet a three-way label - hate, abusive, or neutral - and, when the tweet is hateful, mark the targeted attribute (e.g. ethnicity, religion, politics, gender). Sample items are mild, constructed illustrations that avoid real slurs or targeting of real groups; an English gloss is provided for reference only.
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.