Skip to content

크라우드소싱 연동

Potato를 Prolific 및 Amazon MTurk와 연동하여 크라우드소싱 주석을 수행합니다. 완료 URL, 참가자 ID 추적, 주의 확인, 결제 구성을 다룹니다.

Potato는 대규모 주석 작업을 위해 Prolific 및 Amazon Mechanical Turk와 같은 크라우드소싱 플랫폼과 매끄럽게 연동됩니다.

Prolific 연동

기본 설정

yaml
crowdsourcing:
  platform: prolific
  enabled: true
  completion_code: "POTATO2024"  # Code shown on completion

URL 매개변수

Prolific은 URL 매개변수를 통해 참가자 정보를 전달합니다.

yaml
crowdsourcing:
  platform: prolific
  url_params:
    - PROLIFIC_PID    # Participant ID
    - STUDY_ID        # Study ID
    - SESSION_ID      # Session ID

작업자는 다음을 통해 접근합니다.

text
https://your-server.com/?PROLIFIC_PID=xxx&STUDY_ID=xxx&SESSION_ID=xxx

Prolific 구성

Prolific 연구 설정에서:

  1. Study URL을 Potato 서버로 설정합니다
  2. URL 매개변수를 추가합니다: ?PROLIFIC_PID={{%PROLIFIC_PID%}}&STUDY_ID={{%STUDY_ID%}}&SESSION_ID={{%SESSION_ID%}}
  3. Completion code를 구성과 일치하도록 설정합니다

검증

Prolific 참가자를 확인합니다.

yaml
crowdsourcing:
  platform: prolific
  validate_participant: true
  completion_code: "POTATO2024"

Amazon MTurk 연동

기본 설정

yaml
crowdsourcing:
  platform: mturk
  enabled: true

HIT 구성

서버를 가리키는 External Question HIT를 생성합니다.

xml
<?xml version="1.0" encoding="UTF-8"?>
<ExternalQuestion xmlns="http://mechanicalturk.amazonaws.com/AWSMechanicalTurkDataSchemas/2006-07-14/ExternalQuestion.xsd">
  <ExternalURL>https://your-server.com/?workerId=${workerId}&amp;assignmentId=${assignmentId}&amp;hitId=${hitId}</ExternalURL>
  <FrameHeight>800</FrameHeight>
</ExternalQuestion>

URL 매개변수

yaml
crowdsourcing:
  platform: mturk
  url_params:
    - workerId
    - assignmentId
    - hitId

샌드박스 테스트

먼저 MTurk 샌드박스로 테스트합니다.

yaml
crowdsourcing:
  platform: mturk
  sandbox: true  # Use sandbox environment

작업자 관리

작업자 추적

yaml
crowdsourcing:
  track_workers: true
  worker_id_field: worker_id

작업자당 인스턴스 제한

yaml
instances_per_annotator: 50

재참여 작업자 차단

작업자가 작업을 다시 수행하지 못하도록 합니다.

yaml
crowdsourcing:
  prevent_retakes: true

품질 관리

주의 확인

테스트 질문을 삽입합니다.

yaml
attention_checks:
  enabled: true
  frequency: 10  # Every 10 instances
  fail_threshold: 2
  action: warn  # or 'block'

골드 스탠다드 질문

json
{
  "id": "gold_1",
  "text": "The sky is typically blue during a clear day.",
  "gold_label": "True",
  "is_gold": true
}
yaml
quality_control:
  gold_questions: true
  gold_percentage: 10  # 10% of instances
  min_gold_accuracy: 70

시간 제한

yaml
crowdsourcing:
  min_time_per_instance: 5  # seconds
  max_time_total: 3600  # 1 hour

저품질 작업 거부

yaml
quality_control:
  auto_reject:
    enabled: true
    conditions:
      - gold_accuracy_below: 50
      - completion_time_under: 300  # seconds

완료 처리

완료 코드 표시

yaml
completion:
  show_code: true
  code: "POTATO2024"
  message: "Thank you! Your completion code is: {code}"

완료 시 리디렉션

yaml
completion:
  redirect: true
  redirect_url: "https://prolific.co/submissions/complete?cc={code}"

사용자 정의 완료 페이지

yaml
completion:
  custom_template: templates/completion.html

결제 등급

품질 기반

yaml
payment:
  tiers:
    - name: bonus
      condition:
        gold_accuracy_above: 90
      amount: 0.50
    - name: standard
      condition:
        gold_accuracy_above: 70
      amount: 0.00
    - name: reject
      condition:
        gold_accuracy_below: 50

전체 예시: Prolific 연구

yaml
task_name: "Sentiment Analysis Study"
 
# Crowdsourcing settings
crowdsourcing:
  platform: prolific
  enabled: true
  completion_code: "SENT2024"
  url_params:
    - PROLIFIC_PID
    - STUDY_ID
    - SESSION_ID
  prevent_retakes: true
 
# Open access for crowdworkers
allow_all_users: true
 
# Task assignment
instances_per_annotator: 50
annotation_per_instance: 3
 
# Quality control
attention_checks:
  enabled: true
  frequency: 10
  fail_threshold: 2
 
quality_control:
  gold_questions: true
  gold_percentage: 5
  min_gold_accuracy: 70
 
# Data
data_files:
  - path: data/main.json
    text_field: text
 
# Annotation scheme
annotation_schemes:
  - annotation_type: radio
    name: sentiment
    description: "What is the sentiment?"
    labels:
      - Positive
      - Negative
      - Neutral
    keyboard_shortcuts:
      Positive: "1"
      Negative: "2"
      Neutral: "3"
 
# Completion
completion:
  show_code: true
  code: "SENT2024"
  message: |
    ## Thank you for participating!
 
    Your completion code is: **{code}**
 
    Please return to Prolific and enter this code to receive payment.

전체 예시: MTurk HIT

yaml
task_name: "Image Classification HIT"
 
crowdsourcing:
  platform: mturk
  enabled: true
  url_params:
    - workerId
    - assignmentId
    - hitId
 
allow_all_users: true
instances_per_annotator: 20
 
# Time constraints
crowdsourcing:
  min_time_per_instance: 3
  max_time_total: 1800
 
# MTurk form submission
completion:
  mturk_submit: true
  submit_url: "https://www.mturk.com/mturk/externalSubmit"
 
annotation_schemes:
  - annotation_type: radio
    name: category
    description: "What is shown in this image?"
    labels:
      - Cat
      - Dog
      - Bird
      - Other

작업자 모니터링

관리자 대시보드

yaml
admin_users:
  - researcher@university.edu
 
admin_dashboard:
  enabled: true
  show_worker_stats: true

/admin에서 다음을 확인합니다.

  • 작업자 완료율
  • 인스턴스당 평균 시간
  • 골드 정확도 점수
  • 주의 확인 결과

작업자 데이터 내보내기

bash
potato export-workers config.yaml --output workers.csv

모범 사례

  1. 철저히 테스트 - 먼저 소규모 그룹으로 파일럿을 실행하세요
  2. 공정한 보수 설정 - 예상 시간을 계산하고 공정하게 지급하세요
  3. 명확한 지침 - 예시와 예외 사례를 포함하세요
  4. 주의 확인 사용 - 무작위 클릭을 잡아내세요
  5. 골드 질문 포함 - 이해도를 확인하세요
  6. 실시간 모니터링 - 문제를 일찍 발견하세요
  7. 거부에 대비 - 명확한 품질 기준을 미리 정하세요
  8. 문제 소통 - 문제에 대해 작업자에게 연락하세요
  9. 피드백을 반영해 개선 - 작업자 의견을 바탕으로 개선하세요
  10. 정기적으로 데이터 내보내기 - 마지막까지 기다리지 마세요

추가 자료

구현 세부 정보는 소스 문서를 참조하세요.