Commit ·
ae88a6b
1
Parent(s): 46515fb
fix: swap punctuation rules for colons to prevent strict guard conflicts
Browse files
src/nlp/punctuation/punctuation_rules.py
CHANGED
|
@@ -56,9 +56,6 @@ def arabic_postprocessing(text: str) -> str:
|
|
| 56 |
# Remove colons/semicolons before relative pronouns
|
| 57 |
text = re.sub(r'[؛:]\s*(التي|الذي|الذين|اللتان|اللذان|اللاتي|اللواتي)', r' \1', text)
|
| 58 |
|
| 59 |
-
# Fix misplaced colons for saying verbs (e.g. قال: المعلم -> قال المعلم:)
|
| 60 |
-
text = re.sub(r'\b(قال|يقول|قالت|تقول|أجاب|أجابت|سأل|سألت|أخبر|أخبرت|صرح|صرحت|أضاف|أضافت|أردف|أردفت):?\s+(ال[أ-ي]+|أحمد|محمد|محمود|علي|عمر|خالد|فاطمة|مريم|عائشة|خديجة)\b:?', r'\1 \2:', text)
|
| 61 |
-
|
| 62 |
# NEW: Strict Colon Guard
|
| 63 |
_ALLOWED_COLON_CUES = r'(قال|يقول|قالت|تقول|أجاب|أجابت|سأل|سألت|أخبر|أخبرت|صرح|صرحت|أضاف|أضافت|أردف|أردفت|وضح|وضحت|أوضح|أوضحت|رد|ردت|التالي|الآتي|مثال|ملاحظة|تنبيه|تحذير|قائلا|قائلة|اسم|العمر|تاريخ|رقم|عاجل|الآتية|التالية)'
|
| 64 |
|
|
@@ -74,6 +71,9 @@ def arabic_postprocessing(text: str) -> str:
|
|
| 74 |
|
| 75 |
text = re.sub(r'([\u0600-\u06FF]+)(\s*:)', _colon_guard, text)
|
| 76 |
|
|
|
|
|
|
|
|
|
|
| 77 |
# Remove colons after specific non-speech verbs (fallback for verbs without ال)
|
| 78 |
text = re.sub(r'\b(يقدر|يستطيع|يمكن|يجب|ينبغي|يعتبر|يعد|يرى|يعتقد)\s*:', r'\1 ', text)
|
| 79 |
# Replace semicolon with comma if followed by "و" (and) or similar conjunctions, as semicolon is for separate clauses
|
|
|
|
| 56 |
# Remove colons/semicolons before relative pronouns
|
| 57 |
text = re.sub(r'[؛:]\s*(التي|الذي|الذين|اللتان|اللذان|اللاتي|اللواتي)', r' \1', text)
|
| 58 |
|
|
|
|
|
|
|
|
|
|
| 59 |
# NEW: Strict Colon Guard
|
| 60 |
_ALLOWED_COLON_CUES = r'(قال|يقول|قالت|تقول|أجاب|أجابت|سأل|سألت|أخبر|أخبرت|صرح|صرحت|أضاف|أضافت|أردف|أردفت|وضح|وضحت|أوضح|أوضحت|رد|ردت|التالي|الآتي|مثال|ملاحظة|تنبيه|تحذير|قائلا|قائلة|اسم|العمر|تاريخ|رقم|عاجل|الآتية|التالية)'
|
| 61 |
|
|
|
|
| 71 |
|
| 72 |
text = re.sub(r'([\u0600-\u06FF]+)(\s*:)', _colon_guard, text)
|
| 73 |
|
| 74 |
+
# Fix misplaced colons for saying verbs (e.g. قال: المعلم -> قال المعلم:)
|
| 75 |
+
text = re.sub(r'\b(قال|يقول|قالت|تقول|أجاب|أجابت|سأل|سألت|أخبر|أخبرت|صرح|صرحت|أضاف|أضافت|أردف|أردفت):?\s+(ال[أ-ي]+|أحمد|محمد|محمود|علي|عمر|خالد|فاطمة|مريم|عائشة|خديجة)\b:?', r'\1 \2:', text)
|
| 76 |
+
|
| 77 |
# Remove colons after specific non-speech verbs (fallback for verbs without ال)
|
| 78 |
text = re.sub(r'\b(يقدر|يستطيع|يمكن|يجب|ينبغي|يعتبر|يعد|يرى|يعتقد)\s*:', r'\1 ', text)
|
| 79 |
# Replace semicolon with comma if followed by "و" (and) or similar conjunctions, as semicolon is for separate clauses
|