Suite de l'externalisation des règles. Trois listes étaient codées en dur dans
anonymizer_core_refactored_onnx.py et impossibles à modifier par les
établissements sans recompiler :
- _NEVER_MASK_AS_NAME (12 entrées) — labels DPI structurels
- _DPI_LABELS_BLACKLIST (14 entrées, doublon partiel du précédent)
- _COMPANION_BLACKLIST (~75 entrées) — spécialités, labos pharma, mots ambigus
Les deux premières fusionnées dans data/dpi_labels_blacklist.txt (11 entrées
uniques, comparaison case-insensitive). La troisième dans
data/companion_blacklist.txt (75 entrées, comparaison uppercase).
Ajout de deux clés YAML pour enrichissement par établissement :
- additional_dpi_labels (ex: "Service", "Statut")
- additional_companion_blacklist (ex: spécialités locales)
Les 3 niveaux cumulatifs habituels s'appliquent : code (vide) → fichiers data/
→ YAML config. Chargement au démarrage avec log INFO du nombre d'entrées.
Test trackare-18007562-23054899 : 122 hits, 0 régression, 0 DPI label masqué
comme NOM.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Toutes les listes de règles sont maintenant modifiables sans toucher
au code Python :
Fichiers de données (data/) :
- stopwords_manuels.txt : 1307 termes médicaux/techniques
- villes_blacklist.txt : 117 communes à ne pas matcher
- medicaments_stopwords.txt : 7312 médicaments BDPM (existant)
- Chargés automatiquement au démarrage
Config YAML (dictionnaires.yml) :
- additional_stopwords : mots supplémentaires par établissement
- additional_villes_blacklist : villes supplémentaires
- whitelist_phrases : phrases à ne jamais anonymiser
- force_mask_terms : mots à toujours masquer
Chaîne de chargement : code dur → fichiers data/ → YAML config
Les 3 niveaux se cumulent (union).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Nouvelle section whitelist_phrases dans dictionnaires.yml : phrases
qui ne doivent jamais être anonymisées (FP récurrents)
- Fonction _apply_whitelist : restaure les phrases whitelistées après
anonymisation, même si des mots ont été remplacés par des placeholders
- GUI : section "Paramètres avancés" repliable avec :
- Zone texte whitelist (phrases à exclure)
- Zone texte blacklist (mots à toujours masquer)
- Bouton sauvegarder → persiste dans le YAML
- Phrases initiales : "classification internationale", "prise en charge",
"bas de contention", "date de naissance", "code postal", etc.
Score évaluation maintenu à 100.0/100 (A+)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Remplace \s+ par [ \t]+ dans 11 regex d'extraction de noms (empêche capture cross-line de médicaments)
- Ajoute \b word boundaries dans RE_PERSON_CONTEXT (empêche "PDR" de matcher "DR")
- Ajoute filtrage _MEDICAL_STOP_WORDS_SET dans selective_rescan._rescan_person
- Ajoute stop words : labos pharma (MYL/VTS/ARW/PAN/MSO), dosages (FAIBLE/FORT), anatomie imagerie (CEREBRAL/ABDOMINO-PELVIEN)
- Filtre stop words dans _add_name_force et _add_tokens_force_first
- Mise à jour baseline regression_tests/ avec 29 fichiers du batch audit 30
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>