Relation Extraction (Extraction de Relations)
La relation extraction (RE) est une tâche de NLP qui identifie et classifie les relations sémantiques entre les entités mentionnées dans un texte. À partir de « Anthropic a été fondée par Dario Amodei », le système extrait le triplet (Anthropic, fondée_par, Dario Amodei). C’est la brique centrale pour construire des knowledge graphs à partir de texte non structuré.
La relation extraction va au-delà de la simple détection d’entités (NER) et de leur liaison à une base de connaissances (entity linking). Elle capture les liens entre ces entités : qui travaille pour qui, quel produit est fabriqué par quelle entreprise, quel médicament traite quelle maladie. C’est ce qui transforme une liste d’entités isolées en un réseau de connaissances structuré et exploitable. En 2026, les approches vont des règles syntaxiques simples aux LLM en zero-shot, en passant par les modèles Transformer fine-tunés qui restent le standard en production.
- Catégorie
- NLP / Information Extraction
- Objectif
- Identifier les relations sémantiques entre entités dans un texte
- Output
- Triplets (sujet, relation, objet) : (Anthropic, fondée_par, Dario Amodei)
- Prérequis
- NER (détection des entités) ou extraction conjointe
- Approches
- Règles (dependency parsing), supervisé (BERT, RoBERTa), zero-shot (LLM), open IE
- Datasets clés
- TACRED, SemEval, NYT-10, SciERC, DocRED
Comment fonctionne la relation extraction
La tâche se décompose en deux sous-problèmes : détecter qu’une relation existe entre deux entités dans une phrase, puis classifier cette relation dans une catégorie prédéfinie (ou la générer librement en open IE).
Le pipeline classique
1. Détection des entités (NER) : Identifier les entités mentionnées dans le texte. « Anthropic » → Organisation, « Dario Amodei » → Personne, « San Francisco » → Lieu.
2. Génération des paires candidates : Pour chaque phrase contenant au moins deux entités, générer toutes les paires possibles. Dans une phrase avec 3 entités, cela donne 3 paires à évaluer.
3. Classification de la relation : Pour chaque paire, un classifieur détermine si une relation existe et laquelle. Les catégories typiques incluent : fondée_par, siège_social, employé_de, née_à, traite_maladie, produit_par, etc. Le classifieur peut aussi prédire « aucune relation » (classe NO_RELATION), qui est souvent la classe majoritaire.
Variantes de la tâche
Sentence-level RE : Extraire les relations au sein d’une seule phrase. C’est la variante la plus étudiée et la plus simple. Les datasets TACRED et SemEval ciblent cette variante.
Document-level RE : Extraire les relations entre entités mentionnées dans des phrases différentes d’un même document. Beaucoup plus complexe car les indices sont dispersés. Le dataset DocRED est la référence.
Open Information Extraction (Open IE) : Extraire les relations sans catégories prédéfinies. Le système produit des triplets (sujet, prédicat verbal, objet) à partir du texte brut. Plus flexible mais moins précis. Outils : OpenIE (Stanford), OLLIE, ReVerb.
Few-shot RE : Extraire des relations avec très peu d’exemples annotés. Les LLM comme T5 et GPT-4 excellent dans ce scénario, identifiant des relations jamais vues à l’entraînement à partir de quelques exemples dans le prompt.
Les approches techniques
Approches par règles et patterns
La méthode la plus simple consiste à exploiter les dépendances grammaticales (dependency parsing) pour extraire les relations. Avec spaCy, vous analysez la structure syntaxique de la phrase et identifiez le sujet, le verbe et l’objet.
import spacy
nlp = spacy.load("fr_core_news_lg")
doc = nlp("Anthropic a été fondée par Dario Amodei à San Francisco.")
# Extraire les triplets sujet-verbe-objet via dependency parsing
for token in doc:
if token.dep_ == "nsubj" and token.head.pos_ == "VERB":
subject = token.text
verb = token.head.text
# Chercher l'objet
for child in token.head.children:
if child.dep_ in ("dobj", "attr", "agent"):
obj = child.text
print(f"({subject}, {verb}, {obj})")
# Approche simplifiée : co-occurrence dans la même phrase
for ent1 in doc.ents:
for ent2 in doc.ents:
if ent1 != ent2:
print(f"Relation potentielle : {ent1.text} ({ent1.label_}) "
f"↔ {ent2.text} ({ent2.label_})")
L’approche par règles est transparente et ne nécessite pas de données annotées. Mais elle est fragile face à la variabilité du langage et ne gère pas bien les phrases complexes ou les formulations inhabituelles.
Approches supervisées (BERT et dérivés)
L’approche dominante en production. Un modèle BERT (ou RoBERTa, SpanBERT) est fine-tuné sur un dataset annoté de relations. L’entrée typique est la phrase avec les deux entités marquées par des tokens spéciaux :
[CLS] [E1] Anthropic [/E1] a été fondée par [E2] Dario Amodei [/E2] . [SEP]
Le modèle apprend à classifier la relation entre E1 et E2 à partir de la représentation du token [CLS]. Les datasets de référence :
| Dataset | Domaine | Niveau | Relations | Taille |
|---|---|---|---|---|
| TACRED | Général (personnes, organisations, lieux) | Phrase | 42 types | ~106K exemples |
| SemEval-2010 Task 8 | Général | Phrase | 9 types + direction | ~10K exemples |
| DocRED | Général (Wikipedia) | Document | 96 types | ~5K documents |
| SciERC | Scientifique | Phrase | 7 types | ~500 abstracts |
| ChemProt | Biomédical (chimie-protéines) | Phrase | 5 types d’interactions | ~2,4K abstracts |
Les modèles BERT fine-tunés atteignent des F1-scores de 70 à 75% sur TACRED et 85 à 90% sur SemEval, selon la complexité des relations et la qualité des données.
Approches LLM (zero-shot et few-shot)
Les LLM (GPT-4, Claude, Mistral) permettent d’extraire des relations sans données annotées ni modèle spécialisé. Il suffit de formuler la tâche dans le prompt :
Extrais les relations entre entités dans le texte suivant.
Format : (sujet, relation, objet)
Texte : "Anthropic, fondée en 2021 par Dario Amodei et Daniela
Amodei, développe le modèle Claude depuis son siège de San Francisco."
Résultat attendu :
(Anthropic, fondée_par, Dario Amodei)
(Anthropic, fondée_par, Daniela Amodei)
(Anthropic, fondée_en, 2021)
(Anthropic, développe, Claude)
(Anthropic, siège, San Francisco)
Les LLM excellent en few-shot RE : avec quelques exemples dans le prompt, ils identifient des types de relations jamais vus à l’entraînement. C’est un avantage majeur pour les domaines de niche où les données annotées sont rares. L’inconvénient : latence élevée, coût par document, et risque d’hallucination (le LLM peut inventer des relations non présentes dans le texte).
GliNER2 : le retour des petits modèles
GliNER2 (2026) unifie NER, classification, relation extraction et extraction structurée dans un seul modèle compact qui tourne sur CPU. Son approche schema-driven permet de définir les types de relations à extraire de façon déclarative et d’exécuter l’extraction en un seul appel d’inférence. C’est une alternative pragmatique aux LLM pour la production à grande échelle : beaucoup plus rapide et moins coûteux, avec des performances compétitives sur les tâches structurées.
Relation extraction et construction de knowledge graphs
La relation extraction est la brique centrale du pipeline de construction de knowledge graphs à partir de texte. Le pipeline complet :
1. Résolution de coréférence : Résoudre les pronoms et les descriptions définies pour que chaque mention d’entité soit explicite.
2. NER + Entity Linking : Détecter les entités et les relier à leurs identifiants dans une base de connaissances (Wikidata, DBpedia).
3. Relation Extraction : Extraire les triplets (sujet, relation, objet) entre les entités identifiées.
4. Stockage dans un graphe : Stocker les triplets dans une base de données orientée graphe (Neo4j, Amazon Neptune) où les entités sont des nœuds et les relations sont des arêtes.
Le framework Plumber (2023) a montré qu’en combinant 40 composants réutilisables pour ces sous-tâches, il est possible de générer 432 pipelines distincts et de sélectionner automatiquement le pipeline optimal pour chaque texte d’entrée. Les recherches récentes montrent que la combinaison de LLM fine-tunés avec des knowledge graphs existants améliore significativement la précision de l’extraction.
Cas d’usage concrets
Construction de knowledge graphs : Le cas d’usage principal. Transformer des corpus de texte (articles Wikipedia, publications scientifiques, documents d’entreprise) en graphes de connaissances structurés. Google Knowledge Graph, Wikidata et DBpedia sont construits en partie grâce à la relation extraction.
Biomédecine : Extraire les relations médicament-maladie, gène-protéine, symptôme-pathologie à partir de la littérature scientifique et des dossiers cliniques. Les datasets ChemProt et GDA sont les benchmarks du domaine. C’est critique pour la pharmacovigilance et la découverte de médicaments.
Finance : Extraire les relations entreprise-dirigeant, entreprise-acquisition, entreprise-partenariat à partir des rapports financiers et des articles de presse économique. Utile pour l’analyse de risque, la due diligence et la veille concurrentielle.
Juridique : Identifier les relations entre lois, jurisprudences, parties prenantes et obligations dans les documents juridiques. Utile pour l’analyse de contrats, la compliance et la recherche juridique.
Intelligence et sécurité : Construire des réseaux de relations entre personnes, organisations et événements à partir de sources ouvertes (OSINT). La relation extraction est un composant clé des systèmes d’analyse de renseignement.
SEO et données structurées : Extraire les entités et leurs relations depuis le contenu web pour générer des annotations Schema.org et enrichir la compréhension sémantique par les moteurs de recherche.
Outils et bibliothèques
| Outil | Approche | Points forts |
|---|---|---|
| spaCy + dependency parsing | Règles syntaxiques | Simple, rapide, transparent. Bon pour les patterns réguliers. |
| OpenIE (Stanford) | Open Information Extraction | Extraction sans schéma prédéfini. Triplets (sujet, prédicat, objet). |
| GliNER2 / GLiREL | Neural schema-driven | NER + RE unifiés, CPU-efficient, extraction JSON structurée. |
| HuggingFace Transformers | BERT/RoBERTa fine-tuné | SOTA supervisé. Fine-tuning sur TACRED, SemEval, etc. |
| LLM (GPT-4, Claude, Mistral) | Zero-shot / few-shot | Flexible, pas de données annotées requises. Coûteux. |
| DeepKE | Framework unifié NER+RE+AE | Open source, supporte supervisé/few-shot/document-level. |
| Plumber | Pipeline dynamique | Assemble automatiquement le pipeline optimal parmi 432 combinaisons. |
Défis et limites
Déséquilibre des classes. Dans la plupart des datasets, la classe NO_RELATION représente 70 à 80% des paires. Le modèle doit apprendre à distinguer les paires sans relation (la majorité) des paires avec relation (la minorité). Les techniques de rééchantillonnage et les loss functions pondérées atténuent ce problème.
Relations cross-phrases (document-level). Beaucoup de relations s’expriment sur plusieurs phrases. « Dario Amodei a quitté OpenAI. Il a ensuite fondé Anthropic. » La relation (Dario Amodei, fondateur_de, Anthropic) nécessite de relier des informations de deux phrases. C’est nettement plus complexe que la RE sentence-level et les performances sont encore significativement inférieures.
Ambiguïté des relations. « Jean a donné un livre à Marie. » Est-ce une relation de don, de prêt, ou de vente ? Le texte seul ne suffit pas toujours à désambiguïser. Les connaissances du monde et le contexte plus large sont nécessaires.
Domaines spécialisés. Les modèles entraînés sur du texte général (TACRED) ne fonctionnent pas bien sur du texte biomédical ou juridique sans fine-tuning sur des données du domaine. Les vocabulaires, les structures de phrases et les types de relations diffèrent profondément.
Scalabilité. Le nombre de paires d’entités à évaluer croît quadratiquement avec le nombre d’entités dans une phrase ou un document. Pour un document avec 50 entités, c’est 1225 paires à classifier. Des stratégies de filtrage (ne considérer que les entités dans la même phrase ou dans un voisinage limité) sont nécessaires.
Hallucination des LLM. En extraction par LLM, le modèle peut inventer des relations non présentes dans le texte. La validation par une vérification de grounding (le triplet est-il explicitement supporté par le texte ?) est indispensable.
Verdict
La relation extraction est la pièce maîtresse de l’information extraction et de la construction de knowledge graphs. Sans elle, vous avez des entités isolées. Avec elle, vous avez un réseau de connaissances structuré et exploitable. C’est ce qui transforme « il y a des noms dans ce texte » en « voici qui fait quoi, où, quand et comment ».
En 2026, trois approches coexistent. Les modèles BERT/RoBERTa fine-tunés sur TACRED ou des données métier restent le standard en production supervisée (meilleur rapport qualité-coût-fiabilité). Les LLM en zero-shot/few-shot sont la solution la plus flexible pour les domaines sans données annotées, avec une mise en place immédiate mais un coût plus élevé. Et les petits modèles spécialisés comme GliNER2 offrent un compromis intéressant : performance correcte, CPU-only, et extraction structurée native. Le choix dépend de vos données (annotées ou non), de votre volume (milliers ou millions de documents) et de vos exigences de précision.
Questions fréquentes sur la relation extraction
Quelle est la différence entre relation extraction et NER ?
La NER (Named Entity Recognition) identifie et catégorise les entités dans un texte : « Anthropic » → Organisation, « Dario Amodei » → Personne. La relation extraction va plus loin : elle identifie les liens sémantiques entre ces entités. (Anthropic, fondée_par, Dario Amodei). Le NER répond à « quelles entités sont mentionnées ? », la relation extraction répond à « comment ces entités sont-elles liées ? ». En pratique, le NER est un prérequis de la relation extraction, et les deux sont souvent combinés dans un pipeline unifié.
Les LLM peuvent-ils remplacer les systèmes supervisés pour la relation extraction ?
Partiellement. Les LLM excellent en zero-shot et few-shot RE, surtout pour les domaines sans données annotées. GPT-4 et Claude extraient des relations pertinentes à partir de simples instructions en langage naturel. Mais les modèles BERT fine-tunés restent supérieurs en précision sur les benchmarks standard (TACRED, SemEval) quand des données annotées sont disponibles. Les LLM sont aussi plus lents, plus coûteux, et sujets à l’hallucination (inventer des relations non présentes dans le texte). L’approche optimale combine souvent les deux : LLM pour le prototypage et les cas complexes, modèle fine-tuné pour la production en volume.
Comment construire un knowledge graph à partir de texte ?
Le pipeline standard : (1) résolution de coréférence pour lever l’ambiguïté des pronoms, (2) NER pour détecter les entités, (3) entity linking pour les relier à une base de connaissances, (4) relation extraction pour extraire les triplets (sujet, relation, objet), (5) stockage dans une base orientée graphe (Neo4j). Des outils comme GliNER2 ou les LLM via prompt structuré peuvent couvrir les étapes 2 à 4 en un seul appel. Neo4j propose des intégrations directes avec les LLM pour ce pipeline.
Quels sont les principaux datasets pour entraîner un modèle de relation extraction ?
Les références : TACRED (42 types de relations entre personnes, organisations et lieux, ~106K exemples), SemEval-2010 Task 8 (9 types de relations sémantiques, ~10K exemples), DocRED (96 types, niveau document, basé sur Wikipedia), SciERC (7 types, textes scientifiques), ChemProt (interactions chimie-protéines, biomédical), et NYT-10/FB-NYT (relations extraites d’articles du New York Times). Pour un domaine spécifique, vous devrez probablement annoter vos propres données ou utiliser un LLM en few-shot.
La relation extraction fonctionne-t-elle en français ?
Les outils de base (spaCy dependency parsing, OpenIE) fonctionnent en français avec les modèles spaCy français (fr_core_news_lg). Les LLM (GPT-4, Claude, Mistral) gèrent nativement le français en zero-shot. Pour les modèles supervisés (BERT fine-tuné), le principal défi est le manque de datasets annotés en français équivalents à TACRED. Les options sont : utiliser un modèle multilingue (mBERT, XLM-R) fine-tuné sur des données anglaises avec transfert cross-lingual, ou annoter vos propres données françaises. CamemBERT fine-tuné sur des données de RE françaises donne de bons résultats mais nécessite un effort d’annotation.