Skip to content

تغطية غير متجانسة للمُعلِّقين

خصِّص أعدادًا مختلفة من المُعلِّقين لعناصر مختلفة. اضبط حدًّا أقصى افتراضيًا، وعيِّنة تداخل طبقية لمراقبة الجودة، وتعزيزات تكيفية عند الاختلاف، وحصصًا لكل مُعلِّق، وتوجيهًا تلقائيًا للفصل.

تتيح لك التغطية غير المتجانسة تخصيص أعداد مختلفة من المُعلِّقين لعناصر مختلفة بدلًا من حدٍّ أقصى موحَّد. التصميم البحثي الشائع هو مُعلِّق واحد على معظم العناصر، مع تداخل مُعلِّقَين أو ثلاثة على عيِّنة بنسبة 5–10٪ لمراقبة الجودة. يعبِّر Potato عن ذلك عبر كتلتَي الإعداد num_annotators_per_item وper_annotator_quota.

الحدود القصوى للمُعلِّقين لكل عنصر

num_annotators_per_item هو المفتاح المعياري. يقبل عددًا صحيحًا واحدًا لحدٍّ أقصى موحَّد، أو تعيينًا منظَّمًا يتضمَّن قيمةً افتراضية وعيِّنة تداخل وتعزيزًا تكيفيًا اختياريًا:

yaml
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]نسبة العناصر التي ستتم معاينتها
countint ≥ 2الحد الأقصى للمُعلِّقين للعناصر المعاينة (يجب أن يتجاوز default)
stratify_byسلسلة نصية (اختياري)حقل بيانات العنصر المستخدَم لتقسيم العيِّنة إلى طبقات
seedint (اختياري)بذرة RNG؛ تكون افتراضيًا قيمة random_seed العامة

عند ضبط stratify_by، تُطبَّق النسبة لكل طبقة، بحيث تُسهم كل فئة بشكل متناسب.

التعزيز التكيفي

يوسِّع التعزيز التكيفي الحدَّ الأقصى لعنصرٍ اختلف عليه مُعلِّقوه الأوائل. بمجرد أن يحظى عنصر بتعليقَين على الأقل وتتجاوز درجةُ اختلافه قيمةَ disagreement_threshold، يُرفَع حدُّه إلى boost_to ويعود العنصر إلى طابور التخصيص. ويحدث التعزيز مرةً واحدةً لكل عنصر.

الحصة لكل مُعلِّق

يتحكَّم per_annotator_quota في عدد العناصر المخصَّصة لكل مُعلِّق، بشكلٍ مستقل عن الحدود القصوى لكل عنصر:

yaml
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. تظهر العناصر منخفضة الجودة بمجرد تشبُّع العيِّنة، بدلًا من انتظار قيام أحد المحكِّمين بإعادة بناء الطابور يدويًا.

yaml
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/. من جذر المستودع:

bash
python potato/flask_server.py start examples/advanced/heterogeneous-coverage/config.yaml -p 8000

يستخدم 20 عنصرًا عبر مجالَين، ويعاين 20٪ لتداخل 3 مُعلِّقين مع التقسيم الطبقي حسب المجال، ويفعِّل تعزيزًا تكيفيًا عند العتبة 0.5، ويعرِّف مستويَي خبرة، ويوجِّه العناصر منخفضة التوافق إلى الفصل.

ذات صلة

للاطلاع على تفاصيل التنفيذ، راجع وثائق المصدر.