Skip to content

マルチフェーズワークフロー

調査、トレーニング、分岐ロジックを含む複雑なアノテーションワークフローの構築。

マルチフェーズワークフロー

Potato 2.0は、同意、事前調査、指示、トレーニング、アノテーション、事後フィードバックを含む複数の連続フェーズによる構造化されたアノテーションワークフローをサポートしています。

利用可能なフェーズ

フェーズ説明
consentインフォームドコンセントの収集
prestudyアノテーション前の調査(人口統計、スクリーニング)
instructionsタスクのガイドラインと情報
trainingフィードバック付きの練習問題
annotationメインアノテーションタスク(常に必須)
poststudyアノテーション後の調査とフィードバック

基本設定

設定のphasesセクションを使用します:

yaml
phases:
  consent:
    enabled: true
    data_file: "data/consent.json"
 
  prestudy:
    enabled: true
    data_file: "data/demographics.json"
 
  instructions:
    enabled: true
    content: "data/instructions.html"
 
  training:
    enabled: true
    data_file: "data/training.json"
    schema_name: sentiment
    passing_criteria:
      min_correct: 8
 
  # annotation phase is always enabled
 
  poststudy:
    enabled: true
    data_file: "data/feedback.json"

調査の質問タイプ

調査フェーズは以下の質問タイプをサポートしています:

ラジオ(単一選択)

json
{
  "name": "experience",
  "type": "radio",
  "description": "How much annotation experience do you have?",
  "labels": ["None", "Some (< 10 hours)", "Moderate", "Extensive"],
  "required": true
}

チェックボックス/マルチセレクト

json
{
  "name": "languages",
  "type": "checkbox",
  "description": "What languages do you speak fluently?",
  "labels": ["English", "Spanish", "French", "German", "Chinese", "Other"]
}

テキスト入力

json
{
  "name": "occupation",
  "type": "text",
  "description": "What is your occupation?",
  "required": true
}

数値入力

json
{
  "name": "years_experience",
  "type": "number",
  "description": "Years of professional experience",
  "min": 0,
  "max": 50
}

リッカート尺度

json
{
  "name": "familiarity",
  "type": "likert",
  "description": "How familiar are you with this topic?",
  "size": 5,
  "min_label": "Not familiar",
  "max_label": "Very familiar"
}

ドロップダウン選択

json
{
  "name": "country",
  "type": "select",
  "description": "Select your country",
  "labels": ["USA", "Canada", "UK", "Germany", "France", "Other"]
}

同意フェーズ

開始前にインフォームドコンセントを収集します:

yaml
phases:
  consent:
    enabled: true
    data_file: "data/consent.json"

consent.json:

json
[
  {
    "name": "consent_agreement",
    "type": "radio",
    "description": "I have read and understood the research consent form and agree to participate.",
    "labels": ["I agree", "I do not agree"],
    "right_label": "I agree",
    "required": true
  }
]

right_labelフィールドは、進行するために必要な回答を指定します。

事前調査

人口統計またはスクリーニング質問を収集します:

yaml
phases:
  prestudy:
    enabled: true
    data_file: "data/demographics.json"

demographics.json:

json
[
  {
    "name": "age_range",
    "type": "radio",
    "description": "What is your age range?",
    "labels": ["18-24", "25-34", "35-44", "45-54", "55+"],
    "required": true
  },
  {
    "name": "education",
    "type": "radio",
    "description": "Highest level of education completed",
    "labels": ["High school", "Bachelor's degree", "Master's degree", "Doctoral degree", "Other"],
    "required": true
  },
  {
    "name": "english_native",
    "type": "radio",
    "description": "Is English your native language?",
    "labels": ["Yes", "No"],
    "required": true
  }
]

指示フェーズ

タスクの指示を表示します:

yaml
phases:
  instructions:
    enabled: true
    content: "data/instructions.html"

またはインラインコンテンツを使用します:

yaml
phases:
  instructions:
    enabled: true
    inline_content: |
      <h2>Task Instructions</h2>
      <p>In this task, you will classify the sentiment of product reviews.</p>
      <ul>
        <li><strong>Positive:</strong> Expresses satisfaction or praise</li>
        <li><strong>Negative:</strong> Expresses dissatisfaction or criticism</li>
        <li><strong>Neutral:</strong> Factual or mixed sentiment</li>
      </ul>

トレーニングフェーズ

フィードバック付きの練習問題(詳細はトレーニングフェーズを参照):

yaml
phases:
  training:
    enabled: true
    data_file: "data/training.json"
    schema_name: sentiment
    passing_criteria:
      min_correct: 8
      total_questions: 10
    show_explanations: true

事後調査

アノテーション後にフィードバックを収集します:

yaml
phases:
  poststudy:
    enabled: true
    data_file: "data/feedback.json"

feedback.json:

json
[
  {
    "name": "difficulty",
    "type": "likert",
    "description": "How difficult was this task?",
    "size": 5,
    "min_label": "Very easy",
    "max_label": "Very difficult"
  },
  {
    "name": "clarity",
    "type": "likert",
    "description": "How clear were the instructions?",
    "size": 5,
    "min_label": "Very unclear",
    "max_label": "Very clear"
  },
  {
    "name": "suggestions",
    "type": "text",
    "description": "Any suggestions for improvement?",
    "textarea": true,
    "required": false
  }
]

組み込みテンプレート

Potatoには一般的な調査質問用の定義済みラベルセットが含まれています:

テンプレートラベル
countries国のリスト
languages一般的な言語
ethnicity民族オプション
religion宗教オプション

質問でテンプレートを使用します:

json
{
  "name": "country",
  "type": "select",
  "description": "Select your country",
  "template": "countries"
}

自由回答フィールド

構造化された質問とともにオプションのテキスト入力を追加します:

json
{
  "name": "topics",
  "type": "checkbox",
  "description": "Which topics interest you?",
  "labels": ["Technology", "Sports", "Politics", "Entertainment"],
  "free_response": true,
  "free_response_label": "Other (please specify)"
}

ページヘッダー

調査セクションのヘッダーをカスタマイズします:

json
{
  "page_header": "Demographics Survey",
  "questions": [
    {"name": "age", "type": "radio", ...},
    {"name": "gender", "type": "radio", ...}
  ]
}

完全な例

yaml
task_name: "Sentiment Analysis Study"
task_dir: "."
port: 8000
 
# Data configuration
data_files:
  - "data/reviews.json"
 
item_properties:
  id_key: id
  text_key: text
 
# Annotation scheme
annotation_schemes:
  - annotation_type: radio
    name: sentiment
    description: "What is the sentiment of this review?"
    labels:
      - Positive
      - Negative
      - Neutral
    sequential_key_binding: true
 
# Multi-phase workflow
phases:
  consent:
    enabled: true
    data_file: "data/consent.json"
 
  prestudy:
    enabled: true
    data_file: "data/demographics.json"
 
  instructions:
    enabled: true
    content: "data/instructions.html"
 
  training:
    enabled: true
    data_file: "data/training.json"
    schema_name: sentiment
    passing_criteria:
      min_correct: 8
      total_questions: 10
    retries:
      enabled: true
      max_retries: 2
    show_explanations: true
 
  # annotation phase is always enabled
 
  poststudy:
    enabled: true
    data_file: "data/feedback.json"
 
# Output
output_annotation_dir: "output/"
output_annotation_format: "json"
 
# User access
allow_all_users: true

レガシー設定

古いsurveyflow設定形式も後方互換性のために引き続きサポートされています:

yaml
surveyflow:
  enabled: true
  phases:
    - name: pre_survey
      type: survey
      questions: survey_questions.json
    - name: main_annotation
      type: annotation

ただし、新しいプロジェクトでは新しいphases形式への移行を推奨します。

ベストプラクティス

1. 調査は簡潔に

長い調査は完了率を下げます。必須の質問のみに絞りましょう。

2. 複雑なタスクにはトレーニングを使用

トレーニングフェーズはアノテーション品質を向上させます。特にニュアンスのあるタスクに効果的です。

3. 合理的な合格基準を設定

yaml
# Too strict - may exclude good annotators
passing_criteria:
  require_all_correct: true
 
# Better - allows for learning
passing_criteria:
  min_correct: 8
  total_questions: 10

4. 明確な指示を提供

指示フェーズに例を含めて期待を明確にしましょう。

5. フルフローをテスト

デプロイ前にワークフロー全体を自分で完了して問題を発見しましょう。

6. 必須フィールドは賢く使用

本当に必要な質問のみを必須にしましょう - オプションの質問のほうが回答の質が高くなります。

クラウドソーシング統合

ProlificまたはMTurk向けに完了コードを設定します:

yaml
phases:
  poststudy:
    enabled: true
    data_file: "data/feedback.json"
    show_completion_code: true
    completion_code_format: "POTATO-{user_id}-{timestamp}"

詳細はクラウドソーシングを参照してください。