Skip to content
أدلةمدة القراءة 7 دقيقة

تشغيل دراسات التوصيف على Prolific

شغّل دراسة توصيف في Potato على Prolific مع تسجيل دخول مباشر عبر الرابط، ورمز إكمال، وفحوصات انتباه، ومتابعة الإرسالات عبر واجهة برمجة التطبيقات.

Potato Team

وجّه رابط الدراسة في Prolific إلى خادم Potato الخاص بك مع ?PROLIFIC_PID={{%PROLIFIC_PID%}}، واضبط login.type: url_direct وcompletion_code مطابقاً للرمز المسجّل في الدراسة، فيُسجَّل دخول كل مشارك باسم معرّفه في Prolific ويُعاد إلى Prolific عند انتهائه.

Prolific مجموعة مشاركين مصممة للدراسات الأكاديمية، وهي منصة التعهيد الجماعي التي يدعمها Potato دعماً أكمل من غيرها. يغطي هذا الدليل الإعدادات التي يحتاجها Potato، وإعدادات الدراسة من جهة Prolific، ومراقبة الجودة التي يجدر تجهيزها قبل إنفاق المال.

لماذا يستخدم الباحثون Prolific للتوصيف

يفحص Prolific مشاركيه ويدفع لهم عبر المنصة، فتُدار خارج خادمك الأجزاء من التعهيد الجماعي التي تستهلك عادةً ميزانية الدراسة. تفرض المنصة حداً أدنى للأجر بالساعة، وتصفّي المشاركين وفق معايير ديموغرافية ولغوية، وتسجّل الموافقة، مما يختصر أوراق مجلس المراجعة المؤسسية (IRB) لدراسة وسم. وقد أُغلق Mechanical Turk، المنصة التي يُقارَن بها Prolific عادةً، في 30 سبتمبر 2026، ويشرح نقل دراسة من MTurk هذا التحوّل للدراسات التي كانت تعمل عليه.

ما تحتاجه قبل البدء

  1. حساب باحث على Prolific.
  2. Potato يعمل على خادم له رابط HTTPS عام. يغطي دليل النشر على الخادم هذه الخطوة.
  3. ملف إعدادات يتضمن ملفات بياناتك وitem_properties ومخطط توصيف واحداً على الأقل.

الإعدادات التي يحتاجها Potato

أربعة إعدادات تحوّل مشروع Potato عادياً إلى مشروع يستطيع Prolific تشغيله. يحدد login.url_argument اسم معامل الرابط الذي يحمل معرّف المشارك في Prolific، ويجب أن يطابق completion_code رمزاً مضبوطاً في دراسة Prolific، ويعيد مفتاحا إعادة التوجيه المشاركين إلى Prolific بدلاً من تركهم على صفحة انتهاء. أما مفاتيح التوزيع التي تليها فتضع سقفاً لمقدار العمل الذي يُعطى لكل مشارك، وهذا ما يُبقي تكلفة الدراسة قابلة للتوقع.

yaml
annotation_task_name: "Sentiment Annotation Study"
task_description: "Classify the sentiment of short text snippets. This task takes about five minutes."
 
# Participants are logged in from the PROLIFIC_PID URL parameter
login:
  type: url_direct
  url_argument: PROLIFIC_PID
 
# Must match a completion code configured on the Prolific study
completion_code: "C1ABCDEF"
auto_redirect_on_completion: true
auto_redirect_delay: 5000
 
# Keep participants on task
hide_navbar: true
jumping_to_id_disabled: true
 
# Each participant labels 20 items; each item is labeled by 3 participants
assignment_strategy: random
max_annotations_per_user: 20
num_annotators_per_item: 3
 
data_files:
  - data/texts.json
 
item_properties:
  id_key: id
  text_key: text
 
output_annotation_dir: annotation_output/prolific-study/
export_annotation_format: jsonl
 
user_config:
  allow_all_users: true
  users: []
 
annotation_schemes:
  - annotation_type: radio
    name: sentiment
    description: "What is the sentiment expressed in this text?"
    labels:
      - name: positive
      - name: neutral
      - name: negative
    sequential_key_binding: true
    label_requirement:
      required: true

حدّد قيمة num_annotators_per_item بناءً على ما تنوي فعله بالبيانات. ثلاثة هو الخيار المعتاد حين تنوي الإبلاغ عن الاتفاق أو اعتماد وسم الأغلبية، وواحد يكفي بعد أن تُظهر دراسة تجريبية أن المهمة محددة جيداً. يشرح دليل الاتفاق بين المُوصِّفين كيفية قراءة النتيجة.

إعداد الدراسة على Prolific

في نموذج الدراسة على Prolific، اجعل رابط الدراسة الخارجي هو خادم Potato الخاص بك مع العناصر النائبة الخاصة بـ Prolific في سلسلة الاستعلام:

text
https://your-server.com/?PROLIFIC_PID={{%PROLIFIC_PID%}}&STUDY_ID={{%STUDY_ID%}}&SESSION_ID={{%SESSION_ID%}}

اختر "I'll use URL parameters" في السؤال عن طريقة تسجيل معرّفات Prolific، ثم اضبط في الدراسة رمز إكمال يطابق completion_code في ملف إعداداتك. يُحفظ STUDY_ID وSESSION_ID في جلسة المشارك للتتبع لاحقاً.

المشارك الذي ينقر الرابط يصل إلى Potato ومعرّفه في الرابط. ينشئ Potato حساباً بلا كلمة مرور باسم ذلك المعرّف، ويمرّر المشارك عبر المراحل التي ضبطتها، ثم يعرض عند الانتهاء رمز الإكمال مع زر Return to Prolific يشير إلى https://app.prolific.com/submissions/complete?cc=<code>. وعند ضبط auto_redirect_on_completion تحدث إعادة التوجيه تلقائياً بعد auto_redirect_delay ميلي ثانية.

اكتب النطاق بصيغة app.prolific.com. النطاق الأقدم app.prolific.co لم يعد يقدّم HTTPS، لذا فإن رابط إكمال منسوخاً من دليل قديم يرسل المشاركين إلى صفحة معطّلة بعد أن أنجزوا العمل.

الموافقة والتعليمات واستبيانات الختام

تحتاج معظم دراسات التعهيد الجماعي إلى أكثر من صفحة التوصيف. تضع كتلة phases في Potato الموافقة والفرز المسبق والتعليمات واستبياناً بعد الدراسة حول مرحلة التوصيف، ويمر المشاركون بها بالترتيب الذي تسردها به:

yaml
phases:
  order: [consent, prestudy, instructions, annotation, poststudy]
 
  consent:
    type: consent
    file: surveyflow/consent.json
 
  prestudy:
    type: prestudy
    file: surveyflow/prescreening.json
 
  instructions:
    type: instructions
    file: surveyflow/instructions.html
 
  poststudy:
    type: poststudy
    file: surveyflow/demographics.json

أضف هذه الكتلة إلى الإعدادات أعلاه. مرحلة annotation هي المرحلة الإلزامية الوحيدة، فيمكن لدراسة لا تحتاج إلى نموذج موافقة أن تحذف كل الإدخالات الأخرى. تضبط المشاريع الأقدم الشيء نفسه عبر surveyflow، الذي لا يزال Potato يقرؤه لكنه لم يعد يوصي به للمشاريع الجديدة.

فحوصات الانتباه

فحص الانتباه عنصر له إجابة صحيحة معروفة، يُخلط في قائمة الانتظار بحيث يُنتج المشارك غير المنتبه إجابة خاطئة يمكن رصدها. يحمّل Potato هذه الفحوصات من ملف خاص بها لا من بياناتك، فتبقى خارج مجموعة بياناتك:

yaml
attention_checks:
  enabled: true
  items_file: "data/attention_checks.json"
  frequency: 10
  min_response_time: 3.0
  failure_handling:
    warn_threshold: 2
    block_threshold: 5

أضف هذه الكتلة إلى الإعدادات أعلاه. يُدرج frequency: 10 فحصاً واحداً كل عشرة عناصر، ويُسقط min_response_time أي استجابة تصل أسرع مما يستطيع أي شخص قراءة العنصر فيه، أياً كان محتواها. تعمل الساعة على الخادم، من لحظة إرساله العنصر إلى لحظة استلامه الحفظ.

يحمل كل عنصر فحص معرّفاً، والنص الذي يراه المشارك، والإجابة المتوقعة لكل مخطط باسمه:

json
[
  {
    "id": "attn_001",
    "text": "Please select 'positive' for this item to verify you are reading carefully.",
    "expected_answer": {"sentiment": "positive"}
  }
]

اضبط block_threshold وفق طول دراستك. المشارك الذي يفشل في خمسة فحوصات ضمن مهمة من 20 عنصراً لم يكن يوصّف أصلاً؛ أما من يفشل في خمسة على امتداد 300 عنصر فربما كان متعباً لفترة، وحظره يُضيّع بقية عمله.

متابعة دراسة جارية

اضبط login.type: prolific وأضف كتلة prolific، فيستعلم Potato من واجهة برمجة تطبيقات Prolific عن حالات الإرسالات، إلى جانب تسجيل الدخول المباشر عبر الرابط الذي يقوم به أصلاً:

yaml
login:
  type: prolific
  url_argument: PROLIFIC_PID
 
prolific:
  config_file_path: configs/prolific_config.yaml
 
completion_code: "C1ABCDEF"

أضف هذه الكتلة إلى الإعدادات أعلاه. الملف الذي تشير إليه يحتوي على رمز واجهة برمجة التطبيقات، لذا أبقه خارج نظام التحكم في الإصدارات:

yaml
# configs/prolific_config.yaml
token: "your-prolific-api-token"
study_id: "your-study-id"
workload_checker: true
max_concurrent_sessions: 30
workload_checker_period: 300

بعد ضبط الرمز، تكتسب لوحة تحكم المدير لوحة خاصة بـ Prolific تنشر الدراسة وتوقفها مؤقتاً وتنهيها، وتقبل الإرسالات أو ترفضها، وتدفع المكافآت، وتعرض مسبقاً تكلفة إضافة أماكن. يوقف مراقب عبء العمل الدراسة مؤقتاً حين يبلغ عدد المشاركين النشطين max_concurrent_sessions، ويستأنفها حين ينخفض العدد إلى ما دون 20% من ذلك الحد الأقصى. ولا يستأنف إلا دراسة أوقفها بنفسه، فالدراسة التي توقفها يدوياً في Prolific تبقى متوقفة.

المشاركون الذين ينسحبون

يُبلغ Prolific عن الإرسال بحالة RETURNED أو TIMED-OUT أو REJECTED حين يغادر المشارك دون إكمال. يُحرّر Potato العناصر المسندة إلى هؤلاء المشاركين ليتمكن آخرون من أخذها، ويحتفظ بالتوصيفات التي كانوا قد أكملوها. استخدم instance_reclaim حين ينبغي أن يغيّر سبب الانسحاب مصير ذلك العمل المكتمل:

yaml
instance_reclaim:
  enabled: true
  prolific:
    preserve_completed_annotations: true
    status_policies:
      TIMED-OUT:
        preserve_completed_annotations: true
      REJECTED:
        preserve_completed_annotations: false

أضف هذه الكتلة إلى الإعدادات أعلاه. هذا التمييز يستحق أن يُضبط عن قصد. المشارك الذي انتهت مهلته وصّف عادةً بأمانة حتى قاطعه شيء ما، بينما المشارك المرفوض أنتج عملاً قررت ألا تدفع مقابله، والاحتفاظ به في مجموعة البيانات يناقض الرفض.

محتوى المخرجات

يكتب Potato ملفات لكل مُوصِّف تحت output_annotation_dir، وحين يُضبط export_annotation_format يكتب تصديراً دورياً تحت <output_annotation_dir>/exports/<format>/. يحمل كل سجل مُصدَّر المثيل والمُوصِّف والوسوم حسب اسم المخطط:

json
{"instance_id": "t_014", "user_id": "5f2c9a1b3d4e5f6a7b8c9d0e", "labels": {"sentiment": {"positive": "positive"}}, "spans": {}, "links": {}}

قيمة user_id هي معرّف المشارك في Prolific، لأنه اسم المستخدم الذي أنشأه Potato به، وهذا ما يتيح لك مطابقة الصف مع إرسال في Prolific لقبوله أو لدفع مكافأة. تعامل مع هذا العمود على أنه بيانات تعريفية حين تنشر مجموعة البيانات.

إجراء دراسة تجريبية أولاً

شغّل من 5 إلى 10 مشاركين قبل إطلاق الدراسة الكاملة، واقرأ مخرجاتهم بدلاً من الاكتفاء بمعدل إكمالهم. هناك إخفاقان يكلفان كثيراً إن اكتُشفا لاحقاً. الأول تعليمة غامضة على نحو لا تراه لأنك أنت من كتب المهمة، والثاني زمن لكل عنصر بعيد عن تقديرك، وهذا يعني أن أجرك خاطئ في اتجاه أو آخر.

سعّر الدراسة وفق الزمن الوسيط للدراسة التجريبية لا وفق زمنك أنت. أبقِ الواجهة قابلة للاستخدام بعرض شاشة الهاتف، لأن بعض المشاركين سيستخدمون الهاتف مهما قال وصف الدراسة. اقبل الإرسالات بسرعة، لأن الناس ينتظرون المال، ولأن زمن قبولك ظاهر للمشاركين المستقبليين وهم يقررون هل يأخذون دراستك.

الخطوات التالية

المرجع الكامل موجود في تكامل التعهيد الجماعي على هذا الموقع، وتغطي وثائق تكامل Prolific في مستودع Potato نقاط نهاية واجهة برمجة تطبيقات الإدارة التي تقف خلف لوحة التحكم. ابدأ من هناك إن احتجت إلى إنشاء الدراسات أو مزامنة المؤهلات أو دفع مقابل الاستبعاد في مرحلة الفرز (screen-outs) من شيفرتك الخاصة.