shahad altamimi
معالجة مسبقة: حذف التشكيل + دمج (الكلمة+التعريف) فقط، وتبسيط واجهة السجل
c62252d
Raw
History Blame Contribute Delete
1.41 kB
# ============================================================
# 📄 الملف: 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)