chore: add .gitignore
This commit is contained in:
65
docs/GOLD_CRH_GUIDE.md
Normal file
65
docs/GOLD_CRH_GUIDE.md
Normal file
@@ -0,0 +1,65 @@
|
||||
# Gold Standard CRH — Guide d'annotation
|
||||
|
||||
## Principe
|
||||
|
||||
Le gold CRH permet d'évaluer la qualité de la sélection DP (NUKE-3) sur des dossiers CRH réels. Chaque cas annoté définit le DP attendu avec des marges de tolérance DIM.
|
||||
|
||||
## Règles d'annotation (DP)
|
||||
|
||||
- **DP** = diagnostic qui motive l'essentiel de la prise en charge et la consommation de ressources
|
||||
- Si étiologie connue : coder l'étiologie, pas le symptôme (ex: I26.9, pas R06.0)
|
||||
- Si ambigu : remplir `dp_expected` + `dp_acceptable_codes` + `dp_acceptable_family3`
|
||||
- Si seul un symptôme est défendable : mettre `allow_symptom_dp=true` + expliquer dans `notes`
|
||||
- `confidence` : certain (1 seul DP possible), probable (fort mais alternatives), ambiguous (vraie ambiguïté)
|
||||
- `evidence` : 1-3 extraits courts (max 240 chars), section + texte
|
||||
|
||||
## Schéma JSON
|
||||
|
||||
```json
|
||||
{
|
||||
"case_id": "106_23056475",
|
||||
"document_type": "crh",
|
||||
"dp_expected": {"code": "I26.9", "label": "Embolie pulmonaire"},
|
||||
"dp_acceptable_codes": ["I26.0"],
|
||||
"dp_acceptable_family3": ["I26"],
|
||||
"allow_symptom_dp": false,
|
||||
"confidence": "certain",
|
||||
"evidence": [{"section": "Conclusion", "excerpt": "EP confirmée au scanner"}],
|
||||
"notes": ""
|
||||
}
|
||||
```
|
||||
|
||||
## Procédure en 10 étapes
|
||||
|
||||
1. `python tools/gold_crh_annotator.py --bootstrap --out data/gold_crh/gold_template.csv`
|
||||
2. Ouvrir le CSV dans un tableur (LibreOffice, Excel)
|
||||
3. Filtrer les cas CRH (ignorer les trackare bypass)
|
||||
4. Pour chaque CRH : lire le JSON pipeline, vérifier le DP proposé
|
||||
5. Remplir `dp_expected_code` et `dp_expected_label` (code correct selon les règles DIM)
|
||||
6. Ajouter les alternatives dans `dp_acceptable_codes` (séparés par `|`)
|
||||
7. Ajouter les familles dans `dp_acceptable_family3` (séparés par `|`)
|
||||
8. Remplir `confidence`, `allow_symptom_dp`, `evidence` et `notes`
|
||||
9. `python tools/gold_crh_annotator.py --import-csv data/gold_crh/gold_template.csv`
|
||||
10. `python tools/gold_crh_annotator.py --check data/gold_crh/gold_crh.jsonl`
|
||||
|
||||
## Métriques d'évaluation
|
||||
|
||||
| Métrique | Description |
|
||||
|----------|-------------|
|
||||
| `exact_match_strict` | Code choisi == `dp_expected.code` |
|
||||
| `exact_match_tolerant_codes` | Code choisi dans `dp_acceptable_codes` |
|
||||
| `family3_match_tolerant` | Famille 3 chars du code dans `dp_acceptable_family3` |
|
||||
| `acceptable_match` | tolerant_codes OU family3_match |
|
||||
| `confirmed_accuracy_tolerant` | acceptable_match sur les CONFIRMED uniquement |
|
||||
| `symptom_not_allowed` | R* choisi alors que `allow_symptom_dp=false` |
|
||||
|
||||
## Fichiers
|
||||
|
||||
| Fichier | Rôle |
|
||||
|---------|------|
|
||||
| `data/gold_crh/gold_template.csv` | Template CSV pré-rempli |
|
||||
| `data/gold_crh/gold_crh.jsonl` | Gold validé (1 JSON/ligne) |
|
||||
| `data/gold_crh/gold_crh_index.json` | Index case_id → offset |
|
||||
| `src/eval/gold_models.py` | Modèles Pydantic + évaluation |
|
||||
| `tools/gold_crh_annotator.py` | CLI annotation |
|
||||
| `docs/NUKE3_GOLD_EVAL.csv` | Résultats évaluation |
|
||||
Reference in New Issue
Block a user