alipascal/extract-rdf-from-text
Projet universitaire d'extraction d'entités triplets (sujet-prédicat-objet) à partir de texte brut et transformation dans un graphe RDF.
Text To RDF : Extraction Sémantique du Web
Projet universitaire (Sujet 2) :
Extraction des entités à partir de texte et transformation en un graphe RDF
Ce projet implémente différents modèles de NER (Named-Entity Recognition) et d'extraction de triplets RDF (sujet, prédicat, objet).
Quatres modèles sont présentés :
- SpaCy
- OpenAI (gpt-5-nano)
- NLTK
- Stanford CoreNLP
Ces modèles sont testés sur des textes bruts non structurés.
Les corpus de textes proviennent d'articles scientifiques, de comptes rendus médicaux, d'articles de presse et d'extraits de pages Wikipédia.
Toutes les sources sont référencées dans les fichiers correspondants.
Features
- Prend en entrée un fichier contenant du texte brute (paragraphes, phrases simples...) et retourne un graphe RDF.
- Visualisation du graphe à partir d'un fichier en html
- Génère un fichier XML (.rdf) et un fichier turtle (.ttl) pour le graphe.
- Traite du texte en anglais (et français pour les modèles d'OpenAI et SpaCy)
How it works / Architecture
Architecture générale :
Installation & Setup projet pour le développement
Dépendances
- Python ≥ 3.11
- Stanford CoreNLP ≥ 4.5.10
- OpenAI API key
Setup
Le programme requiert les packages Python suivants :
rdflib(==7.5.0) : Librairie pour manipuler et créer des graphes RDFpyvis: Visualisation interactive de graphesnltk(==3.9.2) : Toolkit de traitement du langage naturelspacy(==3.8.11) : NLP avancé pour tokenisation, entités nommées, etc.openai(==2.14.0) : Intégration des modèles OpenAIpython-dotenv(==1.2.1) : Chargement des variables d’environnement depuis un fichier .envnumpy(==2.4.0) : Librairie scientifique, utilisée ici pour supporter nltk
Environement virtuel sur Windows :
python -m venv venv # création
.\venv\Scripts\activate # activation
deactivate # désactivationEnvironnement virtuel sur Linux :
python3 -m venv venv # création
source venv/bin/activate # activation
deactivate # désactivationInstallation des dépendances Python lorsque la venv est activée :
pip install -r requirements.txtUtilisation & Installation de SpaCy
Installation du model SpaCy français et anglais, avant le lancement du programme :
python -m spacy download fr_core_news_lg
python -m spacy download en_core_web_lgDésinstalltion du model si besoin :
pip uninstall fr_core_news_lgDocumentations SpaCy : https://spacy.io/models/fr/#fr_core_news_sm
Utilisation & installation de NLTK
Pour utiliser NLTK, il faut télécharger les ressources requises.
Soit en téléchargeant l’intégralité des modules :
python -c "import nltk; nltk.download('all')"Soit en téléchargeant les modules spécifiques :
python -c "import nltk; nltk.download('punkt_tab'); nltk.download('averaged_perceptron_tagger_eng'); nltk.download('maxent_ne_chunker_tab'); nltk.download('words')"Utilisation de API OpenAI (chatGPT)
Créer et ajouter dans le fichier .env une clé API secrète OpenAI :
OPENAI_API_KEY=sk-XXXUtilisation & Installation de CoreNLP
Pour utiliser CoreNLP Stanford, il faut télécharger le modèle au format .zip depuis le site officel : https://stanfordnlp.github.io/CoreNLP/
Ensuite, ajouter dans le fichier .env le chemin absolu vers le dossier de CoreNLP, comme dans l'exemple ci-dessous :
STANFORD_DIR=C:\...\...\stanford-corenlp-4.5.10Lancement de l’application
Le programme s’exécute depuis l’invite de commande.
Arguments :
model: le modèle à utiliser (spacy,nltk,stanford,openai)--file: fichier d’entrée (par défautinput.txt)--lang: langue du fichier d’entrée (frouen, par défauten)--output: nom file sortir (par défautoutput)
python main.py <model> --lang <fr/en> --file input.txt --output outputLe programme génère :
- un fichier
.rdfau format XML - un fichier
.ttlau format Turtle - un fichier
.htmlpour la visualisation
!!! Les modèles NLTK et Stanford CoreNLP traitent uniquement les textes en anglais.
Exemples d'utilisation :
python main.py spacy --lang fr # SpaCy français sur le fichier par défaut
python main.py nltk --file mon_fichier.txt # NLTK sur un fichier spécifique
python main.py openai # OpenAIAuteurs
License
Ce projet est sous licence MIT – une licence open source permissive qui permet l’utilisation, la modification et la distribution gratuites du logiciel.
Pour plus de détails, voir la documentation MIT License.

