Skip to content

クラウドソーシング統合

Prolific、MTurk、およびその他のクラウドソーシングプラットフォームとの統合。

クラウドソーシング統合

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

ワーカーは以下のURLでアクセスします:

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

Prolificの設定

Prolificのスタディ設定で:

  1. スタディURLをPotatoサーバーに設定する
  2. URLパラメータを追加する:?PROLIFIC_PID={{%PROLIFIC_PID%}}&STUDY_ID={{%STUDY_ID%}}&SESSION_ID={{%SESSION_ID%}}
  3. 完了コードを設定ファイルと一致させる

バリデーション

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. 定期的にデータをエクスポート - 最後まで待たない

関連情報

実装の詳細については、ソースドキュメントを参照してください。