Réduction sur-masquage : stop words trackare/CRH + filtre NOM_GLOBAL court
- Ajout ~30 stop words : abréviations soins trackare (SOINS, LIT, JEUN, LEVER, SURV, GGT, VVP, VERIF, NFS...) et mots narratifs CRH capturés par fusion sidebar 2-colonnes (Evolution, Explorations, Cholécystectomie, Paracétamol...) - Filtre NOM_GLOBAL renforcé : mots ALL-CAPS ≤4 chars confirmés par une seule source regex sont rejetés (probables abréviations médicales, pas des noms) - Résultat batch 10 OGC : CRH 23042753 passe de 326 à 284 hits Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -332,6 +332,13 @@ _MEDICAL_STOP_WORDS_SET = {
|
||||
"endoscopie", "endoscopique", "fibroscopie",
|
||||
"indication", "conclusion", "technique", "anesthésie",
|
||||
"digestif", "digestive", "digestives", "nutritive",
|
||||
# Abréviations soins trackare détectées comme NOM (batch 20 OGC)
|
||||
"soins", "lit", "jeun", "lever", "pose", "surv", "ggt", "vvp",
|
||||
"verif", "crop", "evs", "maco", "pan", "cet", "trou", "nit", "ute", "nfs",
|
||||
# Mots narratifs CRH capturés par fusion sidebar 2-colonnes
|
||||
"evolution", "évolution", "explorations", "fermeture", "allergie", "allergies",
|
||||
"lotissement", "cholangiographie", "cholecystectomie", "cholécystectomie",
|
||||
"paracetamol", "paracétamol", "unité", "unite",
|
||||
}
|
||||
# Enrichissement automatique avec les ~4000 noms de médicaments d'edsnlp
|
||||
_MEDICAL_STOP_WORDS_SET.update(_load_edsnlp_drug_names())
|
||||
@@ -1608,6 +1615,24 @@ def process_pdf(
|
||||
_parts_to_drop.add(part)
|
||||
_global_name_tokens -= _parts_to_drop
|
||||
|
||||
# 4a-ter) Filtrage final des tokens globaux : rejeter les mots qui ne ressemblent pas à des noms propres
|
||||
# - Mots courants français (minuscule initiale déjà filtrés en amont)
|
||||
# - ALL-CAPS <= 4 chars confirmés par une seule source seulement
|
||||
_nom_kind_counts: Dict[str, set] = {}
|
||||
for h in anon.audit:
|
||||
if h.kind in _nom_kinds:
|
||||
for word in h.original.split():
|
||||
word = word.strip(" .-'")
|
||||
if word:
|
||||
_nom_kind_counts.setdefault(word, set()).add(h.kind)
|
||||
_filtered_global: set = set()
|
||||
for token in _global_name_tokens:
|
||||
# ALL-CAPS court (<=4) avec une seule source → probablement une abréviation
|
||||
if token.isupper() and len(token) <= 4 and len(_nom_kind_counts.get(token, set())) < 2:
|
||||
continue
|
||||
_filtered_global.add(token)
|
||||
_global_name_tokens = _filtered_global
|
||||
|
||||
for token in _global_name_tokens:
|
||||
anon.audit.append(PiiHit(page=-1, kind="NOM_GLOBAL", original=token, placeholder=PLACEHOLDERS["NOM"]))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user