كيفية تحويل اللهجات العربية (المصرية، الشامية، الخليجية) إلى فصحى تلقائياً باستخدام Few‑shot وRAG

٢٤ نوفمبر ٢٠٢٥
Two students working together on building a robot in an industrial setting, wearing protective goggles.

مقدمة: لماذا لا تزال مسألة تحويل اللهجات إلى فصحى مهمة؟

يتحدّث أغلب الناطقين بالعربية بلهجات محلية في الحياة اليومية، بينما تظل الخدمات التعليمية، الحكومية والإعلامية تعتمد الفصحى. تحويل النصوص أو الكلام من لهجة محلية إلى فصحى (DA→MSA) يمكّن البحث، الفهرسة، الترجمة الآلية، وتصحيح المحتوى تلقائياً. في السنوات الأخيرة، ظهرت منهجيتان عمليتان لمشكلة التحويل: Few‑shot prompting (للاستفادة من قدرات النماذج الكبيرة دون تدريب مكثف) وRAG — Retrieval‑Augmented Generation لدمج قواعد معرفية ومصادر مرجعية تقلّل من الهلوسة وتعزّز الدقّة.

في هذا المقال نقدم إطاراً عملياً لبناء نظام تحويل اللهجات (المصرية، الشامية، الخليجية) إلى فصحى باستخدام مزيج من Few‑shot وRAG مع توصيات لأفضل الـembeddings والـretrievers والـrerankers المناسبة للعربية.

خلاصة الأبحاث والتطوّرات الحديثة (ماذا يقول العلم؟)

مؤتمرات وورش خاصة باللغة العربية أظهرت تقدماً ملموساً في مهام تحويل اللهجات إلى فصحى: مشاركات مشتركة في ورش OSACT 2024 بيّنت إمكانات النماذج الكبيرة (مثل GPT‑3.5/4) في هذه المهمة، كما قدّم المشاركون نماذج مُخصّصة (AraT5) وحصلوا على نتائج تنافسية عند مزج Fine‑tuning مع استراتيجيات تحويل متخصصة.

على مستوى تمثيل النصوص وعمليات الاسترجاع، ظهرت نماذج embedding خاصة بالعربية (مثل Swan) وتقويم شامل (ArabicMTEB) أظهر تحسناً في الأداء عبر اللهجات مقابل النماذج متعددة اللغات العامة، مما يجعلها مناسبة كمكوّن في نظم RAG مخصّصة للعربية.

أبحاث منهجية عن تحسين قنوات RAG للعربية تقترح أن اختيارات التجزئة (chunking) والـreranker والـembedding لها أثر كبير على الدقّة والموثوقية، وأن إضافة مرحلة reranking تحسّن نسبة الأجوبة المبنية على مصادر صحيحة. كما أن التحويل عبر لغتين (cross‑lingual) يكشف تحديات استرجاعية مهمة يجب معالجتها بتوازن المصادر أو ترجمة الاستعلامات قبل الاسترجاع.

تصميم معماري مقترح لنظام DA→MSA يجمع Few‑shot وRAG

فيما يلي مكوّنات النظام المقترح خطوة‑بخطوة، مع ملاحظات عملية للتطبيق:

  1. معالجة إدخال المستخدم (Preprocessing): تنظيف النص، توحيد ترميزات Unicode، إزالة الرموز غير النصّية، واحتساب لهجة مرجّحة (dialect detector) إن أمكن.
  2. مرحلة الاسترجاع (Retriever): استخدم embeddings عربية متخصّصة (مثل Swan أو Multilingual‑E5/BGE عند غياب Swan) لفهرسة قاعدة بيانات تحتوي أمثلة تحويل (parallel DA↔MSA)، قواعد صرفية، وعبارات قياسية. قم بتجزئة المستندات بأسلوب "جملة‑واعية" لتحسين الدقّة.
  3. إعادة الترتيب (Reranker): نفّذ reranker (بيس‑بِت) على نتائج الاسترجاع لرفع احتمال استرجاع السياقات الأكثر ملاءمة؛ هذا يقلل من الهلوسة أثناء التوليد.
  4. تجميع الـcontext وFew‑shot prompts: اختر 3–8 أمثلة (few‑shot) مختارة ديناميكياً من نتائج الاسترجاع: أمثلة قصيرة تُظهِر تحويلات دقيقة بين لهجة محددة وفصحى. اجعل الصيغة تحتوي تعليمات صريحة (الأسلوب، الدرجة الرسمية، الاحتفاظ بالأسماء الخاصة) ثم أرسلها إلى مُولّد (LLM) مع السياق المسترجَع.
  5. التوليد والتحقق (Generate + Validate): اطلب من المولد إنتاج نتيجة وحصر مستوى الثقة (confidence/likelihood). بعدها نفّذ خطوة تحقق بسيطة: مطابقة المعاني الأساسية (semantic similarity) بين خرج المولد والسياق المرجعي/الأمثلة؛ وفي حال انخفاض الثقة أعد الطلب أو أوجّه المولد لاقتراح بدائل.
  6. التعلّم المستمر (Feedback loop): خزن الحالات ذات الجودة العالية كزمن تشغيل جديد (pseudo‑parallel) لاستخدامها لاحقاً في Fine‑tuning أو لتحسين اختيار الأمثلة في الـfew‑shot.

مخطط معماري مبسّط: Client → Preprocess → Dialect Detector → Retriever (embeddings) → Reranker → LLM + Few‑shot Context → Postprocess → Output.

أمثلة عملية: قالب Few‑shot وPrompt نموذجية

نقدّم هنا قالباً مبسطاً للـprompt يُستخدم مع LLM عند دمجه مع RAG. الفكرة: اختر 4 أمثلة قصيرة من قاعدة الأمثلة (التي استُرجعت عبر الـretriever) ثم أعرضها قبل الطلب الرئيسي.

مثال 1 (لهجة مصرية → فصحى):
د: "هو رايح المول دلوقتي؟"
ف: "هل سيذهب إلى المركز التجاري الآن؟"

مثال 2 (لهجة شامية → فصحى):
د: "شو بدك تشتري؟"
ف: "ما الذي ترغب بشرائه؟"

[السياق المسترجَع: ...]

تعليمات: حول الجملة التالية من لهجتها إلى فصحى فصيحة ومحافظة على المعنى، ولا تغيّر أسماء الأشخاص أو المصطلحات التقنية.
نص: "راح نروح السوق بعد المغرب"

نموذج التنفيذ: أرسل prompt مع الأمثلة والسياق المسترجَع كـcontext إلى المولد (مثلاً GPT‑4o أو نموذج مفتوح مثل ArMistral/AYA إذا كانت متوفرة في بيئتك). إذا أردت خفض التكاليف، استخدم نموذج توليد أخفّ واحتفظ بالنماذج الأكبر للتحقق/الرتابة (reranking) أو للمراجعة البشرية.

ملاحظة تجريبية حديثة: دراسات مقارنة أظهرت أن few‑shot prompting غالباً يتفوق على zero‑shot في مهام DA→MSA، وأن Fine‑tuning resource‑efficient (نماذج مُكمّشة/مقنّنة) يمكن أن يتخطى أداء الـzero‑shot لبعض النماذج العامة عند توافر بيانات محدودة.

قياس الأداء، المقاييس، والمخاطر العملية

مقاييس شائعة لتقييم أعمال التحويل: BLEU، CHR‑F/CHR‑F++، METEOR، ومقاييس تشابه دلالي (semantic similarity) باستخدام embeddings. كما يُنصح باختبار قابلية القراءة والأسلوب (fluency/style) بواسطة تقييم بشري أو معايير مُقنّنة.

مخاطر عملية ونصائح معاملية:

  • الهلوسة (hallucination): RAG يساعد بتقليلها عبر توفير مصادر مرجعية، لكن جودة الـretriever والـreranker حاسمة.
  • التحيّز واللهجات غير الممثلة: اختبر النظام على مجموعات بيانات متنوعة؛ دمج مصادر محلية يساعد التغلب على فقدان التمثيل.
  • الخصوصية: إذا كانت المدخلات حساسة، اعتمد تشفيراً للمؤشرات (hashed IDs) واحتفظ بالبيانات المحلية على خوادم مؤمّنة أو استخدم تقنيات differential privacy عند تجميع بيانات المستخدمين.

توصية عملية: ابدأ بنسخة Proof‑of‑Concept تستخدم embeddings جاهزة (مثل Swan‑Small أو Multilingual‑E5‑base) مع Reranker بسيط، ثم طوّر تدريجياً (تحسين chunking، تجميع أمثلة few‑shot الديناميكي، وخطّة fine‑tuning مرنة باستخدام بيانات مُجمّعة من التشغيل).

أبحاث 2025 توضح أن استراتيجيات توازن الاسترجاع عبر اللغات أو ترجمة الاستعلامات قبل الاسترجاع قد تحسّن الأداء في بيئات ثنائية اللغة/مختلطة. هذا مهم لإنشاء أنظمة RAG متعددة المصادر حيث توجد وثائق بالإنجليزية والعربية معاً.

خاتمة وخطوات مقترحة للتطبيق الفعلي

خلاصة: دمج Few‑shot prompting مع RAG يُعطي توازنًا جيدًا بين المرونة (استفادة من قدرات النماذج الكبيرة دون تدريب مكثف) والموثوقية (الاستناد إلى أمثلة ومراجع حقيقية). ابدأ بمشروع صغير يختبر ثلاثة لهجات (مصـرية، شامية، خليجية) على مجموعات بيانات صغيرة، واعمل على تحسين Retriever/Reranker وembeddings قبل الانتقال إلى Fine‑tuning.

خطوات سريعة للبدء:

  1. جمع مجموعة أمثلة parallel صغيرة لكل لهجة (200–2000 جملة إن أمكن).
  2. اختبار embeddings عربية (Swan أو Multilingual E5/BGE) وتقييم الاسترجاع.
  3. بناء pipeline RAG بسيط مع few‑shot templates قابلة للتبديل حسب اللهجة.
  4. قياس الأداء باستخدام مقاييس آلية وتقييم بشري.
  5. تطبيق حل تدريجي: Few‑shot → RAG → Fine‑tuning عند توافر بيانات أكبر.

للاطّلاع على المصادر والأبحاث التي استندنا إليها خلال المقال راجع أعمال OSACT 2024، Swan & ArabicMTEB، ودراسات تحسين RAG الأخيرة.