Identifier les relations entre entités, calibrer la confiance et s’abstenir face à une relation inconnue. Un projet issu d’un travail ENSAI avec Maxime Ferret.
Indicateur clé
89.16%
Macro-F1 · test des 56 relations connues du protocole open-set
Exemple illustratif · extraction de relation
Marie CurieHEAD a découvert le poloniumTAIL.
open-setKNOWNUNKNOWN → abstain
Une décision calibrée, avec la possibilité de s’abstenir.
Architecture
RelationScope NLP
Les composants, les flux de données et les frontières de confiance du système.
Faites défiler le schéma →
Technologies
PyTorch
ModernBERT · HF
FastAPI
Next.js
TypeScript
Cloud Run
Cloud Storage
Cloud Tasks
Terraform
Docker
GitHub Actions
Choix d’architecture
01
Seule l’application Next.js est publique ; elle obtient côté serveur un jeton d’identité Google pour l’API privée, le navigateur ne voit jamais d’identifiant.
02
Deux buckets aux droits distincts : lecture seule pour les modèles, écriture pour la télémétrie et les jobs, avec une rétention de 90 jours.
03
Cycle de vie explicite : entraînement → évaluation figée → seuils de promotion → enregistrement → promotion. Le trafic de production ne déclenche jamais de réentraînement.
04
Respect de la vie privée : ni phrase ni entité dans les logs, texte brut des retours uniquement avec consentement explicite.
Ce que j’ai construit
Marqueurs d’entités, pooling de paires, calibration par température et seuil d’abstention. Serving FastAPI/Next.js, explication par occlusion de mots, revue humaine et traitements asynchrones durables.
Résultat et compromis
Profil équilibré : 84,45 % de rejet des relations inconnues et 61,25 % d’acceptation des exemples connus. Le protocole garde 16 relations inédites pour le test final, séparées de la calibration.
Périmètre et limites
L’occlusion apporte un indice de sensibilité, pas une explication causale. Les métriques du classifieur ne mesurent pas la qualité de détection automatique des entités. Les évolutions V3 sont présentées séparément du benchmark V1.