youssefreda9 commited on
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