Moteur de linking (cœur ML)
1. Pipeline xMEN
Section intitulée « 1. Pipeline xMEN »🔵 Pour une mention, le linker combine un signal lexical (n-gram TF-IDF) et un signal dense (embeddings SapBERT), fusionnés par un ensemble, puis re-rankés par un cross-encoder fine-tuné. Sortie : un top-K de concepts Mondo avec scores.
flowchart LR M["Mention (+ contexte)"] --> NG["n-gram TF-IDF<br/>(nmslib)"] M --> SB["SapBERT<br/>(FAISS HNSW, CPU)"] NG --> EN["EnsembleLinker"] SB --> EN EN --> RR["Cross-encoder rerank<br/>(checkpoint fine-tuné)"] RR --> TK["top-K Mondo<br/>+ scores"] classDef m fill:#e7f5ec,stroke:#2E7D5B class EN,RR m
Le top-1 du modèle (predicted_top1) est snapshotté sur la validation (audit) — il peut
diverger du concept finalement retenu par le curateur (rang 2+, LCA, recherche libre).
2. KB & checkpoints
Section intitulée « 2. KB & checkpoints »🔵 KB en service : distemist_mondo_multilingual_de (~26 700 concepts Mondo). Checkpoint :
ce_finetune_v4ter_german (+ un reranker morpho dédié, D15). Les modèles partagent la
VRAM ; les index FAISS sont HNSW (CPU), chargés en RAM au démarrage (lifespan).
3. Multi-KB (disease / topo / morpho)
Section intitulée « 3. Multi-KB (disease / topo / morpho) »🔵 Trois KB sont chargées en parallèle, même mécanisme d’indexation, rerankers distincts :
| KB | Contenu | Usage |
|---|---|---|
disease | Mondo (~26,7 k) | linking maladie (ancre) |
topography | SNOMED body structure | axe topographie (onco) |
morphology | SNOMED morphologic abnormality | axe morphologie (onco) |
C’est la base du moteur compositionnel → Moteur compositionnel & oncologie (MC).
4. Multilinguisme FR / DE / IT
Section intitulée « 4. Multilinguisme FR / DE / IT »🔵 Asymétrie linguistique structurelle : la morphologie gréco-latine transfère bien, l’anatomie germanique non (peu de synonymes DE/IT dans Mondo). Remèdes mis en place : injection d’alias DE, et le pont Mondo→requête topographique (D21) qui pré-remplit l’axe topo par synthèse depuis l’ancre. La couverture par langue est rendue visible dans le dashboard ontologies.
5. Pré-routage par code
Section intitulée « 5. Pré-routage par code »🔵 Avant le linker, une mention accompagnée d’un code (ex. ICD-10) peut être résolue par correspondance exacte (code→Mondo). Les codes hors-scope Mondo (chapitres ICD-10 S/T/R/Z…) sont pré-routés et écartés de la file (pas de bruit pour les curateurs).
flowchart TD
R["Ligne importée"] --> Q{"code présent ?"}
Q -- non --> L["→ linker (top-K)"]
Q -- oui --> M{"code → Mondo ?"}
M -- "exact unique" --> AR["auto-résolu (code_routing)"]
M -- "hors-scope (S/T/R/Z)" --> PR["pré-routé (écarté)"]
M -- "sinon" --> L
6. Cache de validations cross-projet
Section intitulée « 6. Cache de validations cross-projet »🔵 Une mention validée alimente un cache : toute mention identique (texte normalisé) rencontrée ensuite — dans n’importe quel projet — est auto-résolue. Gros gain de débit. Piège connu : en test e2e, réutiliser une mention déjà validée la fait sauter la file → les tests de curation doivent utiliser des mentions non validées.
Voir aussi
Section intitulée « Voir aussi »- Pont terminologique & émission (Mondo→SNOMED) — ce qu’on fait de l’ancre Mondo.
- Architecture — où le pipeline se charge (lifespan).