Social Bias Frames (SBIC)
Annotate social media posts for bias using structured frames. Based on Sap et al., ACL 2020. Identify offensiveness, intent, implied stereotypes, and targeted groups.
About this dataset
Social Bias Frames is a framework introduced by Maarten Sap and coauthors at ACL 2020 for describing how a piece of language implies bias, not only whether it reads as toxic. In place of a single offensiveness label, a frame records who is targeted and what stereotype a statement implies about them.
The accompanying Social Bias Inference Corpus draws posts from social media and related sources. Annotators answer a structured set of questions about each post: whether it could be offensive, whether the offense seems intentional, whether it is lewd, whether it implies something about a group, and which group is targeted, together with the implied stereotype the statement carries.
The corpus holds roughly 150,000 structured annotations covering more than 34,000 implied statements about about a thousand demographic groups. In the paper's experiments, neural models reach around 80% F1 on the higher-level categorization but do much worse at generating the implied stereotype in words.
The Potato config below reproduces this task with four radio schemes and one multiselect: offensiveness, intent, lewdness, and group implication as radios, plus a target-group multiselect over fourteen demographic options. It fits content-moderation work that needs the reasoning behind a label rather than the label alone.
- Structured annotations
- ~150,000
- Implied statements covered
- 34,000+
- Demographic groups
- ~1,000
- Best model F1 (high-level categorization)
- ~80%
- Venue
- ACL 2020
- Pages
- 5477-5490
Configuration Fileconfig.yaml
This Potato config reproduces the annotation task. Save it as config.yaml and run potato start config.yaml to try it.
# Social Bias Frames (SBIC)
# Based on Sap et al., ACL 2020
# Paper: https://aclanthology.org/2020.acl-main.409/
# Dataset: https://maartensap.com/social-bias-frames/
#
# Social Bias Frames capture multiple dimensions of biased language:
# 1. Offensiveness: Is the post offensive?
# 2. Intent: Was the speaker trying to be offensive?
# 3. Lewdness: Is it sexual or lewd?
# 4. Group implication: Does it imply something about a group?
# 5. Targeted group: Which group is targeted?
# 6. Implied statement: What stereotype is implied?
#
# Annotation Guidelines:
# 1. Consider the post in isolation (not broader context)
# 2. Offensiveness is about potential to offend, not your personal reaction
# 3. Intent considers whether offense seems deliberate
# 4. Group implications apply when stereotypes about demographics are implied
# 5. Targeted groups should be specific (e.g., "Black women" not just "women")
# 6. Implied statements should be written as generalizations
#
# Key Distinctions:
# - A post can be offensive without intent (ignorance)
# - A post can have intent without being offensive (failed joke)
# - Group implications require stereotyping, not just mentioning groups
annotation_task_name: "Social Bias Frames"
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: Offensiveness
- annotation_type: radio
name: offensive
description: "Could this post be considered offensive to anyone?"
labels:
- "Yes, offensive"
- "Maybe offensive"
- "Not offensive"
tooltips:
"Yes, offensive": "The post would likely offend members of some group"
"Maybe offensive": "The post could be seen as offensive by some people"
"Not offensive": "The post is unlikely to offend anyone"
# Step 2: Intent
- annotation_type: radio
name: intent
description: "Was the intent of the post to be offensive or hurtful?"
labels:
- "Intentionally offensive"
- "Possibly intentional"
- "Not intentional"
- "Can't tell"
tooltips:
"Intentionally offensive": "The speaker clearly meant to offend or demean"
"Possibly intentional": "The offense might have been deliberate"
"Not intentional": "The speaker likely didn't mean to offend (ignorance, poor wording)"
"Can't tell": "Intent is unclear from the post"
# Step 3: Lewdness
- annotation_type: radio
name: lewd
description: "Is the post lewd or sexual in nature?"
labels:
- "Yes"
- "Somewhat"
- "No"
tooltips:
"Yes": "The post is explicitly sexual or lewd"
"Somewhat": "The post has sexual undertones or innuendo"
"No": "The post is not sexual"
# Step 4: Group implication
- annotation_type: radio
name: group_implication
description: "Does the post imply something negative about a group of people?"
labels:
- "Yes, implies stereotype"
- "Mentions group but no stereotype"
- "No group mentioned"
tooltips:
"Yes, implies stereotype": "The post implies a generalization or stereotype about a demographic group"
"Mentions group but no stereotype": "A group is mentioned but no stereotype is implied"
"No group mentioned": "No demographic group is referenced"
# Step 5: Target group (if applicable)
- annotation_type: multiselect
name: target_group
description: "Which group(s) are targeted? (Select all that apply)"
labels:
- "Women"
- "Men"
- "Black people"
- "Asian people"
- "Hispanic/Latino people"
- "White people"
- "LGBTQ+ people"
- "Muslims"
- "Jewish people"
- "Immigrants"
- "Disabled people"
- "Elderly people"
- "Poor/working class"
- "Other group"
min_selections: 0
max_selections: 14
allow_all_users: true
instances_per_annotator: 100
annotation_per_instance: 3
allow_skip: true
skip_reason_required: false
Sample Datasample-data.json
[
{
"id": "sbf_001",
"text": "Women just aren't cut out for leadership positions. It's biology."
},
{
"id": "sbf_002",
"text": "I love how diverse our team is - we have people from so many different backgrounds!"
}
]
// ... and 8 more itemsTry 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 browserGet This Design
Clone or download from the repository
Quick start:
git clone https://github.com/davidjurgens/potato-showcase.git cd potato-showcase/text/hate-speech-moderation/social-bias-frames potato start config.yaml
Dataset & paper
Sap et al., ACL 2020
Citation (BibTeX)
@inproceedings{sap-etal-2020-social,
title = "Social Bias Frames: Reasoning about Social and Power Implications of Language",
author = "Sap, Maarten and Gabriel, Saadia and Qin, Lianhui and Jurafsky, Dan and Smith, Noah A. and Choi, Yejin",
booktitle = "Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics",
month = jul,
year = "2020",
address = "Online",
publisher = "Association for Computational Linguistics",
url = "https://aclanthology.org/2020.acl-main.486",
pages = "5477--5490"
}Details
Annotation Types
Domain
Use Cases
Tags
Found an issue or want to improve this design?
Open an IssueRelated Designs
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.
GoEmotions - Fine-Grained Emotion Classification
Multi-label emotion classification with 27 emotion categories plus neutral, based on the Google Research GoEmotions dataset (Demszky et al., ACL 2020). Taxonomy covers 12 positive, 11 negative, and 4 ambiguous emotions designed for Reddit comment analysis.
Moral Foundations in Tweets
Classification of moral foundations in social media discourse, based on Moral Foundations Theory (Johnson & Goldwasser, ACL 2018). Annotators identify which moral dimensions are expressed and whether the tweet conveys moral sentiment.