Skip to content
Guides6 min read

إدخال الترميز النوعي إلى Potato: دفاتر الرموز والمذكّرات والرموز الحيّة

نظرة على وضع QDA، مساحة عمل تحليل البيانات النوعية القادمة في Potato 2.6: دفتر رموز حيّ، وترميز حيّ (in-vivo)، ومذكّرات تحليلية، وحالات، وبحث في النص الكامل عبر مجموعة بيانات بأكملها.

Potato Team

إن سبق لك أن رمّزت محاضر مقابلات، فأنت تعرف قصة البرمجيات. الأدوات الجادّة لتحليل البيانات النوعية (QDA)، مثل NVivo وATLAS.ti وMAXQDA وDedoose، قوية ومكلفة. تعيش على سطح المكتب، وتحبس مشروعك داخل ملف بصيغة احتكارية، وتحوّل التعاون إلى مفاوضات ترخيص. ينتهي المطاف بكثير من الباحثين إلى الترميز في جدول بيانات بدلاً من ذلك، ثم يفقدون الخيط في منتصف الطريق لأن جدول البيانات لا يدرك ما هو الرمز أصلاً.

انطلق Potato من الضفّة الأخرى، بوصفه أداة لتوسيم النصوص لمجموعات بيانات معالجة اللغة الطبيعية والتعلّم الآلي. وعلى مدى الإصدارات القليلة الأخيرة، نمت فيه القطع التي يحتاجها أيّ سير عمل نوعي: نطاقات (spans) فوق المقاطع، ودفتر رموز مشترك، ومقاييس للاتفاق. والإصدار 2.6 القادم يربط بينها جميعاً في وضع مصمَّم للطريقة التي يعمل بها الباحثون النوعيون فعلاً.

يأخذك هذا المنشور عبر وضع QDA: ما الذي يُفعّله، وكيف تتلاءم القطع، وكيف يبدو ملف الضبط. وإن أردت المرجع، فإن توثيق وضع QDA يضمّ قائمة الخيارات الكاملة.

Potato في وضع QDA، مع مخطط نطاق مدعوم بدفتر رموز، ولوحة بحث Find، وشريطي Notes وCodebook الجانبيينPotato في وضع QDA

مفتاح واحد، إعدادات نوعية افتراضية

تُشارَك معظم آليات Potato عبر مهام شديدة الاختلاف. مخطط النطاق نفسه الذي يوسم الكيانات المسماة في مجموعة بيانات NER يمكنه أن يوسم المقاطع في مقابلة. الفرق بين هاتين المهمتين ليس في مجموعة الميزات، بل في الموقف. مشروع NER قائم على التعهيد الجماعي يريد مجموعة وسوم ثابتة وأخذ عينات متداخلة لقياس الاتفاق. أما الباحث المنفرد الذي يرمّز عشرين مقابلة، فيريد أن يبتكر الرموز وهو يقرأ، وأن يحتفظ بملاحظات خاصة حول ما يراه.

وضع QDA هو المفتاح الوحيد الذي يفترض هذا الموقف الثاني:

yaml
qda_mode:
  enabled: true            # compose codebook + memos + cases + search

يؤدّي ضبط qda_mode.enabled: true إلى تحويل ميزات Potato العامة إلى إعداداتها النوعية الافتراضية. يصبح دفتر الرموز قابلاً للتحرير أثناء الترميز بدلاً من أن يكون مقفلاً. يُفعَّل الشريط الجانبي للمذكّرات. تُفعَّل الحالات مع الكشف التلقائي. ويصبح الترميز الحيّ متاحاً على أيّ مخطط نطاق توسمه بأنه مدعوم بدفتر الرموز.

الميزةالإعداد القياسي الافتراضيفي وضع QDA
وضع دفتر الرموزfixedopen: أضِف الرموز أو أعِد تسميتها أو غيّر لونها أو انقلها أو احذفها أثناء عملك
الشريط الجانبي للمذكّراتمعطَّلمفعَّل
الحالاتمعطَّلةمفعَّلة، مع كشف تلقائي
بحث المُوسِّم والمطالبةمعطَّلمتاح (search.annotator_claim: true)
مفتاح الترميز الحيّiنشِط على أيّ مخطط نطاق مدعوم بدفتر الرموز

لا شيء من هذا مثبَّت نهائياً. وضع QDA يغيّر نقطة البداية فقط؛ ويمكن تجاوز كل إعداد افتراضي. الاستثناء الوحيد هو حاجز أمان: إن ربطت خلفية تعهيد جماعي مثل Prolific أو Mechanical Turk، يفرض Potato قفل دفتر الرموز على fixed كي لا يتمكّن المُوسِّمون مدفوعو الأجر من إعادة تشكيل المخطط المشترك من تحتك.

القطع

دفتر رموز حيّ

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

يصبح مخطط النطاق جزءاً من دفتر الرموز حين توسمه:

yaml
annotation_schemes:
- annotation_type: span    # span + codebook = qualitative coding
  name: codes
  description: Highlight a passage and apply (or mint, via `i`) a code
  codebook: true
  labels: [access barriers, cost concerns, provider trust]

هذه labels هي مجموعة انطلاق، لا قفص. في وضع دفتر الرموز open تضيف الرموز وتعيد تسميتها وتغيّر لونها وتنقلها وتحذفها أثناء العمل. ويتيح الوضع extensible للمرمّزين إضافة الرموز دون حذف المشتركة منها؛ أما fixed فهو الوضع الكلاسيكي المقفل لِما إذا استقررت على مخطط نهائي.

الترميز الحيّ

الترميز الحيّ (in-vivo coding) يتّخذ كلمات المشارك ذاتها رمزاً. يقول أحدهم «لم أتمكّن ببساطة من الحصول على ردّ بالاتصال»، فتصبح عبارة «الحصول على ردّ بالاتصال» رمزاً، حرفياً.

حدّد مقطعاً على مخطط نطاق مدعوم بدفتر الرموز، واضغط مفتاح الترميز الحيّ (codebook_invivo_key، وقيمته الافتراضية i). يسكّ Potato رمزاً مباشرةً من النص المُبرَز. وحين تفعل هذا عبر مجموعة بيانات، يصبح التشظّي هو العدوّ: ينتهي بك الأمر إلى «لا ردّ بالاتصال» و«لم أتمكّن من الحصول على ردّ بالاتصال» و«لم يتّصلوا قطّ» كثلاثة رموز لفكرة واحدة. ويصدّ مُؤلِّف الرموز ذلك بإظهار الرموز شبه المكرّرة وأنت تكتب، كي تعيد استخدام رمز قائم بدلاً من توليد رمز آخر.

المذكّرات

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

الحالات

تجمع الحالة المقتطفات في وحدة تحليل: مشارك، أو وثيقة، أو زيارة ميدانية. وبمجرد تجميع المقتطفات، تُرفَع سمات مستوى الحالة كي تتمكّن من جدولة الرموز مقابل متغيّرات المشاركين. إن حمل كل مقابلة حقل condition، يستطيع الجدول التقاطعي في لوحة الإدارة أن يُظهر كيف يتوزّع رمز ما عبر الظروف.

yaml
cases:
  enabled: true
  key: participant_id
  attributes: [condition]

البحث

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

yaml
search:
  enabled: true
  annotator_claim: true

كيف تتلاءم القطع معاً

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

معمارية وضع QDA: مخزن مشروع مشترك أسفل دفتر الرموز والمذكّرات والحالات والبحث، مع تدفّق الترميز الحيّكيف يؤلّف وضع QDA قطعه فوق مخزن مشترك

ملف ضبط كامل

إليك دراسة صغيرة لكنها كاملة. كتل cases وsearch والمذكّرات اختيارية (وضع QDA يُفعّل الحالات والمذكّرات أصلاً)، فلا تكتبها إلا لضبط إعداد افتراضي مثل مفتاح الحالة.

yaml
annotation_task_name: My Qualitative Study
task_dir: .
output_annotation_dir: annotation_output/
data_files:
- data/interviews.json
item_properties:
  id_key: id
  text_key: text
 
qda_mode:
  enabled: true
 
codebook_invivo_key: i
 
cases:
  enabled: true
  key: participant_id
  attributes: [condition]
 
search:
  enabled: true
  annotator_claim: true
 
annotation_schemes:
- annotation_type: span
  name: codes
  description: Highlight a passage and apply (or mint, via `i`) a code
  codebook: true
  labels: [access barriers, cost concerns, provider trust]

شغّله من جذر المستودع بعد تثبيت 2.6:

bash
python potato/flask_server.py start examples/advanced/qda-mode-example/config.yaml -p 8000

استخراج ترميزك مجدّداً

يحوّل مُصدِّران البيانات المرمّزة إلى المخرجات التي تحتاجها ورقة بحثية نوعية:

  • codebook يعطي صفاً واحداً لكل رمز، مع تسلسله الهرمي ووصفه ولونه وعدد مرّات استخدامه.
  • quotation_report يعطي صفاً واحداً لكل نطاق مرمّز: الاقتباس، وإزاحاته الحرفية، ونسخة المصدر، والمرمّز. أضِف include_memos=true لإلحاق مذكّراتك.
bash
python -m potato.export config.yaml --format quotation_report \
  --option include_memos=true -o quotations.csv

إن رمّز المادة نفسها أكثر من شخص، فستحتاج إلى رقم للموثوقية. يُبلّغ Potato عن كابا كوهين وفلايس (Cohen's and Fleiss' kappa) على الرموز، وقد وصلت في الإصدار 2.5 إلى جانب هذين المُصدِّرين.

أين يقع هذا

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

يأتي وضع QDA في Potato 2.6. يغطّي التوثيق الكامل كل خيار، ويشرح دليل الاتفاق بين المُوسِّمين مقاييس الموثوقية.