콘텐츠 모더레이션 어노테이션 설정
독성 탐지, 혐오 발언 분류, 민감 콘텐츠 라벨링을 위해 Potato를 설정하되 어노테이터의 웰빙을 염두에 두는 방법을 알아봅니다.
독성 콘텐츠를 라벨링하는 일은 영화 리뷰를 라벨링하는 것과 다릅니다. 이 작업은 사람을 지치게 하고, 지침은 늘 조금 모호하며, 가장 중요한 사례들은 보통 어노테이터들이 서로 의견이 갈리는 것들입니다. 이 가이드는 이러한 문제들을 진지하게 다루는 콘텐츠 모더레이션 작업을 Potato에서 구성하는 방법을 다루며, 그 일을 하는 사람들에서 출발합니다.
어노테이터 웰빙
혐오스럽고 충격적인 콘텐츠를 몇 시간씩 읽는 것은 그 일을 하는 사람들에게 실제로 영향을 미칩니다. 몇 가지 설정이 작업을 견딜 만하게 유지하는 데 도움이 됩니다.
웰빙 구성
surveyflow:
on: true
order:
- pre_annotation
pre_annotation:
- "surveyflow/content_warning.jsonl"콘텐츠 흐리게 처리
max_annotations_per_user: 100독성 분류
다단계 독성
annotation_schemes:
- annotation_type: radio
name: toxicity_level
description: "Rate the toxicity level of this content"
labels:
- name: "Not toxic"
tooltip: "No harmful content"
- name: "Mildly toxic"
tooltip: "Rude or insensitive but not severe"
- name: "Moderately toxic"
tooltip: "Clearly offensive or harmful"
- name: "Severely toxic"
tooltip: "Extremely offensive, threatening, or dangerous"독성 범주
annotation_schemes:
- annotation_type: multiselect
name: toxicity_types
description: "Select all types of toxicity present"
labels:
- name: "Profanity or obscenity"
tooltip: "Swear words, vulgar language"
- name: "Insults"
tooltip: "Personal attacks, name-calling"
- name: "Threats"
tooltip: "Threats of violence or harm"
- name: "Hate speech"
tooltip: "Targeting protected groups"
- name: "Harassment"
tooltip: "Targeted, persistent hostility"
- name: "Sexual content"
tooltip: "Explicit or suggestive content"
- name: "Self-harm or suicide"
tooltip: "Promoting or glorifying self-harm"
- name: "Misinformation"
tooltip: "Demonstrably false claims"
- name: "Spam or scam"
tooltip: "Unwanted promotional content"혐오 발언 탐지
대상 집단
annotation_schemes:
- annotation_type: multiselect
name: target_groups
description: "Which groups are targeted? Leave empty if this is not hate speech"
labels:
- name: "Race or ethnicity"
- name: "Religion"
- name: "Gender"
- name: "Sexual orientation"
- name: "Disability"
- name: "Nationality or origin"
- name: "Age"
- name: "Other protected group"혐오 발언 심각도
annotation_schemes:
- annotation_type: radio
name: hate_severity
description: "Severity of hate speech"
labels:
- name: "Implicit"
tooltip: "Coded language, dog whistles"
- name: "Explicit, mild"
tooltip: "Clear but not threatening"
- name: "Explicit, severe"
tooltip: "Dehumanizing, threatening, or violent"맥락 기반 모더레이션
플랫폼별 규칙
annotation_schemes:
- annotation_type: radio
name: context_appropriate
description: "Is this content appropriate for the platform context?"
labels:
- name: "Appropriate for context"
- name: "Borderline"
- name: "Inappropriate for context"
- annotation_type: text
name: context_notes
description: "Explain your contextual reasoning"
multiline: true
rows: 3의도 탐지
annotation_schemes:
- annotation_type: radio
name: intent
description: "What is the apparent intent?"
labels:
- name: "Genuine attack"
tooltip: "Intent to harm or offend"
- name: "Satire or parody"
tooltip: "Mocking toxic behavior"
- name: "Quote or report"
tooltip: "Reporting or discussing toxic content"
- name: "Reclaimed language"
tooltip: "In-group use of slurs"
- name: "Unclear intent"이미지 콘텐츠 모더레이션
시각 콘텐츠 분류
annotation_schemes:
- annotation_type: multiselect
name: image_violations
description: "Select all policy violations"
labels:
- name: "Nudity or sexual content"
- name: "Graphic violence"
- name: "Gore or disturbing content"
- name: "Hate symbols"
- name: "Dangerous acts"
- name: "Child safety concern"
priority: critical
escalate: true
- name: "No violations"
- annotation_type: radio
name: action_recommendation
description: "Recommended action"
labels:
- name: "Approve"
- name: "Age-restrict"
- name: "Add warning label"
- name: "Remove"
- name: "Escalate to specialist"품질 관리
# Items with known labels, mixed into the regular queue
gold_standards:
enabled: true
items_file: data/moderation_gold.json
mode: mixed
frequency: 20
accuracy:
min_threshold: 0.7
evaluation_count: 10
# Three judgements on every item
num_annotators_per_item: 3
# Disagreements go to a specialist queue
adjudication:
enabled: true
adjudicator_users:
- trust_safety_lead
min_annotations: 3
agreement_threshold: 0.67
require_notes_on_override: true
show_agreement_scores: true전체 구성
annotation_task_name: "Content Moderation"
task_dir: "."
output_annotation_dir: "annotations/"
data_files:
- "data/reports.json"
item_properties:
id_key: id
text_key: text
num_annotators_per_item: 3
annotation_schemes:
- annotation_type: radio
name: toxicity
description: "Toxicity level"
labels:
- name: "None"
- name: "Mild"
- name: "Moderate"
- name: "Severe"
- annotation_type: multiselect
name: categories
description: "Types of harmful content (select all)"
labels:
- name: "Hate speech"
- name: "Harassment"
- name: "Violence or threats"
- name: "Sexual content"
- name: "Self-harm"
- name: "Spam"
- name: "None"
- annotation_type: likert
name: confidence
description: "How confident are you in this judgment?"
size: 5
min_label: "Uncertain"
max_label: "Very confident"
- annotation_type: text
name: notes
description: "Additional notes (optional)"
multiline: true
rows: 4
export_annotation_format: jsonl지침 작성하기
어노테이터 간 의견 차이는 대부분 모호한 지침으로 거슬러 올라가므로, 바로 여기에 들이는 노력이 보답을 줍니다. 어노테이터가 짐작하도록 내버려 두는 대신 "mild"와 "moderate"를 무엇이 가르는지 명확히 적으세요. 경계 사례를 보여주고, 각 사례가 왜 그 자리에 놓였는지 설명을 덧붙이세요. 같은 문장이 한 커뮤니티에서는 괜찮고 다른 곳에서는 위반일 수 있으므로, 플랫폼과 청중이 판단을 어떻게 바꾸는지 밝히세요. 그리고 의도가 정말로 불분명할 때 어떻게 해야 하는지를, 그런 일이 결코 없는 척하지 말고 어노테이터에게 알려주세요. 새로운 종류의 콘텐츠가 등장하면서 이 모든 것을 수정하게 되리라 예상하세요.
어노테이터 지원하기
한 사람을 하루 종일 독성 콘텐츠에 붙박아 두지 말고, 작업을 돌려 가며 맡기세요. 정신 건강 자원을 한 번의 클릭으로 닿을 수 있게 두고, 우려를 알릴 진짜 통로를 사람들에게 주며, 이것이 힘든 일임을 인정하세요. 실제로 그렇습니다.
기저의 분류 스키마가 어떻게 작동하는지는 텍스트 어노테이션 문서를 참고하세요. 품질 관리 가이드는 중복 처리와 보정을 더 자세히 다룹니다.
전체 문서는 어노테이션 스키마에서 확인하세요.