أداة مجانية مفتوحة المصدر

توحيد النص العربي وتنظيفه

وحّد النص العربي في متصفحك بسياسات مسمّاة ذات إصدارات ثابتة، وشاهد كل تغيير وتنبيهات فقد المعلومات وبصمة SHA-256 للسياسة. أداة مجانية مفتوحة المصدر.

إعداد: Bayanat Labs· آخر تحديث · Read in English

تطبّق مكتبة arabic-normalize من بيانات لابز على النص العربي سياسة توحيد مسمّاة مثل bayanat-norm-v1، وتبيّن بالضبط ما غيّرته: النص الموحَّد، وسجل التغييرات مع موضع كل تغيير، والتغييرات الفاقدة للمعلومات (مثل تحويل ى إلى ي)، ونسبة التشكيل، وبصمة SHA-256 للسياسة. وبذلك يمكن ذكر طريقة التوحيد بدقة في أي بحث أو نتيجة لمعدل خطأ الكلمات (WER) أو بطاقة مجموعة بيانات، ويستطيع غيرك إعادة إنتاج النص نفسه حرفًا بحرف.

افتح أداة التوحيد · الشيفرة على GitHub · حالات اختبار المطابقة على Hugging Face

تعمل الأداة داخل متصفحك، فلا يُرفع نصك ولا يُخزَّن ولا يُسجَّل.

مثال مشروح

المدخل: إِلَى المَدْرَسَةِ الجَدِيدَةِ ١٢٣ (مكتوب بالحركات وبالأرقام العربية المشرقية)

السياسة الناتج تنبيهات فقد المعلومات تنبيهات أخرى
bayanat-norm-v1 الي المدرسة الجديدة 123 alef_maqsura.to_yeh، alef_variants.map taa_marbuta.flag
asr-eval-v1 الي المدرسه الجديده 123 alef_maqsura.to_yeh، alef_variants.map، taa_marbuta.to_heh لا توجد
raw-safe-v1 إِلَى المَدْرَسَةِ الجَدِيدَةِ ١٢٣ لا توجد لا توجد

في سياسة bayanat-norm-v1 تُحذف الحركات (وتدخل في حساب نسبة التشكيل، وقيمتها هنا 0.647)، وتصبح الألف المهموزة في أول «إلى» ألفًا مجردة، وتصبح الألف المقصورة في آخرها ياءً، ويُسجَّل التغييران على أنهما فاقدان للمعلومات، وتتحول الأرقام العربية المشرقية إلى 123، وتبقى التاء المربوطة ة مع تنبيه. ولا تحوّل التاءَ المربوطة إلى هاء إلا سياسةُ asr-eval-v1 المخصصة لتقييم التعرّف الآلي على الكلام. أما raw-safe-v1 فلا تغيّر أي حرف أو علامة أو رقم. وهذان هما التغييران الفاقدان للمعلومات في سجل التغييرات:

القاعدة الموضع في المدخل قبل بعد
alef_variants.map 0–1 إ ا
alef_maqsura.to_yeh 4–5 ى ي

كيف يُحسب الناتج

  1. تحدد السياسة صيغة يونيكود (NFC أو NFKC أو دون صيغة)، ووضعًا لكل مرحلة من مراحل التوحيد الثماني عشرة، بدءًا بالمحارف غير الصالحة ومحارف التحكم غير المرئية وأشكال العرض، ووصولًا إلى التطويل والحركات وصور الألف والألف المقصورة والتاء المربوطة والأرقام وعلامات الترقيم والمسافات. وتجري المراحل دائمًا بالترتيب نفسه، ثم يُطبَّق NFC مرة أخيرة.
  2. تأتي خصائص المحارف من قاعدة بيانات يونيكود 18.0.0 المضمّنة في المكتبة، لا من إصدار يونيكود في لغة البرمجة أو المتصفح، فلا يتغير الناتج بتغيّرهما.
  3. يُسجَّل كل تغيير مع موضعه في النص الأصلي، وتربط خريطة الإزاحات كل محرف في الناتج بموضعه في المدخل.
  4. التغييرات التي قد تجعل كلمتين مختلفتين متطابقتين، مثل «إنّ» و«أنّ»، تُعلَّم بأنها فاقدة للمعلومات.
  5. البصمة هي قيمة SHA-256 لنص JSON القانوني للسياسة. ولا تتغير السياسة بعد إصدارها، فأي تغيير في السلوك يصدر باسم جديد مثل bayanat-norm-v2.

السياسات

السياسة الاستخدام القواعد الفاقدة للمعلومات بصمة SHA-256
bayanat-norm-v1 سياسة توحيد لحقل النص الموحَّد، ولإزالة التكرار وحساب الإحصاءات. alef_variants.map، alef_maqsura.to_yeh ebdb82000d0762a65120ffa9311bc6f01b481b19d4348ea5bedb3ab23d759321
asr-eval-v1 للتقييم فقط: حساب معدل خطأ الكلمات (WER) ومعدل خطأ الحروف (CER) في التعرّف الآلي على الكلام العربي. alef_variants.map، alef_maqsura.to_yeh، taa_marbuta.to_heh 5d866146536a23b90c0882044dae5f55f2484f0635e206828246eabeb69668de
raw-safe-v1 تنظيف لا يغيّر أي حرف أو علامة أو رقم أو علامة ترقيم. لا توجد 57c3d9f03fb9b6854f2527cd1e8a47cadc266f47f02dda94652306dacea03bb5

الاستخدام في الشيفرة البرمجية

# Python 3.9 أو أحدث
pip install "git+https://github.com/Bayanat-Labs/arabic-normalize@3ad22326a66596e8dc413321017251eed6e60439"

# JavaScript (Node 20 أو أحدث، والمتصفحات): مجلد js/ من نسخة مستنسخة عند الإيداع نفسه
git clone https://github.com/Bayanat-Labs/arabic-normalize.git
git -C arabic-normalize checkout 3ad22326a66596e8dc413321017251eed6e60439
npm install ./arabic-normalize/js

لم تصدر الحزمتان على PyPI وnpm بعد. وإلى أن تصدرا، ثبّت المكتبة من GitHub مثبَّتةً على إيداع محدد بالأوامر السابقة، واحتفظ بالمجلد الذي استنسخته، لأن npm يربط الحزمة به. وسيعمل التثبيت من PyPI وnpm بعد نشر الحزمتين.

from arabic_normalize import normalize
normalize("إِلَى المَدْرَسَةِ الجَدِيدَةِ ١٢٣")   # 'الي المدرسة الجديدة 123'

تعطي مكتبتا Python وJavaScript الناتج نفسه: تجتاز مكتبة JavaScript ‏80 من 80 حالة اختبار مطابقة، وتجتاز مكتبة Python ‏80 من 80، وتتطابق المكتبتان في 560 من 560 حالة مرجعية، بما في ذلك خريطة الإزاحات وسجل التغييرات. وفي اختبار إجهاد على 113,752 مقالة من ويكيبيديا العربية (بنص الويكي الخام)، عملت كل السياسات دون أي تعطّل ودون أي خطأ في خريطة الإزاحات أو سجل التغييرات، ورصدت سياسة bayanat-norm-v1 تغييرًا واحدًا على الأقل فاقدًا للمعلومات في 112,965 مقالة منها (99.3%).

طريقة الإشارة

وُحِّد النص بسياسة bayanat-norm-v1 (بصمة sha256 ‏ebdb82000d07…)، مكتبة arabic-normalize 0.1.0، بيانات لابز.

@software{bayanatlabs_arabic_normalize_2026,
  title   = {arabic-normalize: Arabic text normalisation with named, versioned policies},
  author  = {{Bayanat Labs}},
  year    = {2026},
  version = {0.1.0},
  url     = {https://github.com/Bayanat-Labs/arabic-normalize},
  license = {Apache-2.0}
}

اذكر معرّف السياسة وبصمتها في كل بحث أو نتيجة أو بطاقة مجموعة بيانات. وسيُضاف معرّف DOI مع أول إصدار مؤرشف.

الترخيص والتواصل

الشيفرة البرمجية: Apache-2.0. ملفات السياسات وحالات الاختبار: CC BY 4.0. للأسئلة والتصويبات: hello@bayanatlabs.com.

هل تحتاج إلى بيانات عربية جاهزة للإنتاج وواضحة الحقوق؟

مكتبة arabic-normalize مجانية. أما مجموعات البيانات النصية والمعرفية العربية المرخّصة ذات التوحيد الموثّق فتجدها في صفحة مجموعات البيانات النصية العربية المرخّصة من بيانات لابز.

لم يراجع النصَّ العربي بعدُ كاتبٌ لغته الأم العربية، والنص الإنجليزي هو المعتمد. (The Arabic text has not yet been reviewed by a native Arabic writer; the English governs.)