Skip to content

lab-bnu/ritter_ner

Repository files navigation

DOI

Autrice: Alexia Schneider
Github: alexiaschn
Date de création: 2024-07
Titre: NER_Ritter
Licence: CC BY-SA
Description: Dépôt avec ressources logicielles et données pour la Reconnaissance d'Entités Nommées adaptée à des notices bibliographiques

La Reconnaissance d'Entités Nommées : le Ritter augmenté comme cas d'usage

Dépôt et tutoriel pour la reconnaissance d'Entités Nommées (EN) à partir des données du Répertoire bibliographique des imprimés d'Alsace des XVe et XVIe siècles de François Ritter aka le Ritter.

Téléchargement et mise en place

Pour pouvoir faire l'intégralité des manipulations :

````pip install -r requirement/all_detailed.txt```

Pour la partie sur la création du jeux de données seulement :

pip install -r requirement/common.txt

Pour faire de la NER avec des modèles spaCy : pip install -r requirement/spacy.txt

Pour entraîner un modèle via spaCy :

pip install -r requirement/spacy_entrainement.txt

Pour travailler avec Mistral :

pip install -r requirement/mistral.txt

Tutoriel

Le tutoriel suit la documentation avec les différentes étapes : Présentation des données, OCRisation, Création des jeux de données, de l'annotation manuelle au formatage pour l'utilisation d'algorithmes, puis Présentation des différentes stratégies pour la Reconnaissance d'EN, ce qui offre la possibilité d'Entrainer un modèle avec spaCy ou d'Utiliser des modèles génératifs.

Programmes principaux

Liste des programmes principaux sans arguments en ligne de commande (ils se paramètrent dans params.py). Pour utiliser un programme :

python <nom du programme>

programme commentaire
params.py gère tous les paramètres pour les programmes principaux, se référer à la documentation poru les étapes concernées
doc2encoded_xml_ner part d'un dossier de fichiers .xml et restitue un fichier de doc .xml avec les EN encodés par le modèle spaCy spécifié (avec idRef de personnes)
creation_dataset.py convertit les pages XML en tableurs CSV (et en document .spacy pour l'entrainement) en fonction des paramètres
hf_ner produit les prédictions à partir du fichier csv en fonction du modèle disponible sur HF donné en paramètre, effectue aussi l'évaluation du modèle
regex_ner à partir du csv généré par creation_dataset effectue la prédiction par regex depuis la Liste alphabétique des noms de personnes du Ritter : ne fonctionne qu'avec ces données.
generative_models_ner Divise en batch de texte avec le prompt en fonction du nombre de token maximal donné en paramètre
alignement_encodage_xml Cherche l'URI IdRef de chaque EN de personne et encode en XML le document final en XML par div ou par page

Programmes standalones

Les étapes fondamentales sont aussi divisées dans des programmes courts standalone qui peuvent être utiles pour l'application sur d'autres jeux de données.

Pour utiliser un programme : python programmes_standalone/<nom du programme> argument1 argument2 --option argument_option

exemple pour utiliser spacy_ner.py: python programmes_standalone/spacy_ner.py data/demo/demo_notices.txt --model "fr_camembert_ritter --outpath data/demo/demo_ner.csv

programme arguments options commentaire
evaluation_ocr.py ground_truth : chemin du document en txt contenant la transcription correcte. model_output :chemin vers le document txt contenant la transcription produite par le modèle output_doc : chemin vers le document .csv dans lequel les mesures d'évaluation seront enregistrées. --auto : argument optionnel pour faire l'évaluation de toutes les transcriptions présentes dans le dossier model_output enregistre les mesures CER et WER du document OCRisé
extract_names.py doc: document .csv de sortie de creation_dataset.py avec annotation manuelle outdoc : document dans lequel sera écrit la liste des noms de personnes Extrait du doc avec les données tokenisées et les étiquettes correctes les tokens correspondants à des noms de personnes
train_test_split.py doc : sortie en csv du programme creation_dataset.py contenant les données tokenisées et alignées avec leur étiquette correcte outdir : dossier où seront écrits les jeux d'entrainement et de test en format csv Créé les csv contenant les jeux d'entrainement et de test
testing_hf_ner.py document : document en .txt contenant le texte brut sur lequel on veut faire de la NER. --outpath : sauvegarde des EN extraits dans le document donné. --model : nom du modèle disponible via Hugging Face. Permet de visualiser la tâche de NER à partir d'un simple document txt.
spacy_ner.py document : document en .txt contenant le texte brut sur lequel on veut faire de la NER. --outpath : sauvegarde des EN extraits. --model : nom du modèle de spaCy Tâche de NER simple à partir d'un modèle de spaCy.
training_llm.ipynb Notebook pour l'affinage de modèles Transformers.
create_batches.py template.txt : document .txt contenant l'instruction de base à ajouter à chaque batch. txtdir : dossier contenant le/s texte/s en format .txt outdir : dossier de sortie des batches au format .txt divise le contenu d'un ensemble de documents txt en fonction de la fenêtre contextuelle maximale du modèle employé : permet d'insérer le contenu manuellement dans le prompt via l'interface web.
alignement.py "nom d'une personne" --sparql : fait une requête via l'endpoint SPARQL et non Sru requête www.idref.fr pour obtenir l'URI d'un nom

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published