Skip to content

Tools and ressources to enrich a morphosyntactic lexicon for medieval French

Notifications You must be signed in to change notification settings

CristinaGHolgado/oldfrench_lexicon

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 

Repository files navigation

Enrichissement d'un lexique morphosyntaxique pour le français médiéval

This repository contains a set of ressources used to enrich a morphosyntactic lexicon for old French (OFrLex) in order to improve the performance of a syntactic parser and improve its the lexical coverage. These ressources include lexicons, scripts and linguistic annotation tools for old French.

It is part of the ANR PROFITEROLE projet. This work has been conducted by Cristina Garcia Holgado and Mathilde Reignault.

đŸ”Č 1. Construction d'un inventaire de formes

Description

Construction d'un inventaire de formes à partir du corpus gold BFMGOLDLEM et le lexique OFrLex (dev) afin d'augmenter la couverture du lexique (nouvelles entrées).

📁 Ressources

/scripts/inventaires

- Corpus BFMGOLDLEM source dans la Base de Français Médiéval: 21 textes (431 144 formes étiquetées et lemmatisées) en format CoNNL-U. Il inclut les informations suivantes: forme, lemme, étiquette UD, étiquette Cattex 2009, traits morphologiques (quelques formes) et source/idx. Des nouveaux textes ont été ajoutés postérieurement. AccÚs au corpus: corpus BFMGOLDLEM

- Lexique OFrLex: Lexique morpho-syntaxique annoté selon les conventions Alexina. Il est composé d'entrées lexicales de différentes sources complétées par leurs fonctions syntaxiques, leurs réalisations et leurs redistributions. Le lexique est composé d'entrées intensionnelles (.ilex) et extensionnelles (.lex) :

Intensional lexicon

aamer___746696__1 v-er 100;Lemma;v;Suj:cln\\sn,Obj:(cla\\sn);upos=VERB,cat=v;%actif

Extensional lexicon (lexique utilisé)

aamer 100 v [pred="aamer___746696__1__1<Suj:cln\sn,Obj:(cla sn)>",@pers,cat=v,upos=VERB,@inf.std] aamer___746696__1__1 Default

AccÚs au lexique (derniÚre version) OFrLex dev. La version précédente utilisé dans ce travail est disponible dans OFrLex old

Informations plus détaillées à propos des ressources: OFrLex, Alexina

➖ Instructions pour l'exĂ©cution du code

Inventoire
inventory_builder_bfm.py
[-in CORPUS -out FILENAME -ignore IGNORE FILES]

Structure du fichier en sortie:

fpl forme lemme pos (cattex) feats_bfm lemma_src file_src_bfm occ_bfm n
confondemant_confondement_noun confondemant confondement NOMcom _ DECT CligesKu 1 _
confondent_confondre_verb confondent confondre VERcjg VerbForm=Fin DECT CligesKu 2 _
confondoit_confondre_verb confondoit confondre VERcjg VerbForm=Fin DMF SGenPr1 1 _

inventory_builder_ofr.py
[-in CORPUS -out FILENAME -ignore IGNORE FILES -cattex CATTEX IF AVALIABLE -fiter_pos IGNORE POS]

Structure du fichier en sortie:

form pos traits lemme file_src raw_lemme inconnu upos no_upos
aates adj [pred="aate___203__1<Suj:cln sn>",@pers,cat=adj,upos=ADJ,@sg.nom.masc] aate___203__1 ..\ofrlex-dev\ADJ.lex aate 0 ADJ
abaant adj [pred="abeant___211__1<Suj:cln sn>",@pers,cat=adj,upos=ADJ] abeant___211__1 ..\ofrlex-dev\ADJ.lex abeant 0 ADJ
abaeux adj [pred="abaeuz___204__1<Suj:cln sn>",@pers,cat=adj,upos=ADJ] abaeuz___204__1 ..\ofrlex-dev\ADJ.lex abaeuz 0 ADJ

Fusion d'entrées
scripts/map_ofrlex_bfmgoldlem.ipynb

bfm_inventory = "data\\profiterole_bfmgold_inventoire.tsv"
ofrlex_inventory = "data\\ofrlexdev_inventory.tsv

On peut fusionner les entrées BFM-OFrLex par forme-lemme (fl), forme-pos(fp) et forme-lemme-pos(flp).

merge_by_col = 'flp'

On obtient les formes en commun et/ou absentes (formes BFMGOLDLEM non renseignées dans OFrLex):

forme lemme UPOS traits ofrlex source ofrlex
Abbeville* Abeville* _ _ Abeville NOMpro _ _ _
Abbeye___54353__1 Abbeye PROPN [pred="Abbeye___54353__1<Suj:(sn)>",upos=PROPN,cat=np] _ _ _ 0.0 ..\ofrlex-dev\PROPN.lex

Formes BFMGOLD absentes dans OFrLex(*) triĂ©es par ordre alphabĂ©tique du lemme, ce qui permet de gĂ©rer (vĂ©rification manuelle) plus facilement les cas oĂč l'on trouve des variants dans les lemmes:
e.g.

[...] Abbeville NOMpro  
[...] Abeville NOMpro  
[...] Abel NOMpro  
[...] Abels NOMpro  
[...] Abevile NOMpro  
...  

Fichiers en sortie

AccĂšs aux inventaires et formes BFMGOLDLEM absentes dans OFrLex



đŸ”Č 2. Lemmatisation des formes non renseignĂ©s dans OFrLex

Description

AprÚs avoir constaté que de nombreuses formes du corpus PROFITEROLE (32.485 formes) étaient absentes dans le lexique OFrLex-dev, on leur a attribué des informations morphologiques en utilisant divers ressources et stratégies pour le tri des différentes informations.

** Dans une étape postérieure, ces formes ont été lematisées en contexte (voir section 5)

Stratégies:
(1) Lemmatisation avec divers outils et ressources (LGeRM, BFMGOLDLEM, FROLEX) et tri selon la priorité accordée à chaque ressource:

  1. BFMGOLDLEM (inventaire): priorité à un corpus gold pour le français médiéval
  2. LGeRM: puis, propositions de la lemmatisation par LGeRM, mais l'outil est notamment conçu pour le Moyen Français
  3. FROLEX: lexique qui fournit uniquement lemme/POS

(2) GĂ©nĂ©ration de variants graphiques possibles pour les formes qui n'ont pu ĂȘtre alignĂ©s (match)
Cette stråtegie permet de rapprocher les formes qui n'ont pas été trouvées pendant l'étape précedente.
E.g.:

meyns (forme non trouvée)   meins(variant généré)   moins(forme trouvée)    ADV int_quantif quantif

(3) RequĂȘtes automatiques dans un dictionnaire externe
Pour les formes restantes qui n'ont pu ĂȘtre renseignĂ©es, on effectue des requĂȘtes automatiques dans le dictionnaire (dictionnaire anglo-normand) et on extrait les informations qui sont fournies pour cette forme.

📁 Ressources

scripts/manques

  • LGeRM: plateforme, lexique morphologique et outil de lemmatisation pour le moyen français et le français mĂ©dieval. Il privilĂ©gie les lemmes du DMF (Dictionnaire du Moyen Français). Pour accĂšder Ă  l'outil et au lexique en local, contactez l'auteur

  • BFMGOLDLEM

  • FROLEX: lexique qui rassemble des formes en français mĂ©diĂ©val provenant de diverses sources. Il fournit leur Ă©tiquette Cattex (Cattex 2009). Ce lexique est disponible dans frolex-03.tsv derniĂšre version (2020)

➖ Instructions pour l'exĂ©cution du code

  • Lemmatisation et alignement d’entrĂ©es dans les diffĂ©rents resources
    [align_manques.py] Fichiers nécessaires
folder = 'scripts\\enrich_ofrlexdev\\' DOSSIER DE TRAVAIL
*manques_lemmatisees = folder + "MANQUES LEMMATISÉES" # Formes manquantes lemmatisĂ©es avec lgerm
inventory_bfm = folder + 'ressources\\' + INVENTAIRE BFMGOLDLEM # Inventaire du corpus BFMGOLDLEM
frolex_f = folder + LEXIQUE FROLEX # Lexique Frolex
lexique_lgerm = "lgerm\\lexiques\\graphies_MF.txt" # Lexique LGeRM
manques_file = folder + LISTE DE FORMES MANQUANTES # Manques

* optionnel

Mode d'annotation:
Si "manques", on fournit des annotations pour les formes manquantes (premiĂšre Ă©tape)
Si "variants", on fournit des annotations pour les variants générés dans [generate_variants.py]

mode = MODE

Ce script retourne un fichier (un fichier par POS) structuré de la maniÚre suivante:

form def_pos def_lemma def_morph source UPOS pos
abisĂĄg NCO aviage masc LGERM NCO NCO
abitation NCO habitation fem FROLEX NCO NCO
abiteĂŒr NCO habiteur _ BFMGOLDLEM NCO NCO

Il inclut la source Ă  partir de laquelle nous avons rĂ©cupĂ©rĂ© les informations morphologiques. L'ensemble de fichiers en sortie peuvent ĂȘtre consultĂ©s dans FORMES MANQUANTES ANNOTES PAR POS

Et un seul fichier avec la liste de formes qui n'ont pas été trouvées. Vous puvez le trouver dans LISTE DE FORMES NON TROUVEES PREMIER ALIGNEMENT

  • GĂ©nĂ©ration de variants pour les formes qui n'ont pu ĂȘtre alignĂ©s (aucune correspondance dans les ressources)

On génére les variants avec [generate_variants.py] en utilisant la liste de formes qui n'ont pas été trouvées à partir la commande suivante:

-in LISTE_FORMES  -sep \t -out SAVE_TO_PATH

qui retourne:

source_mot variant id
malfaitĂșrs malfaitĂșrs 461
malfaitĂșrs malfaiturs 461
malvesyve malvesyve 462
malvesyve malvesive 462
marsopye marsopye 463
marsopye marsopie 463

Ensuite, on refait l'alignement avec le script précedent ([mode = "variants"]). Pareillement, il retourne les formes annotées et une liste avec les formes qui n'ont pas été trouvées avec cette stratégie. LISTE DE FORMES NON TROUVEES DEUXIEME ALIGNEMENT, FORMES MANQUANTES ANNOTES PAR POS DEUXIEME ALIGNEMENT

  • RequĂȘtes automatiques dans des dictionnaires externes

[request_and.py]

Avec ce script, nous rĂ©cupĂ©rons les entrĂ©es du dictionnaire correspondant au reste des formes manquantes en prĂ©cisant le chemin vers les derniĂšres formes manquantes. Pour Ă©viter les limites de requĂȘte, nous pouvons extraire les entrĂ©es par chunks de 100 formes [from_="0"], [up_to= "500"]. Structure des fichiers en sortie:

form lemma_pos cognates TL: DMF: FEW: Gdf:
chaitivĂ­er chaitivier (s.xii2)__s. ['FEW: 2/i,330a captivus', 'Gdf: 2,38b chaitivier', 'TL: 2,173 chaitivier'] chaitivier captivus chaitivier
chelidonius celidoine (s.xii1/3)__s. ['FEW: 2/i,634a chelidonia', 'DMF: chélidoine'] chélidoine chelidonia
clamĂ­ve clamif (s.xii)__s. ['FEW: 2/i,730a clamare', 'TL: 2,460 clamif', 'DMF: clamif'] clamif clamif clamare


đŸ”Č 3. Recherche et extraction de prĂ©fixes

Description

Recherche de formes prĂ©fixĂ©es dans les formes manquantes Ă  partir d’une liste de prĂ©fixes de dĂ©part. Nous avons sĂ©lectionnĂ© les formes dans les catĂ©gories ADV, ADJ, VER et NOM. Seulement les formes avec une longueur supĂ©rieure Ă  3 caractĂšres (et 3 Ă©galement pour le radical) ont Ă©tĂ© retenues. Pour chaque prĂ©fixe dans la liste, nous avons collectĂ© toutes les formes possibles commençant par ces prĂ©fixes et ensuite, nous avons cherchĂ©, Ă  partir d'une segmentation sur le prĂ©fixe, si le radical est attestĂ© dans le lexique. Par exemple:

[prefixe] sor - [forme trouvé] sorcroissant - [radical attesté] - croissant - [lemme associé] - croissir___750428_
 - [POS] v

📁 Ressources

➖ Instructions pour l'exĂ©cution du code

[find_prefixes.py]

Préiser les fichiers dans:

folder = "enrich_ofrlexdev\\data\\source_data\\"
manques_f = folder + "liste_manques.txt"
ofrlex = folder + "inventaire_ofrlex.tsv"
prefixes = folder + "prefixes.txt"
prefixe word root ofr_root_form ofr_root_lemma ofr_root_pos lemma_def
contre contredeĂŻst deĂŻst deĂŻst dire___751970__1__1 v _
contre contrediroient diroient diroient dire___751970__1__1 v contredire
des deshonnestement honnestement honnestement onestement___9076__1 adv dĂ©shonnĂȘtement
des deshonneur honneur honneur honneur___99999__1 nc déshonneur
re revenons venons venons venir___60461__1__3 v revenir
re revenra venra venra venir___60461__1__3 v revenir

Accéder à la liste de possibles formes préfixées


đŸ”Č 4. Recherche de variants graphiques dans les lemmes OFrLex

Description

RĂ©duire le nombre de lemmes permettrait, d’une part, de rĂ©duire le nombre d’entrĂ©es (ce qui aurait pour effet de rĂ©duire l’ambiguĂŻtĂ© lexicale et reprĂ©senterait une diminution du temps de calcul de l’analyse syntaxique), et, d’autre part, de proposer une meilleure lemmatisation au terme de l’analyse syntaxique avec MetaMOF.

📁 Ressources

➖ Instructions pour l'exĂ©cution du code

[distances_lemma.py]

Fournir le fichier des formes manquantes annotées pour recherches les variants avant l'ajout au lexique, ou les fichiers .md du OFrLex pour identifier les variants présents dans le lexique.

file = 'scripts/manques/fichiers/premier_alignement/v2_conj_manques_annote.tsv'

Il retourne un fichier pour chaque partie du discours dont nous trouvons plusieurs lemmes (e.g. desus (lemme TL) au lieu de dessus (lemme DMF)).

lemme prox_lemme var
aprĂšs_PRE ['apres_PRE']
delez_PRE ['dalez_PRE']
desor_PRE ['desoz_PRE']
dessous_PRE ['dessus_PRE']
desus_PRE ['dessus_PRE']
deçà_PRE ['delà_PRE']
en+le_PRE ['en.le_PRE']
entre_PRE ['estre_PRE']
jusque_PRE ['jesque_PRE']

5. Annotation de formes manquantes en contexte

Nous avons entraĂźnĂ© un modĂšle RNN pour l’annotation en POS et la lemmatisation afin de renseigner les formes manquantes (OFrLex) de maniĂšre contextualisĂ©e dans le corpus Profiterole. Cela permet de renseigner les formes inconnues pour les lexiques utilisĂ©s prĂ©cĂ©demment et, notamment, de les renseigner dans leur contexte d’apparition. Aussi, de comparer les Ă©tiquettes et les lemmes fournis par les ressources lexicales avec ceux appris par le modĂšle.

📁 Ressources et outils

  • NLP Pie: Outil de lemmatisation et d'annotation morphosyntaxique conçu pour les langues historiques et des langues Ă  forte variation.

  • Corpus Profiterole- Tokens de chaque texte: Ils font partie du dĂ©coupage Train/Dev/Test (fichiers utilisĂ©s Ă  l'entraĂźnement, dĂ©velopment et test du modĂšle).

➖ Lemmatisation des textes et alignement des informations morphosyntaxiques

Utiliser le notebook pour charger les textes utilisés et récupérer les prédictions.

On peut sélectionner les donées fournis par défault dans le dictionnaire:

## Download traning/dev/test data
!pip install wget
import wget

urls= {'train_data':'https://sharedocs.huma-num.fr/wl/?id=LVfEryNatUmIOSrcv79qLt7Vh9xQcP5G&fmode=open',
       'dev_data': 'https://sharedocs.huma-num.fr/wl/?id=NP9ubphyOqW1kHf5E6EKdq6F4USxFLC6&fmode=open',
       'test_data': 'https://sharedocs.huma-num.fr/wl/?id=5bNmeXMzMVVOR11huaOx6aiYFVzRsRNf&fmode=open'}

for k, v in urls.items():
  print('Downloading', k)
  wget.download(v)

Ou les télécharger directement à partir scripts/lemmatisation/train-dev-test-data

Pie entraĂźnera deux modĂšles, oĂč un pour les POS (pour chaque texte du corpus) et un pour les lemmes (pour chaque texte du corpus). Nous pouvons les fusionner en utilisant le script merge_lemma_pos_pie.py. Ce script va extraire les formes manquantes annotĂ©s dans les prĂ©dictions que nous pouvons trouver dans scripts/lemmatisation/lemmatisation_manques_Pie.tsv

L'ensemble des fichiers regroupĂ©s (corpus, notebook, modĂšles, prĂ©dictions, rĂ©sultats) peuvent ĂȘtre Ă©galement consultes dans le lien suivant.




About

Tools and ressources to enrich a morphosyntactic lexicon for medieval French

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published