Outils pour utilisateurs

Outils du site


public:lexique_fro

Création et mise à disposition d'un lexique d'ancien français

Étapes :

  1. produire une première version de frolex avec le lexique de la BFM + AFRLEX
  2. mettre en ligne frolex-1.0.tsv sous CC by-nc-sa v1.0
  3. inviter à améliorer frolex avec les lemmes du DMF
  4. mettre en ligne frolex-2.0.tsv sous CC by-nc-sa
  5. ajouter de nouveau lemmes à frolex-2.0.tsv
  6. mettre en ligne frolex-3.0.tsv sous CC by-nc-sa

Sources

  • lexique afrlex (A. Stein) transformé en TSV par AL
    • smb://ensldfs/services/Laboratoires/labo_ana_corpus/Projets/BFM/Projets/PaLaFra/lemmatisation_fro/afrlex.tsv
      • colonnes
        form	msd	lemma	lemma-source
        Gastebois	NPR	Gastebois	T
        Gasteviande	NPR	Gastevïande	Td
        Gastevïande	NPR	Gastevïande	T
        Hurtebise	NOM	Hurtebise	T
    • procédure de transformation décrite dans smb://ensldfs/services/Laboratoires/labo_ana_corpus/Projets/BFM/Projets/PaLaFra/lemmatisation_fro/TODO
  • BFM (corpus BFM2016LEX)
    • sharedocs.huma-num.fr/dav.php/@Shares/(948) Cactus/(3777) Projets/BFM/Corpus/BFM2016LEX.txm
    • (copie) smb://ensldfs.ens-lyon.fr/services/Laboratoires/labo_ana_corpus/Projets/BFM/Projets/PaLaFra/chantiers/corpus/BFM2016LEX.txm
  • DMF
    • smb://ensldfs.ens-lyon.fr/services/Laboratoires/labo_ana_corpus/Projets/BFM/Projets/PaLaFra/chantiers/lexique
  • Tickets TXM (cible “Palafra”)

Conversion(dic, colonne_départ, colonne_arrivée, table_conv, gestionInconnus, oneMatch)

Algorithme :

  • on utilise une table de correspondance comme Tableau de correspondance NCA (AFRLEX) --> ctx9-nca
  • s'il n'existe pas de règle de conversion pour une étiquette et gestionInconnus == 'abandon'
    • écrire dans colonne_arrivée : ERREUR(colonne_départ)
    • écrire toutes les étiquettes problématiques dans un fichier dict_colonne_départ_conversion_errors.txt
    • afficher les 10 premières erreurs différentes dans la console
    • retourner un code d'abandon si il y a des erreurs
  • s'il n'existe pas de règle de conversion pour une étiquette et gestionInconnus == 'copier'
    • écrire dans colonne_arrivée : colonne_départ
  • s'il n'existe pas de règle de conversion pour une étiquette et gestionInconnus == 'supprimer'
    • passer à la ligne suivante
  • si colonne_départ == colonne_arrivée, alors on met à jour “colonne_départ”
  • si oneMatch == true, passer à la ligne suivante dès le premier match de règle de conversion
  • Traitement particulier : il y a des cas de split, c'est-à-dire de démultiplication d'entrées lors de la conversion (signalés par “|”) :
    • 1) ADJ:card –> ADJcar|DETcar|PROcar
      • pour une ligne de afrlex avec ADJ:card, on crée 3 lignes dans frolex identiques sauf pour la colonne cattex_conv qui prendra les valeurs ADJcar, DETcar et PROcar respectivement
    • 2) ADJ:ord –> ADJord|PROord, même traitement
    • 3) PROCON –> PROrel|CONsub, même traitement

Procédure

Créer AFRLEX

Créer BFMGOLDLEX, BFMLEX et CLBFMLEX

Créer DMFLEX

  1. Créer le dictionnaire DMFLEX avec 'dmf.tsv' qui possède les colonnes : Construire le DMF
    • form
    • category
    • lemma
    • lemma_src
    • F_dmf
  2. ajouter une colonne msd_cattex_conv2 résultat de la transformation msd_cattex_conv ← conv(category, “dmf –> ctx9-dmf”)

Créer CLDMF

  1. Créer le dictionnaire CLDMF avec 'dmf.tsv' qui possède les colonnes : Construire le DMF

Créer CLFROLEX

Ce dictionnaire contient les colonnes suivantes dans cet ordre :

  1. msd_cattex_conv2
  2. lemma
  3. lemma_src : valeurs(DMF, LGeRM, DECT, TL, AND, GDF, BFM, PKAS, LFA, VFM, PVR, LMG)
  4. DMF
  5. LGeRM
  6. DECT
  7. TL
  8. AND
  9. GDF
  10. BFM
  11. PKAS
  12. LFA
  13. VFM
  14. PVR
  15. LMG
  16. DEAF
  17. FEW
  18. GDC
  19. HUG
  20. TLF

Fusionner les dictionnaires CLDMFLEX, CLAFRLEX et CLBFMLEX

  • pour chaque entrée, parcourir toutes les colonnes corresp_.*
  • pour chaque valeur de corresp_* rechercher les autres entrées ayant la même valeur de msd_cattex_conv2 et la même corresp
    • pour les doublons détectés, fusionner les entrées :
      • pour le champ “lemma_src”, prendre la valeur selon l'ordre de priorité :
        • DMF > LGeRM > DECT > TL > AND > GDF > BFM > PKAS > LFA > VFM > PVR > LMG
      • pour le champ “lemma”, prendre la valeur de l'entrée dont “lemma_src” a été sélectionné
      • pour les autres champs
        • si les valeurs sont identiques, mettre cette valeur
        • si l'une des valeur est vide, mettre la valeur non vide
        • si les valeurs sont différentes, les concaténer avec un “|” comme séparateur

Vérifications

  • Doit contenir les colonnes DMF, LGeRM, DECT, TL, GDF, BFM, PKAS, LFA > VFM > PVR > LMG
  • lemma_src contient que les valeurs(DMF, LGeRM, DEC, TL, AND, GDF, BFM, PKAS, LFA, VFM, PVR, LMG)
  • aucune ligne sans corresp
  • aucune ligne dont msd_cattex_conv2+lemma+lemma_src = msd_cattex_conv2+lemma+lemma_src

Créer FROLEX-BULK

BULK

Ce dictionnaire a les colonnes suivantes

  • form
  • F_bfm
  • F_dmf
  • msd_afrlex
  • msd_bfm
  • msd_dmf
  • msd_cattex_conv2
  • lemma
  • lemma_src
  • comment
  1. join(BFMLEX, AFRLEX) → FROLEX1
    • jointure sur 'form' et 'msd_cattex_conv1'
  2. join(FROLEX1, DMFLEX)
    • les entrées du DMFLEX sont ajoutées à celles de FROLEX1, avec les champs suivants :
      • form
      • F_dmf
      • msd_dmf
      • msd_cattex_conv2
      • lemma
      • lemma_src = DMF
  3. suppression des entrées dont msd_cattex_conv2 est 'OUT' OU '<no_pos>' inutiles
    • pour chaque entrée ayant msd_cattex_conv2!="OUT|<no_pos>", supprimer toute entrée de même 'form' ayant msd_cattex_conv2="OUT|<no_pos>" (doublon inutile)
  4. Normalisation des colonnes 'lemma' et 'lemma_src', pour chaque ligne on modifie les valeurs de 'lemma' et 'lemma_src' avec le couple de 'lemma_ref' et 'lemma_ref_src' tel que la ligne CLFROLEX matche le test
    SELECT lemma_ref,lemma_ref_src FROM CLFROLEX WHERE $lemma_src=$lemma AND msd_ref=$msd

    par exemple la ligne

    form=Je msd=pro lemma=je lemma_src=BFM

    donne

    SELECT lemma_ref,lemma_ref_src FROM CLFROLEX WHERE BFM=je AND msd_ref=pro
    par construction CLFROLEX ne doit contenir qu'une seule ligne qui matche le test, sinon afficher un WARNING
  5. Supprimer les doublons msd_cattex_conv2+lemma+lemma_src
    SELECT DISTINCT * FROM frolex
  6. jointure des lignes sur les propriétés form, msd_cattex_conv2, lemma et lemma_src
    • F_bfm : additionner
    • F_dfm : additionner
    • msd_cattex_conv1 et autres colonnes : concaténer
  7. trier le dictionnaire sur 'form' avec un Collator et la locale 'fr_fr'
  8. exporter en frolex-bulk.tsv avec les colonnes : form, F_bfm, msd_afrlex, msd_cattex_bfm, msd_cattex_conv, msd_cattex_conv2, msd_dmf, lemma, lemma_src, comment

Créer FROLEX

Exporter FROLEX-BULK en frolex.tsv avec les colonnes : form, msd_cattex_conv2, lemma

Recette

  1. installer TXM 0.7.8 et TreeTagger
  2. vérifier et éventuellement modifier les options de lancement de TXM
    1. fichier [USERHOME]/TXM/.txm/TXM.ini
      1. -Xms1024m
      2. -Xmx2048m
  3. mettre à jour TXM avec l'update site Palafra :
    1. ajouter le site de mise à jour spécifique de Palafra : http://textometrie.ens-lyon.fr/dist/palafra en utilisant la commande “Ajouter un site de mise à jour” disponible à partir de la page de préférence “TXM/Avancé”
    2. lancer la mise à jour (on récupère les extensions TreeTagger et Dictionary en passant)
  4. Charger le corpus BFM2016LEX : Sharedocs…/Cactus/Projets/BFM/Corpus
  5. Récupérer les fichiers de conversion et les lexiques depuis : Sharedocs…/Cactus/Projets/Palafra/recettes/v4
  6. Ouvrir la vue “Macro” (Menu Affichage > Vues)
  7. Dans la vue Macro, ouvrir le dossier “frolex” et lancer la macro “CreateFrolex” (double clic)
  8. Le résultat de la recette sera dans le dossier “results” du dossier indiqué précédemment

retour recette AL 2017-09-20

La macro s'exécute jusqu'au bout (avec TXM 0.7.8 du 2017-08-29).

Le fichier clfrolex.tsv produit n'est pas conforme à la spec :

  1. contient une colonne “DMF” (inutile)
  2. les lignes ne sont pas correctement fusionnées. On retrouve par exemple deux lignes pour NOMcom bénéfice (source DMF) ou APD amphibolique (sources DMF et GDF)

Annexes

Correspondance entre les colonnes de afrlex-tab, de tmpDict et de frolex

frolex	afrlex.tsv	tmpDict
form	form	word
F_bfm	ø	F_bfm
msd_afrlex	msd	ø
msd_cattex_bfm	ø	pos
msd_cattex_conv	conv(msd_afrlex, NCA (AFRLEX) -> ctx9-nca)	conv(pos, Cattex2009min -> ctx9-nca)
lemma	lemma	ø
lemma_src	lemma_source	ø
comment	ø	ø

point f)

  • si possible, pour chaque forme, la date de composition du texte de la première et de la dernière occurrence chronologique (remis à plus tard)
    • apparition (date_compo du text de l'occurrence la plus ancienne)
    • disparition (date_compo du text de l'occurrence la plus récente)
      SH : créer ces deux informations dans un lexique ressemble à une variante de l'outil Références avec l'implémentation de la notion d'intervalle de temps en plus. Je propose de réaliser l'ajout de ces deux informations dans une étape ultérieure pour accélérer la mise en ligne.
      AL : D'accord

point g)

(utiliser apparition la plus ancienne et disparition la plus récente)

Algo alternatif de jointure des lemmes de frolex

  1. jointure des lemmes Non implémentée au 16/06/2017 ?
    • pour chaque entrée A ayant lemma_src == DMF
      • supprimer toute autre entrée E si
        • A.form == E.form
        • et A.msd_cattex_conv2 == E.msd_cattex_conv2
      • et sélectionner lemma et lemma_src selon
        • ignorer les lemmes “<no_lemma>”
        • ignorer les sources de lemme “”
[lemma=A&lemma_src=DMF ; lemma=A1&lemma_src=GDF ; lemma=A&lemma_src=DECT]
[lemma=A&lemma_src=BFM ; lemma=A1&lemma_src=GDF ; lemma=A&lemma_src=DECT]
[lemma=A&lemma_src=BFM]
  • retirer les couples E.lemma_src+E.lemma si on trouve des entrées de CLFROLEX qui match l'un des tests suivant :
    • ou E.lemma_src == DMF et E.lemma == CLFROLEX.DMF où CRFROLEX.lemma == A.lemma
    • ou E.lemma_src == TL et E.lemma == CLFROLEX.TL où CRFROLEX.lemma == A.lemma
    • ou E.lemma_src == DECT et E.lemma == CLFROLEX.DECT où CRFROLEX.lemma == A.lemma
    • ou E.lemma_src == GDF et E.lemma == CLFROLEX.GDF où CRFROLEX.lemma == A.lemma
    • ou E.lemma_src == BFM et E.lemma == CLFROLEX.BFM où CRFROLEX.lemma == A.lemma
    • ou E.lemma_src == AND et E.lemma == CLFROLEX.AND où CRFROLEX.lemma == A.lemma
    • ou E.lemma_src == PKAS et E.lemma == CLFROLEX.PKAS où CRFROLEX.lemma == A.lemma
    • ou E.lemma_src == LFA et E.lemma == CLFROLEX.LFA où CRFROLEX.lemma == A.lemma
    • ou E.lemma_src == VFM et E.lemma == CLFROLEX.VFM où CRFROLEX.lemma == A.lemma
    • ou E.lemma_src == PVR et E.lemma == CLFROLEX.PVR où CRFROLEX.lemma == A.lemma
    • ou E.lemma_src == LMG et E.lemma == CLFROLEX.LMG où CRFROLEX.lemma == A.lemma
  • mettre à jour les champs F_bfm, msd_afrlex, msd_bfm à partir de l'enregistrement supprimé
  • F_bfm : additionner
  • msd_afrlex et msd_bfm :
    • si vide : ajouter
    • si non vide : concaténer avec “|”

Implémentation

Ce chantier mobilise le développement du nouveau composant Dictionnaire de TXM.

Mise en ligne

Références

  • Stein, Achim (2003): “Étiquetage morphologique et lemmatisation de textes d'ancien français” - in Kunstmann (2003), 273-284. http://www.citeulike.org/user/mxp/article/7744085.
  • Glessgen, M D; Stein, A (2005). Resources and tools for analyzing Old French texts. In: Pusch, C D; Kabatek, J; Raible, W. Romanistische Korpuslinguistik II: Korpora und diachrone Sprachwissenschaft / Romance Corpus Linguistics II: Corpora and Diachronic Linguistics. Tübingen, 135-145. ISBN 3-8233-6148-1 <http://www.zora.uzh.ch/33587/1/2005_stein-glessgen-colours.pdf>
  • Claire Serp, Emmanuel Cazal, Anne Laurent, Mathieu Roche. TERVOTIQ : Un système de vote pour l'extraction de la terminologie d'un corpus en français médiéval. JADT'08: Journées internationales d'Analyse statistique des Données Textuelles, pp.1069-1080, 2008. <lirmm-00321397>

Avancement du projet

2016 06 22

MD

J'ai pu réaliser un modèle treetagger fro2.par qui lemmatise en partie BFMGOLD.

La recette est entièrement re-jouable en utilisant :

Répertoires de travail

Fichiers lexiques : lemmatisation_fro

Tableaux de conversions : etiquetage

Autorisations

Contenu du lexique

  • frolex V0 est sorti le 27/01/2016, voir labo_ana_corpus/Projets/BFM/Projets/PaLaFra/lemmatisation_fro
    • certaines lignes restent dupliquées
public/lexique_fro.txt · Dernière modification : 07/10/2019 17:31 de alexei.lavrentev@ens-lyon.fr