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.
設定ファイルconfig.yaml
# 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-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 itemsこのデザインを取得
Clone or download from the repository
クイックスタート:
git clone https://github.com/davidjurgens/potato-showcase.git cd potato-showcase/text/hate-speech-moderation/social-bias-frames potato start config.yaml
詳細
アノテーションタイプ
ドメイン
ユースケース
タグ
問題を見つけた場合やデザインを改善したい場合は?
Issueを作成関連デザイン
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.
OffensEval - Offensive Language Target Identification
Multi-step offensive language annotation combining offensiveness detection, target type classification, and offensive span identification, based on the SemEval 2020 OffensEval shared task (Zampieri et al., SemEval 2020).