دليل عملي لبناء نظام تصحيح التشكيل الآلي للعربية باستخدام نماذج صغيرة

٢٤ نوفمبر ٢٠٢٥
Group of young engineers collaborating on robotic equipment in an indoor industrial setting.

مقدمة — لماذا نحتاج نظام تصحيح تشكيل آلي خفيف؟

تفتقر النصوص العربية المكتوبة غالباً إلى التشكيل (الحركات)، وهذا يؤثر على قابلية القراءة، تحويل النص إلى كلام، وتحليل المعنى. يهدف هذا الدليل العملي إلى إرشاد المطورين والباحثين لبناء نظام تصحيح تشكيل للعربية قابل للاستخدام الفعلي على خوادم منخفضة الموارد أو حتى على الحافة (edge). سنغطي اختيار البيانات، بنية نموذج صغيرة ومناسبة، عملية التدريب والتقييم، ونصائح لنشر اقتصادي.

المستهدف من هذا الدليل: مهندسو NLP، مطورو واجهات برمجية، وطلاب الراغبين في نظام عملي يمكن تشغيله بتكاليف وموارد محدودة.

البيانات والنهج الهندسي: مصادر ومقاييس

مصادر بيانات موثوقة:

  • Tashkeela — مجموعة كبيرة من النصوص العربية الموقّدة يمكن استخدامها لتدريب النماذج الإحصائية والعصبية. تغطي النصوص الكلاسيكية والحديثة وتُستخدم كمصدر أساسي للمهام التجريبية والتدريب.
  • مجموعات أصغر مصنفة يدوياً أو بيانات من مجالات محددة (قانون، طب، تعليم) مفيدة لتهيئة النموذج لسيناريو الإنتاج.

مقاييس التقييم الشائعة:

  • DER (Diacritization Error Rate): قياس أخطاء العلامات على مستوى الحرف.
  • WER (Word Error Rate) بعد إعادة تشكيل الكلمات — يستخدم كثيراً في أدبيات النمذجة العصبية لتصحيح التشكيل. أظهرت أعمال حديثة أن نماذج sequence-to-sequence تحسن WER مقارنة بالأساليب التقليدية.

اختيار النهج: للأغراض العملية والموارد المحدودة ننصح باتباع إحداها أو مزيج منهما:

  1. نموذج تسلسل إلى تسلسل (seq2seq) خفيف مع ترميز حرفي أو byte-level (مثل ByT5 المصغر) لتقليل الحاجة لتقسيمات معقدة — أسلوب ناجح في دراسات حديثة.
  2. نموذج تسميات على مستوى الحرف (sequence labeling) عبر Transformer صغير أو BiLSTM+CRF إذا رغبت في تبسيط الإخراج وتحسين زمن الاستدلال على الأجهزة الضعيفة.

تطبيق عملي خطوة بخطوة (مع مثال مبسط)

فيما يلي خطة تنفيذية عملية قابلة للتطبيق داخل مشروع صغير باستخدام مكتبات شائعة (Hugging Face Transformers، PyTorch).

1) تهيئة البيانات

أ. نأخذ نصاً مشكلاً (من Tashkeela مثلاً) ونولّد زوجي (undicritized → diacritized). ب. نطهر البيانات: إزالة الوسوم، توحيد الياء والألف، التعامل مع الرموز والأرقام. ج. نقسم إلى مجموعه تدريب/تطوير/اختبار متوازنة بحسب المجال.

2) نموذج مقترح خفيف (اقتراح عملي)

استخدم نموذج Transformer صغير كـ ByT5-small أو T5-multilingual صغير مع ترميز على مستوى البايت/الحرف. خيار آخر: شبكة تسميات (token classification) مع Transformer صغير لتقليل تعقيد الإدخال/الإخراج.

3) مثال أوامر تدريب مبسّط (pseudo-code)

# مثال مبسّط باستخدام 🤗 Transformers (فكرة عامة)
from datasets import load_dataset
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM, Trainer, TrainingArguments

# 1. تحميل البيانات (مفترض أنها بصيغة JSONL: {"src": "نص بلا تشكيل", "tgt": "نص مشكّل"})
dataset = load_dataset('json', data_files={'train':'train.jsonl','validation':'val.jsonl','test':'test.jsonl'})

# 2. مشفّر ونموذج صغير
model_name = 'google/byt5-small'  # مثال
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSeq2SeqLM.from_pretrained(model_name)

# 3. تجهيز الدُفعات والدوال المساعدة، ثم التدريب
args = TrainingArguments(output_dir='out', num_train_epochs=3, per_device_train_batch_size=8)
trainer = Trainer(model=model, args=args, train_dataset=dataset['train'], eval_dataset=dataset['validation'])
trainer.train()

ملاحظات عملية:

  • اضبط طول السلاسل وبُنى الـ tokenizer ليتناسب مع التشكيل (ترميز حرفي أو byte-level يُسهل إدراج الحركات بين الأحرف).
  • استخدم استراتيجيات تقليل الحجم: quantization (8-bit أو 4-bit) وDistillation أو LoRA لتقليل الحاجة لذاكرة GPU عند النشر.
  • يمكن الاستفادة من مشروعات مفتوحة لمعايير إعداد البيانات والنماذج على GitHub كمراجع عملية.

4) التقييم والنشر

عند التقييم قِس DER وWER على مجموعة اختبار مستقلة تُحاكي بيانات الإنتاج. بعد ذلك اتبع مسارين للنشر:

  • نشر خفيف على السحابة باستخدام نماذج مؤنّقة ومكمّشة (quantized) لاستدعاء API منخفض التكلفة.
  • نشر محلي (on-device) لنماذج صغيرة جداً عبر تحويل النموذج إلى ONNX أو استخدام أدوات مثل ONNX Runtime/WebAssembly للتشغيل في المتصفّح أو على أجهزة منخفضة الموارد.

خلاصة ونصائح نهائية: ابدأ بحل بسيط: إعداد بيانات نظيفة (Tashkeela أو نسخ مُنقّحة)، نموذج Transformer صغير أو ByT5 مصغر للتجربة السريعة، وقِس الأداء باستخدام DER/WER. بعد الوصول لنتائج مقبولة، طبّق تحسينات الحجم (quantization/distillation) واقتناء نماذج خاصة بالمجال لتحسين الدقّة في الإنتاج.