feat(phase3): CamemBERT v3 + détection villes + initiales + texte espacé + docs réglementaires
Intégration du modèle CamemBERT-bio-deid v3 (F1=0.96, Recall=0.97, 1112 docs)
et corrections qualité issues de l'audit approfondi sur 29 fichiers.
Détection des villes en texte libre :
- Automate Aho-Corasick sur 33K communes INSEE + 11.6K villes FINESS
- Stratégie contextuelle : exige un contexte géographique (à, de, vers,
habite, urgences de, etc.) sauf pour les villes composées (Saint-Palais)
- Blacklist de ~80 communes homonymes de mots courants (charge, signes, plan...)
- Normalisation SAINT↔ST pour les variantes orthographiques
- De 18 fuites de villes à 2 cas résiduels atypiques
Masquage des initiales de prénom :
- Post-traitement regex : "Dr T. [NOM]" → "Dr [NOM] [NOM]"
- Références initiales : "Ref : JF/VA" → "Ref : [NOM]/[NOM]"
Détection texte espacé d'en-tête :
- "C E N T R E H O S P I T A L I E R" → [ETABLISSEMENT]
Autres corrections :
- Fix regex RE_EXTRACT_MME_MR (Mr?.? → Mr.?, \s+ → [ \t]+, * → {0,4})
- Stop words médicaux : lever, coucher, services hospitaliers (viscérale, etc.)
- CamemBERT NER manager : version tracking, propriété version, log F1/Recall
- Script finetune : export ONNX automatique + mise à jour VERSION.json
- Évaluateur qualité : exclusion stop words médicaux des alertes INSEE
Documentation :
- Spécifications techniques CamemBERT-bio-deid v3
- Conformité RGPD + AI Act (caviardage PDF raster)
- AIPD (Analyse d'Impact Protection des Données)
Score qualité : 97.0/100 (Grade A), Leak score 100/100
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
77
docs/camembert-bio-deid-v3-specs.md
Normal file
77
docs/camembert-bio-deid-v3-specs.md
Normal file
@@ -0,0 +1,77 @@
|
||||
# CamemBERT-bio-deid v3 — Specifications techniques
|
||||
|
||||
## Modele de base
|
||||
|
||||
- **Architecture** : CamemBERT (RoBERTa-based), Token Classification
|
||||
- **Modele pre-entraine** : `almanach/camembert-bio-base` (LORIA/INRIA)
|
||||
- **Parametres** : ~110M (12 couches, 768 hidden, 12 attention heads)
|
||||
- **Vocabulaire** : 32 005 tokens (SentencePiece BPE)
|
||||
- **Specialisation pre-entrainement** : corpus biomedical francais (PubMed, theses, litterature clinique)
|
||||
|
||||
## Fine-tuning
|
||||
|
||||
| Parametre | Valeur |
|
||||
|-----------|--------|
|
||||
| Documents d'entrainement | 1 112 documents cliniques (CR hospitalisation, Trackare, CRO, lettres de sortie) |
|
||||
| Exemples totaux | 198 260 (52 121 originaux + 145 539 augmentes + 600 hard negatives) |
|
||||
| Augmentation de donnees | Substitution de noms par gazetteer INSEE (219K patronymes) |
|
||||
| Hard negatives | Medicaments BDPM + termes QUAERO (CHEM, DISO, PROC, ANAT) |
|
||||
| Epochs | 20 |
|
||||
| Batch size effectif | 16 (GPU batch=8 x gradient accumulation=2) |
|
||||
| Learning rate | 1x10-5 |
|
||||
| Max sequence length | 512 tokens |
|
||||
| Optimizer | AdamW |
|
||||
| GPU | NVIDIA GeForce RTX 5070 (12 Go VRAM) |
|
||||
| Duree d'entrainement | ~14h15 |
|
||||
| Framework | HuggingFace Transformers 4.42, PyTorch |
|
||||
|
||||
## Annotations d'entrainement (Silver)
|
||||
|
||||
- **Methode** : alignement diff entre texte original et texte pseudonymise par le pipeline multi-moteurs (EDS-Pseudo + GLiNER + regex + gazetteers)
|
||||
- **Format** : BIO (Beginning-Inside-Outside)
|
||||
- **Source** : documents T2A CHCB 2023, dossiers de justificatifs
|
||||
- **Pas de validation humaine** (silver, non gold)
|
||||
|
||||
## Categories NER (14 types, 29 labels BIO)
|
||||
|
||||
| Categorie | Description |
|
||||
|-----------|-------------|
|
||||
| PER | Noms de personnes (patients, soignants) |
|
||||
| DATE_NAISSANCE | Dates de naissance |
|
||||
| ADRESSE | Adresses postales |
|
||||
| ZIP | Codes postaux |
|
||||
| VILLE | Villes, lieux de naissance |
|
||||
| HOPITAL | Etablissements de sante |
|
||||
| TEL | Numeros de telephone |
|
||||
| EMAIL | Adresses email |
|
||||
| NIR | Numeros de securite sociale |
|
||||
| IPP | Identifiants Patient Permanent |
|
||||
| NDA | Numeros de Dossier Administratif |
|
||||
| RPPS | Numeros RPPS (professionnels de sante) |
|
||||
| IBAN | Coordonnees bancaires |
|
||||
| AGE | Ages |
|
||||
|
||||
## Performances (sur jeu de validation, 20% des donnees)
|
||||
|
||||
| Metrique | v2 (29 docs) | v3 (1 112 docs) |
|
||||
|----------|:---:|:---:|
|
||||
| **F1-score** | 0.903 | **0.963** |
|
||||
| **Recall** | 0.930 | **0.970** |
|
||||
| **Precision** | 0.877 | **0.957** |
|
||||
|
||||
## Inference (production)
|
||||
|
||||
| Parametre | Valeur |
|
||||
|-----------|--------|
|
||||
| Format | ONNX Runtime |
|
||||
| Taille du modele | 421 Mo |
|
||||
| Runtime | ONNX Runtime CPU (CPUExecutionProvider) |
|
||||
| Latence | ~10-20 ms / 512 tokens |
|
||||
| Threads | 2 inter-op, 4 intra-op |
|
||||
| Fenetre glissante | 400 tokens, stride 200 (textes longs) |
|
||||
| Seuil de confiance | 0.5 (prediction), 0.3 (vote croise EDS-Pseudo) |
|
||||
| Materiel cible | PC standard, CPU uniquement (pas de GPU requis) |
|
||||
|
||||
## Role dans le pipeline
|
||||
|
||||
CamemBERT-bio-deid v3 est le **3eme moteur NER** du pipeline d'anonymisation, utilise en **vote croise** avec EDS-Pseudo (moteur principal) et GLiNER (zero-shot). Il confirme ou infirme les detections d'EDS-Pseudo pour reduire les faux positifs sans sacrifier le recall. Il n'opere jamais seul — c'est un signal de validation.
|
||||
Reference in New Issue
Block a user