Spaces:
Running
Running
| # ============================================================ | |
| # 📄 الملف: 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) | |