تشغيل دراسات التوصيف على Prolific
شغّل دراسة توصيف في Potato على Prolific مع تسجيل دخول مباشر عبر الرابط، ورمز إكمال، وفحوصات انتباه، ومتابعة الإرسالات عبر واجهة برمجة التطبيقات.
وجّه رابط الدراسة في 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 هذا التحوّل للدراسات التي كانت تعمل عليه.
ما تحتاجه قبل البدء
- حساب باحث على Prolific.
- Potato يعمل على خادم له رابط HTTPS عام. يغطي دليل النشر على الخادم هذه الخطوة.
- ملف إعدادات يتضمن ملفات بياناتك و
item_propertiesومخطط توصيف واحداً على الأقل.
الإعدادات التي يحتاجها Potato
أربعة إعدادات تحوّل مشروع Potato عادياً إلى مشروع يستطيع Prolific تشغيله. يحدد login.url_argument اسم معامل الرابط الذي يحمل معرّف المشارك في Prolific، ويجب أن يطابق completion_code رمزاً مضبوطاً في دراسة Prolific، ويعيد مفتاحا إعادة التوجيه المشاركين إلى Prolific بدلاً من تركهم على صفحة انتهاء. أما مفاتيح التوزيع التي تليها فتضع سقفاً لمقدار العمل الذي يُعطى لكل مشارك، وهذا ما يُبقي تكلفة الدراسة قابلة للتوقع.
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 في سلسلة الاستعلام:
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 الموافقة والفرز المسبق والتعليمات واستبياناً بعد الدراسة حول مرحلة التوصيف، ويمر المشاركون بها بالترتيب الذي تسردها به:
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 هذه الفحوصات من ملف خاص بها لا من بياناتك، فتبقى خارج مجموعة بياناتك:
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 أي استجابة تصل أسرع مما يستطيع أي شخص قراءة العنصر فيه، أياً كان محتواها. تعمل الساعة على الخادم، من لحظة إرساله العنصر إلى لحظة استلامه الحفظ.
يحمل كل عنصر فحص معرّفاً، والنص الذي يراه المشارك، والإجابة المتوقعة لكل مخطط باسمه:
[
{
"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 عن حالات الإرسالات، إلى جانب تسجيل الدخول المباشر عبر الرابط الذي يقوم به أصلاً:
login:
type: prolific
url_argument: PROLIFIC_PID
prolific:
config_file_path: configs/prolific_config.yaml
completion_code: "C1ABCDEF"أضف هذه الكتلة إلى الإعدادات أعلاه. الملف الذي تشير إليه يحتوي على رمز واجهة برمجة التطبيقات، لذا أبقه خارج نظام التحكم في الإصدارات:
# 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 حين ينبغي أن يغيّر سبب الانسحاب مصير ذلك العمل المكتمل:
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>/. يحمل كل سجل مُصدَّر المثيل والمُوصِّف والوسوم حسب اسم المخطط:
{"instance_id": "t_014", "user_id": "5f2c9a1b3d4e5f6a7b8c9d0e", "labels": {"sentiment": {"positive": "positive"}}, "spans": {}, "links": {}}قيمة user_id هي معرّف المشارك في Prolific، لأنه اسم المستخدم الذي أنشأه Potato به، وهذا ما يتيح لك مطابقة الصف مع إرسال في Prolific لقبوله أو لدفع مكافأة. تعامل مع هذا العمود على أنه بيانات تعريفية حين تنشر مجموعة البيانات.
إجراء دراسة تجريبية أولاً
شغّل من 5 إلى 10 مشاركين قبل إطلاق الدراسة الكاملة، واقرأ مخرجاتهم بدلاً من الاكتفاء بمعدل إكمالهم. هناك إخفاقان يكلفان كثيراً إن اكتُشفا لاحقاً. الأول تعليمة غامضة على نحو لا تراه لأنك أنت من كتب المهمة، والثاني زمن لكل عنصر بعيد عن تقديرك، وهذا يعني أن أجرك خاطئ في اتجاه أو آخر.
سعّر الدراسة وفق الزمن الوسيط للدراسة التجريبية لا وفق زمنك أنت. أبقِ الواجهة قابلة للاستخدام بعرض شاشة الهاتف، لأن بعض المشاركين سيستخدمون الهاتف مهما قال وصف الدراسة. اقبل الإرسالات بسرعة، لأن الناس ينتظرون المال، ولأن زمن قبولك ظاهر للمشاركين المستقبليين وهم يقررون هل يأخذون دراستك.
الخطوات التالية
- انقل دراسة قديمة من Mechanical Turk
- أعدّ مراقبة الجودة بتفصيل أكبر
- احسب الاتفاق بين المُوصِّفين على النتيجة
المرجع الكامل موجود في تكامل التعهيد الجماعي على هذا الموقع، وتغطي وثائق تكامل Prolific في مستودع Potato نقاط نهاية واجهة برمجة تطبيقات الإدارة التي تقف خلف لوحة التحكم. ابدأ من هناك إن احتجت إلى إنشاء الدراسات أو مزامنة المؤهلات أو دفع مقابل الاستبعاد في مرحلة الفرز (screen-outs) من شيفرتك الخاصة.