تغطية غير متجانسة للمُعلِّقين
خصِّص أعدادًا مختلفة من المُعلِّقين لعناصر مختلفة. اضبط حدًّا أقصى افتراضيًا، وعيِّنة تداخل طبقية لمراقبة الجودة، وتعزيزات تكيفية عند الاختلاف، وحصصًا لكل مُعلِّق، وتوجيهًا تلقائيًا للفصل.
تتيح لك التغطية غير المتجانسة تخصيص أعداد مختلفة من المُعلِّقين لعناصر مختلفة بدلًا من حدٍّ أقصى موحَّد. التصميم البحثي الشائع هو مُعلِّق واحد على معظم العناصر، مع تداخل مُعلِّقَين أو ثلاثة على عيِّنة بنسبة 5–10٪ لمراقبة الجودة. يعبِّر Potato عن ذلك عبر كتلتَي الإعداد num_annotators_per_item وper_annotator_quota.
الحدود القصوى للمُعلِّقين لكل عنصر
num_annotators_per_item هو المفتاح المعياري. يقبل عددًا صحيحًا واحدًا لحدٍّ أقصى موحَّد، أو تعيينًا منظَّمًا يتضمَّن قيمةً افتراضية وعيِّنة تداخل وتعزيزًا تكيفيًا اختياريًا:
num_annotators_per_item:
default: 1
overlap_sample:
fraction: 0.1
count: 3
stratify_by: domain
seed: 42
adaptive:
enabled: true
disagreement_threshold: 0.5
boost_to: 3
min: 1أصبح max_annotations_per_item الآن اسمًا بديلًا مهجورًا لـ num_annotators_per_item: <int>.
عيِّنة التداخل
ترفع كتلة overlap_sample الحدَّ الأقصى على مجموعة فرعية حتمية من العناصر لمراقبة الجودة. تتم المعاينة مرةً واحدةً عند بدء التشغيل، وتُوسَم العناصر المختارة بـ required_annotations بحيث يعاملها منطق التخصيص بوصفها عالية التغطية.
| الحقل | النوع | الوصف |
|---|---|---|
fraction | عدد عشري في (0، 1] | نسبة العناصر التي ستتم معاينتها |
count | int ≥ 2 | الحد الأقصى للمُعلِّقين للعناصر المعاينة (يجب أن يتجاوز default) |
stratify_by | سلسلة نصية (اختياري) | حقل بيانات العنصر المستخدَم لتقسيم العيِّنة إلى طبقات |
seed | int (اختياري) | بذرة RNG؛ تكون افتراضيًا قيمة random_seed العامة |
عند ضبط stratify_by، تُطبَّق النسبة لكل طبقة، بحيث تُسهم كل فئة بشكل متناسب.
التعزيز التكيفي
يوسِّع التعزيز التكيفي الحدَّ الأقصى لعنصرٍ اختلف عليه مُعلِّقوه الأوائل. بمجرد أن يحظى عنصر بتعليقَين على الأقل وتتجاوز درجةُ اختلافه قيمةَ disagreement_threshold، يُرفَع حدُّه إلى boost_to ويعود العنصر إلى طابور التخصيص. ويحدث التعزيز مرةً واحدةً لكل عنصر.
الحصة لكل مُعلِّق
يتحكَّم per_annotator_quota في عدد العناصر المخصَّصة لكل مُعلِّق، بشكلٍ مستقل عن الحدود القصوى لكل عنصر:
per_annotator_quota:
default: 100
by_user:
alice: 30
by_user_role:
expert: 30
novice: 200
user_roles:
alice: expert
carol: noviceترتيب الحلّ: by_user[uid] ← by_user_role[user_roles[uid]] ← default.
التوجيه التلقائي للفصل
عند تفعيل كتلة الفصل، تُسجَّل العناصر من عيِّنة التداخل التي تبلغ حدَّها الأقصى تلقائيًا، وتُدفَع إلى طابور الفصل إذا هبط التوافق دون agreement_threshold. تظهر العناصر منخفضة الجودة بمجرد تشبُّع العيِّنة، بدلًا من انتظار قيام أحد المحكِّمين بإعادة بناء الطابور يدويًا.
adjudication:
enabled: true
adjudicator_users: [admin]
min_annotations: 2
agreement_threshold: 0.75فحص التوافق
بمجرد تشبُّع عناصر عيِّنة التداخل، تتوفَّر إحصاءات التوافق على /admin/iaa، التي تحسب مجموعة المقاييس الملائمة لكل annotation_type للمخطَّط — على سبيل المثال Cohen's وFleiss' kappa للمخطَّطات الاسمية، وweighted kappa للترتيبية منها، وkappa على مستوى الرمز إضافةً إلى span F1 للنطاقات. راجع دليل التوافق بين المُعلِّقين لمعرفة معاني هذه المقاييس.
مثال
يوجد عرض توضيحي قابل للتشغيل في examples/advanced/heterogeneous-coverage/. من جذر المستودع:
python potato/flask_server.py start examples/advanced/heterogeneous-coverage/config.yaml -p 8000يستخدم 20 عنصرًا عبر مجالَين، ويعاين 20٪ لتداخل 3 مُعلِّقين مع التقسيم الطبقي حسب المجال، ويفعِّل تعزيزًا تكيفيًا عند العتبة 0.5، ويعرِّف مستويَي خبرة، ويوجِّه العناصر منخفضة التوافق إلى الفصل.
ذات صلة
- إسناد المهام — استراتيجيات الإسناد
- دليل التوافق بين المُعلِّقين — المقاييس وراء
/admin/iaa - التعهيد الجماعي — التكامل مع MTurk وProlific
للاطلاع على تفاصيل التنفيذ، راجع وثائق المصدر.