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"

أنواع أسئلة الاستبيان

تدعم مراحل الاستبيان أنواع الأسئلة التالية:

اختيار فردي (Radio)

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

اختيار متعدد (Checkbox)

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}"

راجع التعهيد الجماعي لمزيد من التفاصيل.