diff --git a/anonymizer_core_refactored_onnx.py b/anonymizer_core_refactored_onnx.py index 32baade..0f8e7d8 100644 --- a/anonymizer_core_refactored_onnx.py +++ b/anonymizer_core_refactored_onnx.py @@ -372,7 +372,7 @@ CRITICAL_PII_KEYS = {"EMAIL", "TEL", "IBAN", "NIR", "IPP", "DATE_NAISSANCE"} # Baseline regex RE_EMAIL = re.compile(r"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}") RE_URL = re.compile(r"https?://[A-Za-z0-9._~:/?#\[\]@!$&'()*+,;=\-%]+", re.IGNORECASE) -RE_TEL = re.compile(r"(? Tuple[set, s force_names.add(token) def _add_tokens_force_first(match_str): - """Comme _add_tokens mais force le 1er token (contexte Dr/Mme fort).""" + """Comme _add_tokens mais force TOUS les tokens (contexte Dr/Mme fort). + + Après Dr/Mme, tous les tokens sont des noms — même s'ils sont + homonymes de termes médicaux (ex: Dr Laurence MASSE). + """ _add_compound(match_str) tokens = match_str.split() - for i, token in enumerate(tokens): + for token in tokens: token = token.strip(" .-'") if len(token) < 4: continue if token.upper() in wl_sections or token in wl_phrases: continue - if token.lower() in _MEDICAL_STOP_WORDS_SET: - continue - if i == 0: - # Premier token après Dr/Mme : contexte fiable - names.add(token) - else: - if len(token) < 4: - continue - names.add(token) + names.add(token) + force_names.add(token) for m in RE_EXTRACT_PATIENT.finditer(full_text): _add_tokens_force_all(m.group(1))