إدخال الترميز النوعي إلى Potato: دفاتر الرموز والمذكّرات والرموز الحيّة
نظرة على وضع QDA، مساحة عمل تحليل البيانات النوعية القادمة في Potato 2.6: دفتر رموز حيّ، وترميز حيّ (in-vivo)، ومذكّرات تحليلية، وحالات، وبحث في النص الكامل عبر مجموعة بيانات بأكملها.
إن سبق لك أن رمّزت محاضر مقابلات، فأنت تعرف قصة البرمجيات. الأدوات الجادّة لتحليل البيانات النوعية (QDA)، مثل NVivo وATLAS.ti وMAXQDA وDedoose، قوية ومكلفة. تعيش على سطح المكتب، وتحبس مشروعك داخل ملف بصيغة احتكارية، وتحوّل التعاون إلى مفاوضات ترخيص. ينتهي المطاف بكثير من الباحثين إلى الترميز في جدول بيانات بدلاً من ذلك، ثم يفقدون الخيط في منتصف الطريق لأن جدول البيانات لا يدرك ما هو الرمز أصلاً.
انطلق Potato من الضفّة الأخرى، بوصفه أداة لتوسيم النصوص لمجموعات بيانات معالجة اللغة الطبيعية والتعلّم الآلي. وعلى مدى الإصدارات القليلة الأخيرة، نمت فيه القطع التي يحتاجها أيّ سير عمل نوعي: نطاقات (spans) فوق المقاطع، ودفتر رموز مشترك، ومقاييس للاتفاق. والإصدار 2.6 القادم يربط بينها جميعاً في وضع مصمَّم للطريقة التي يعمل بها الباحثون النوعيون فعلاً.
يأخذك هذا المنشور عبر وضع QDA: ما الذي يُفعّله، وكيف تتلاءم القطع، وكيف يبدو ملف الضبط. وإن أردت المرجع، فإن توثيق وضع QDA يضمّ قائمة الخيارات الكاملة.
Potato في وضع QDA
مفتاح واحد، إعدادات نوعية افتراضية
تُشارَك معظم آليات Potato عبر مهام شديدة الاختلاف. مخطط النطاق نفسه الذي يوسم الكيانات المسماة في مجموعة بيانات NER يمكنه أن يوسم المقاطع في مقابلة. الفرق بين هاتين المهمتين ليس في مجموعة الميزات، بل في الموقف. مشروع NER قائم على التعهيد الجماعي يريد مجموعة وسوم ثابتة وأخذ عينات متداخلة لقياس الاتفاق. أما الباحث المنفرد الذي يرمّز عشرين مقابلة، فيريد أن يبتكر الرموز وهو يقرأ، وأن يحتفظ بملاحظات خاصة حول ما يراه.
وضع QDA هو المفتاح الوحيد الذي يفترض هذا الموقف الثاني:
qda_mode:
enabled: true # compose codebook + memos + cases + searchيؤدّي ضبط qda_mode.enabled: true إلى تحويل ميزات Potato العامة إلى إعداداتها النوعية الافتراضية. يصبح دفتر الرموز قابلاً للتحرير أثناء الترميز بدلاً من أن يكون مقفلاً. يُفعَّل الشريط الجانبي للمذكّرات. تُفعَّل الحالات مع الكشف التلقائي. ويصبح الترميز الحيّ متاحاً على أيّ مخطط نطاق توسمه بأنه مدعوم بدفتر الرموز.
| الميزة | الإعداد القياسي الافتراضي | في وضع QDA |
|---|---|---|
| وضع دفتر الرموز | fixed | open: أضِف الرموز أو أعِد تسميتها أو غيّر لونها أو انقلها أو احذفها أثناء عملك |
| الشريط الجانبي للمذكّرات | معطَّل | مفعَّل |
| الحالات | معطَّلة | مفعَّلة، مع كشف تلقائي |
| بحث المُوسِّم والمطالبة | معطَّل | متاح (search.annotator_claim: true) |
| مفتاح الترميز الحيّ | i | نشِط على أيّ مخطط نطاق مدعوم بدفتر الرموز |
لا شيء من هذا مثبَّت نهائياً. وضع QDA يغيّر نقطة البداية فقط؛ ويمكن تجاوز كل إعداد افتراضي. الاستثناء الوحيد هو حاجز أمان: إن ربطت خلفية تعهيد جماعي مثل Prolific أو Mechanical Turk، يفرض Potato قفل دفتر الرموز على fixed كي لا يتمكّن المُوسِّمون مدفوعو الأجر من إعادة تشكيل المخطط المشترك من تحتك.
القطع
دفتر رموز حيّ
في الترميز على نمط النظرية المتجذّرة، دفتر الرموز ليس شيئاً تكتبه مسبقاً. إنه ينمو مع قراءتك. تلاحظ فكرة متكررة فتسمّيها، ثم تدرك بعد أسبوع أن رمزين لديك هما في الحقيقة الرمز نفسه فتدمجهما.
يصبح مخطط النطاق جزءاً من دفتر الرموز حين توسمه:
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، يستطيع الجدول التقاطعي في لوحة الإدارة أن يُظهر كيف يتوزّع رمز ما عبر الظروف.
cases:
enabled: true
key: participant_id
attributes: [condition]البحث
لا يمكن التنقّل في مجموعة بيانات إلا إذا أمكنك القفز إلى أيّ ذكر لكلمة. يتضمّن وضع QDA بحث النص الكامل FTS5 عبر مجموعة البيانات بأكملها. ومع annotator_claim: true، يستطيع المرمّز سحب أيّ نتيجة بحث مباشرةً إلى قائمة مهامه الخاصة، وهكذا يتنقّل محلّل منفرد عبر مجموعة بيانات بحسب الموضوع بدلاً من قراءتها من أوّلها إلى آخرها حصراً.
search:
enabled: true
annotator_claim: trueكيف تتلاءم القطع معاً
تحت الغطاء، يقرأ دفتر الرموز والمذكّرات والحالات والبحث، ويكتبون، في قاعدة بيانات المشروع نفسها، فالرمز المسكوك في مكان ما يصبح فوراً قابلاً للبحث والتصدير في كل مكان آخر.
كيف يؤلّف وضع QDA قطعه فوق مخزن مشترك
ملف ضبط كامل
إليك دراسة صغيرة لكنها كاملة. كتل cases وsearch والمذكّرات اختيارية (وضع QDA يُفعّل الحالات والمذكّرات أصلاً)، فلا تكتبها إلا لضبط إعداد افتراضي مثل مفتاح الحالة.
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:
python potato/flask_server.py start examples/advanced/qda-mode-example/config.yaml -p 8000استخراج ترميزك مجدّداً
يحوّل مُصدِّران البيانات المرمّزة إلى المخرجات التي تحتاجها ورقة بحثية نوعية:
codebookيعطي صفاً واحداً لكل رمز، مع تسلسله الهرمي ووصفه ولونه وعدد مرّات استخدامه.quotation_reportيعطي صفاً واحداً لكل نطاق مرمّز: الاقتباس، وإزاحاته الحرفية، ونسخة المصدر، والمرمّز. أضِفinclude_memos=trueلإلحاق مذكّراتك.
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. يغطّي التوثيق الكامل كل خيار، ويشرح دليل الاتفاق بين المُوسِّمين مقاييس الموثوقية.