# ============================================================ # 📄 الملف: app/text_utils.py # 🎯 الغرض: أدوات معالجة مسبقة للنص العربي (مشتركة بين بناء البيانات والبحث). # # يجب أن يُعالَج جانب المستندات (بناء الـ embedding) وجانب الاستعلام # بنفس الطريقة، لذا توضع الدالة هنا ويستوردها الطرفان. # ============================================================ import re # علامات التشكيل العربية: الفتحة/الضمة/الكسرة/السكون/الشدة/التنوين # والمدّة والألف الخنجرية وعلامات الضبط القرآنية + التطويل (ـ). _ARABIC_DIACRITICS = re.compile( "[" "ؐ-ؚ" # علامات وإشارات عربية (honorifics) "ً-ٟ" # تنوين + فتحة/ضمة/كسرة + شدّة + سكون + علامات إضافية "ٰ" # ألف خنجرية (ألف فوقية) "ۖ-ۭ" # علامات ضبط قرآنية "ـ" # التطويل (ـ) "]" ) def strip_diacritics(text: str) -> str: """يحذف التشكيل من النص العربي قبل المعالجة (يحافظ على الحروف كما هي).""" if not isinstance(text, str): return "" return _ARABIC_DIACRITICS.sub("", text)