Skip to content

التوسيم متعدد اللغات وللغات محدودة الموارد

التوسيم بلغات غير الإنجليزية: فجوة التنوع، والأساليب التشاركية مع المتحدثين الأصليين، وكيفية توطين واجهة Potato مع دعم الكتابة من اليمين إلى اليسار والخطوط والتسميات المترجمة.

التوسيم بلغة غير الإنجليزية هو مشكلتان في آنٍ واحد. المشكلة العلمية: معظم موارد معالجة اللغات الطبيعية تغطي حفنة من اللغات، والفئات لا تنتقل بسلاسة عبر الثقافات، وأنت بحاجة إلى متحدثين حقيقيين لا مجرد أشخاص ثنائيي اللغة لإنتاج تسميات جيدة. أما المشكلة العملية: فهي جعل الأداة تعرض اللغة بشكل صحيح، بما في ذلك النصوص المكتوبة من اليمين إلى اليسار والخطوط غير اللاتينية. تعالج Potato المشكلة الثانية عبر الإعدادات؛ أما الأولى فهي على عاتقك. يغطي هذا الدليل كلتيهما.

فجوة التنوع حقيقية وكبيرة

يوجد في العالم نحو 7,000 لغة، ومعالجة اللغات الطبيعية تخدم بشكل فعلي بضع عشرات منها فقط. لقد قدّم Joshi et al. (2020) قياساً كمياً لهذا الأمر: عدد قليل من اللغات يملك بيانات موسومة وفيرة، في حين أن الغالبية العظمى، التي يتحدث بها المليارات من الناس، لا تكاد تملك شيئاً، والفجوة تعيد إنتاج نفسها لأن الموارد تتدفق إلى اللغات التي تملكها بالفعل. عادةً ما يكون التوسيم هو عنق الزجاجة. إذا أردت لنموذج أن يعمل بـلغة محدودة الموارد، فلا بد لأحدٍ أن يوسم بيانات بها، وفي ذلك التوسيم تُكسب الجودة أو تُفقد.

وسّم مع مجتمع اللغة، لا بها فحسب

الميل الأول هو توظيف عمّال حشد ثنائيي اللغة بأجر زهيد وترجمة دليل إنجليزي. وكلا الجزأين محفوف بالمخاطر. يحاجّ Bird (2020) ضد الأساليب الاستخراجية التي تعامل مجتمع اللغة كمصدر للبيانات، ويُظهر النموذج التشاركي لمشروع Masakhane (Nekoto et al., 2020) نجاح البديل على نطاق واسع مع اللغات الأفريقية: يساعد المتحدثون الأصليون في تصميم المهمة، وتأليف الإرشادات، وامتلاك التسميات، بدلاً من مجرد التحقق من قرارات اتُّخذت في مكان آخر. وهناك نتيجتان عمليتان:

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

توطين واجهة Potato

النصف العملي. توطّن Potato الواجهة الموجَّهة للموسِّم عبر الإعدادات، دون أي تعديلات برمجية، وإن كان من المفيد معرفة الحدود مقدماً.

نص الواجهة. كتلة ui_language هي جدول نصوص لعناصر الواجهة. اضبط لغة المستند وترجم الأزرار والعناوين التي يراها الموسِّم:

yaml
ui_language:
  html_lang: ar
  html_dir: rtl            # right-to-left for Arabic, Hebrew, etc.
  submit_button: "إرسال"
  instructions_heading: "التعليمات"

يؤدي ضبط html_dir: rtl إلى قلب المستند بأكمله لدعم النصوص المكتوبة من اليمين إلى اليسار باستخدام المعالجة ثنائية الاتجاه الأصلية في المتصفح. وثمة قيد صريح واحد: تغطي ui_language شاشات التوسيم وتسجيل الدخول الأساسية، لكن عدة صفحات في جانب الإدارة (لوحة التحكم، والفصل في الخلافات، والتدريب، وشاشات تسجيل الخروج) لا تزال بالإنجليزية فقط، فخطّط لذلك إذا كان موسِّموك سيرونها.

الخطوط للنصوص غير اللاتينية. لا تأتي المتصفحات دائماً بخط افتراضي جيد لنصوص CJK أو العربية أو الهندية. حمّل خطاً عبر ورقة أنماط للمشروع باستخدام base_css:

yaml
base_css: "css/noto_font.css"

البيانات غير الإنجليزية. تقرأ Potato ملفات البيانات بترميز UTF-8 افتراضياً وتعرض أي محارف Unicode في حقل النص، فيظهر المحتوى غير الإنجليزي كما هو. وإذا استخدم ملف ترميزاً مختلفاً، فتجاوز ذلك لكل ملف على حدة (encoding:) أو بشكل عام (data_directory_encoding:).

التسميات المترجمة. هذا هو الفخ الدقيق الوحيد. تقوم Potato افتراضياً بـ"أنسنة" أسماء التسميات، أي إعادة تنسيقها وجعل أوائل كلماتها كبيرة، وهو ما قد يشوّه النصوص غير اللاتينية. أبقِ قيم name بالإنجليزية القابلة للقراءة آلياً لبياناتك، وأظهِر للموسِّم تسمية مترجمة باستخدام displayed_label، مع إيقاف الأنسنة:

yaml
annotation_schemes:
  - name: sentiment
    annotation_type: radio
    description: "ما هو شعور هذا النص؟"
    humanize_labels: false
    labels:
      - name: positive
        displayed_label: "إيجابي"
      - name: negative
        displayed_label: "سلبي"
      - name: neutral
        displayed_label: "محايد"

يظل التوسيم المخزَّن positive، فتبقى بياناتك نظيفة بينما يعمل الموسِّم بالكامل باللغة العربية.

الإرشادات والموافقة. ألّف صفحات الموافقة والإرشادات في surveyflow مباشرةً باللغة المستهدفة؛ فهي ملفات HTML تكتبها بنفسك، ولا شيء يفرض الإنجليزية. ولتشغيل المهمة نفسها عبر عدة لغات، تأتي Potato بأداة مساعدة اسمها setup_multilingual_config.py تولّد إعدادات خاصة بكل لغة انطلاقاً من قالب.

قراءات إضافية