توحيد النص العربي وتنظيفه
وحّد النص العربي في متصفحك بسياسات مسمّاة ذات إصدارات ثابتة، وشاهد كل تغيير وتنبيهات فقد المعلومات وبصمة SHA-256 للسياسة. أداة مجانية مفتوحة المصدر.
تطبّق مكتبة 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 | ى | ي |
كيف يُحسب الناتج
- تحدد السياسة صيغة يونيكود (NFC أو NFKC أو دون صيغة)، ووضعًا لكل مرحلة من مراحل التوحيد الثماني عشرة، بدءًا بالمحارف غير الصالحة ومحارف التحكم غير المرئية وأشكال العرض، ووصولًا إلى التطويل والحركات وصور الألف والألف المقصورة والتاء المربوطة والأرقام وعلامات الترقيم والمسافات. وتجري المراحل دائمًا بالترتيب نفسه، ثم يُطبَّق NFC مرة أخيرة.
- تأتي خصائص المحارف من قاعدة بيانات يونيكود 18.0.0 المضمّنة في المكتبة، لا من إصدار يونيكود في لغة البرمجة أو المتصفح، فلا يتغير الناتج بتغيّرهما.
- يُسجَّل كل تغيير مع موضعه في النص الأصلي، وتربط خريطة الإزاحات كل محرف في الناتج بموضعه في المدخل.
- التغييرات التي قد تجعل كلمتين مختلفتين متطابقتين، مثل «إنّ» و«أنّ»، تُعلَّم بأنها فاقدة للمعلومات.
- البصمة هي قيمة SHA-256 لنص JSON القانوني للسياسة. ولا تتغير السياسة بعد إصدارها، فأي تغيير في السلوك يصدر باسم جديد مثل
bayanat-norm-v2.
السياسات
| السياسة | الاستخدام | القواعد الفاقدة للمعلومات | بصمة SHA-256 |
|---|---|---|---|
bayanat-norm-v1 |
سياسة توحيد لحقل النص الموحَّد، ولإزالة التكرار وحساب الإحصاءات. | alef_variants.map، alef_maqsura.to_yeh |
ebdb82000d0762a6 |
asr-eval-v1 |
للتقييم فقط: حساب معدل خطأ الكلمات (WER) ومعدل خطأ الحروف (CER) في التعرّف الآلي على الكلام العربي. | alef_variants.map، alef_maqsura.to_yeh، taa_marbuta.to_heh |
5d866146536a23b9 |
raw-safe-v1 |
تنظيف لا يغيّر أي حرف أو علامة أو رقم أو علامة ترقيم. | لا توجد | 57c3d9f03fb9b685 |
الاستخدام في الشيفرة البرمجية
# 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 مجانية. أما مجموعات البيانات النصية والمعرفية العربية المرخّصة ذات التوحيد الموثّق فتجدها في صفحة مجموعات البيانات النصية العربية المرخّصة من بيانات لابز.