لماذا «تنظيف» النصّ العربي؟
النصّ العربيّ الخامّ المنسوخ من PDF أو موقع ويب يحتوي عادة على مفاجآت: مسافات مكرّرة، تطويلات بصريّة (ـــ)، تشكيل غير ضروري، خلط بين الألف الهمزة والألف المجرّدة، تاء مربوطة مقابل هاء. هذه الفروقات لا يلاحظها القارئ البشريّ، لكنّها تكسر البحث، الفهرسة، وتدريب نماذج الذكاء الاصطناعي.
محرّكات البحث تعتبر «مكتبه» و«مكتبة» كلمتين مختلفتين. تطبيع النصّ قبل التخزين يحلّ هذه المشكلة جذرياً.
الخيارات التسعة وكيف تعمل
حذف التطويل (U+0640): يزيل الكشيدة المستخدمة لتوسيع الكلمات بصرياً. «الـعـربيـة» تصبح «العربية».
حذف التشكيل: يزيل الحركات (U+064B–U+0652) والشدّة والتنوين. «العَرَبِيَّة» تصبح «العربية».
تطبيع الألف: يوحّد أ، إ، آ إلى ا. «أحمد» و «احمد» تتطابقان.
تطبيع الياء: يحوّل الألف المقصورة ى إلى ياء ي. مفيد للنصوص المصريّة مقابل المغاربيّة.
تاء مربوطة إلى هاء: يحوّل ة إلى ه. تطبيع شامل لمحرّكات البحث، لكن يُغيّر معنى بعض الكلمات — استخدمه بحذر.
دمج المسافات: المسافات المتتالية تصبح مسافة واحدة. الأسطر الفارغة المتكرّرة تصبح فاصل سطر واحداً.
قصّ السطور: يحذف المسافات في بداية ونهاية كلّ سطر.
الأرقام العربيّة إلى لاتينيّة: ٠١٢٣ → 0123. مفيد للتعامل مع APIs أو قواعد بيانات.
تطبيع الترقيم: يحوّل علامات الترقيم العربيّة (، ؛ ؟) إلى نظيراتها اللاتينيّة. اعكس الإعداد إذا كنت تنشر للجمهور العربيّ — العلامات العربيّة أصلح.
حالات الاستخدام الواقعيّة
تحضير بيانات تدريب نماذج اللغة: تطبيق NFC + حذف التشكيل + توحيد الألف ضروري لتقليل حجم المفردات وزيادة التعميم.
محرّك بحث داخليّ: طبّع قبل الفهرسة، وطبّق نفس التطبيع على الاستعلام. القارئ يكتب «احمد» فيجد «أحمد».
تنظيف نصوص OCR: المسح الضوئي يُدخل تطويلات ومسافات عشوائيّة. التنظيف يستعيد القابليّة للقراءة.
المعايير: NFC, NFD, ومتى تستخدم أيّاً منها
قبل أيّ تطبيع لغويّ، يجب توحيد التمثيل الثنائيّ للحروف نفسها. Unicode يسمح بتمثيل الحرف الواحد بطرق متعدّدة: مثلاً، حرف الألف بالهمزة (أ) يمكن تخزينه كنقطة كود واحدة (U+0623) أو كألف عاديّة (U+0627) متبوعة بهمزة فوقيّة منفصلة (U+0654). النصّ على الشاشة يبدو متطابقاً، لكن البحث والمقارنة يفشلان.
صيغة NFC (Normalization Form Composed): تدمج الحرف وعلاماته التشكيليّة في نقطة كود واحدة عند الإمكان. هي الصيغة المفضّلة لتخزين النصّ العربيّ، وهي افتراضيّة في JavaScript الحديث وقواعد البيانات.
صيغة NFD: تفصل الحرف عن علاماته. مفيدة عند البحث عن نمط في حروف الأساس بصرف النظر عن التشكيل، أو عند بناء فهرس مُعجمي يتجاهل العلامات.
القاعدة العمليّة: طبّق NFC أوّلاً، ثمّ ابدأ بقواعد التطبيع اللغويّ. تجاهل هذه الخطوة سبب رئيسيّ لفشل البحث في تطبيقات عربيّة كثيرة.
ترتيب العمليّات: لماذا التسلسل يهمّ
التطبيع ليس عمليّة واحدة بل سلسلة من التحويلات. ترتيبها يُغيّر النتيجة. مثلاً، إذا حذفت المسافات الزائدة قبل قصّ السطور، ستبقى مسافات في بداية بعض الأسطر؛ والعكس صحيح. الترتيب الموصى به:
1. تطبيع Unicode إلى NFC: الخطوة الصفريّة. كلّ ما يأتي بعدها يفترض تمثيلاً موحّداً.
2. حذف التطويل: الكشيدة تُغيّر طول الكلمة بصرياً لكنّها لا تُغيّر معناها. حذفها أوّلاً يبسّط ما بعدها.
3. حذف التشكيل: الحركات والشدّة تُعقّد المقارنة دون فائدة في معظم الحالات.
4. تطبيع الحروف: الألف، الياء، التاء المربوطة. هذه القواعد يمكن أن تكون مدمّرة (تُغيّر المعنى) فيجب أن تأتي متأخّرة.
5. تطبيع المسافات والترقيم: أخيراً، لأنّها تعتمد على ما سبق.
هذا الترتيب يضمن الجدوى الراجعيّة (idempotency): تطبيق التطبيع مرّتين يعطي نفس نتيجة المرّة الواحدة.
الأثر على نماذج معالجة اللغة العربيّة
التطبيع ليس تجميلاً: له أثر قياسي على جودة نماذج NLP. تجارب AraBERT و CAMeL Tools أظهرت أنّ تطبيقاً صحيحاً يقلّص حجم المفردات بنسبة 15-25% ويرفع دقّة المهامّ النهائيّة (تصنيف، استخراج كيانات، ترجمة) بنقطتين F1 أو أكثر.
تقليل المفردات: بدون تطبيع، «أحمد» و«احمد» و«آحمد» تأخذ ثلاث خانات في معجم النموذج. مع التطبيع، خانة واحدة تكفي. الذاكرة المُحرّرة تذهب إلى تعلّم كلمات أكثر.
التضمينات الدلاليّة (embeddings): نموذج مُدرَّب على نصّ مُطبَّع يُنتج متجهات أكثر استقراراً. كلمة «مكتبة» المُشكَّلة وغير المُشكَّلة تنتهيان في نفس المنطقة من الفضاء الدلاليّ.
استدعاء البحث (recall): دراسة عربيّة لمحرّك بحث وكالة أنباء أظهرت ارتفاع الاستدعاء من 71% إلى 89% بعد تطبيق التطبيع الكامل على الفهرس والاستعلام معاً.
وصفات Regex جاهزة
إن كنت تنفّذ التنظيف بنفسك بدلاً من استخدام الأداة، هذه الأنماط تغطّي الحالات الأكثر شيوعاً:
حذف التشكيل: /[ً-ْ]/g يطابق كلّ الحركات والشدّة والسكون.
حذف التطويل: /ـ/g.
تطبيع الألف: /[آأإ]/g ثمّ استبدال بـ ا.
تطبيع الياء: /ى/g ثمّ استبدال بـ ي.
تطبيع التاء المربوطة (احذر): /ة/g ثمّ استبدال بـ ه.
دمج المسافات: /s+/g ثمّ استبدال بمسافة واحدة، يليه /^s+|s+$/gm لقصّ بداية ونهاية كلّ سطر.
تحويل الأرقام العربيّة: طبّق دالّة استبدال لكلّ رقم من U+0660 إلى U+0669 بمقابله اللاتينيّ.
تنظيف مخرجات OCR: حالة خاصّة
النصوص الناتجة عن OCR تحتاج تنظيفاً يتجاوز التطبيع المعياريّ. أخطاء شائعة:
خلط حروف متشابهة شكلاً: الباء والياء، النون والثاء، الراء والزاي. أحياناً يفيد بناء قاموس تصحيحات مخصّص للمجال (طبّي، قانونيّ).
كسر الكلمات: OCR قد يُدخل مسافة في منتصف الكلمة. خوارزميّة تحقّق معجميّة يمكن أن تكشف ذلك.
تطويلات وهميّة: الخطّ العثمانيّ في المخطوطات يُربك المحرّك ويُنتج تطويلات في مواضع لا ينبغي. حذف التطويل الشامل يُصلح هذا، لكن انتبه: في النصّ القرآنيّ، التطويل لا يأتي عادة، فإن وجدته فالأرجح خطأ.
هوامش وأرقام صفحات مُدمجة: regex لإزالة الأنماط /^d+s*$/gm أو الأسطر القصيرة جدّاً يفيد قبل التطبيع اللغويّ.
متى لا تُنظّف: النصوص الحرجة
التطبيع ليس دواءً عاماً. هناك سياقات يجب فيها الحفاظ على النصّ كما هو:
النصّ القرآنيّ: التشكيل والرسم العثمانيّ مقصودان. تطبيقهما على نسخة مُطبَّعة جريمة في حقّ النصّ. خزّن النسخة الأصليّة في حقل منفصل واستخدم النسخة المُطبَّعة للبحث فقط.
الشعر الكلاسيكيّ: الحركات تحدّد الوزن. حذفها يُفقد المعلومة العروضيّة.
التراث المخطوط: رسم الكلمات يحمل دلالات تاريخيّة. توحيد الألف يُخفي معلومة عن العصر والمؤلّف.
الأسماء الرسميّة: توحيد التاء المربوطة قد يُغيّر اسم شخص أو مؤسّسة من «حركة» إلى «حركه». احفظ النسخة الأصليّة دائماً.
القاعدة: طبّع للبحث، لا للعرض. خزّن المصدر الأصليّ، اعرضه كما هو، استخدم النسخة المُطبَّعة فقط لمطابقة الاستعلامات داخلياً.
قياسات قبل/بعد على بيانات حقيقيّة
طبّقنا التنظيف على ثلاث مجموعات بيانات وقسنا الأثر:
مدوّنة عربيّة (20,000 مقال): حجم المفردات الفريدة انخفض من 412,000 كلمة إلى 305,000 كلمة (-26%). حجم الملفّ المُضغوط (gzip) انخفض 8%.
أرشيف تويتر/X عربيّ (1,000,000 تغريدة): دقّة تصنيف المشاعر باستخدام fastText ارتفعت من 79.3% إلى 83.7%. تدريب أسرع 14% بسبب تقلّص المفردات.
بيانات OCR لكتب قديمة: بعد التنظيف، نسبة الكلمات القابلة للتعرّف بقاموس قياسيّ قفزت من 62% إلى 88%، ممّا يجعل التحرير اليدويّ ممكناً اقتصادياً.
التكامل في خطوط الإنتاج
لتحويل التنظيف من خطوة يدويّة إلى جزء من خطّ بيانات، فكّر في هذه الأنماط:
طبقة وسطى في الواجهة الخلفيّة: أيّ نصّ يدخل قاعدة البيانات يمرّ بمُطبّع. طبقة middleware بسيطة في Express أو FastAPI. الفائدة: استعلامات لاحقة تجد كلّ شيء بصرف النظر عن طريقة الكتابة.
وظيفة Lambda دفعيّة: لمعالجة أرشيفات كبيرة. كلّ ملفّ يُعالج بمعزل، ما يسمح بالتوازي.
دالّة قاعدة بيانات: PostgreSQL يدعم تعريف دوالّ مخصّصة. تنفيذ التطبيع داخل قاعدة البيانات يجعل الفهارس المُطبَّعة ممكنة دون نسخ الجدول.
إصدار يدويّ + إصدار مُطبَّع: القاعدة الذهبيّة في تصميم قواعد البيانات العربيّة: حقلان لكلّ نصّ، أحدهما خامّ والآخر مُطبَّع. البحث يجري على المُطبَّع، العرض على الخامّ.
أسئلة شائعة
هل التنظيف يُخرّب النصّ نهائياً؟ لا، إن كنت تحتفظ بالنسخة الأصليّة. القاعدة: التنظيف عمليّة على نسخة، لا على المصدر.
لماذا لا أحذف التشكيل بـ regex فقط بدلاً من الأداة؟ يمكنك ذلك. الأداة تجمع تسع عمليّات في تشغيل واحد بترتيب صحيح. للنصوص الضخمة، فرق ملحوظ في السرعة والصحّة.
هل التطبيع آمن للأسماء الشخصيّة؟ حذراً. «أمير» و«امير» قد يكونان شخصين مختلفين. لقواعد بيانات هويّة، احتفظ بالنسخة الأصليّة كحقيقة، استخدم النسخة المُطبَّعة كمساعد بحث.
هل يجب تطبيق نفس التنظيف على الاستعلام؟ نعم، دائماً. تطبيق التطبيع على الفهرس وحده يكسر البحث. القاعدة: نفس الدالّة تطبَّق على الإدخال والاستعلام.
ماذا عن النصوص متعدّدة اللغات؟ طبّق التنظيف العربيّ على الأجزاء العربيّة فقط. كاشف اللغة على مستوى الفقرة أو الجملة يكفي عادة.
أدوات ذات صلة
أدوات أخرى مجانية على ArabToolBox، كلها تعمل في متصفّحك بدون تسجيل.
- قياس قابليّة قراءة النصّ العربيّاحسب درجة سهولة قراءة نصّك من 0 إلى 100 مع تصنيف لفظيّ ومستوى دراسيّ
- حذف السطور المكرّرةأربعة أوضاع مقارنة ذكيّة: تطابق تامّ، تجاهل المسافات، تجاهل الحالة، تطبيع عربيّ
- تشكيل النصوص العربيةتشكيل النصوص العربية تلقائياً بدقة عالية
- البحث والاستبدالحرفيّ أو تعبير منتظم، مع دعم كامل لحدود الكلمة العربيّة وسقف أمان للأنماط الكارثيّة
- محوّل عناوين URL عربيةحوّل العناوين العربية إلى slug لاتيني صديق للسيو
- مقارنة نصوص عربيةقارن نصّين عربيّين واكتشف الفروقات سطراً بسطر