Outils pour utilisateurs

Outils du site


public:palafra_lemmatisation_fro:lemmatisation_spec

Spécification de la lemmatisation en ancien français

Objectif

  1. Apprendre un modèle linguistique d'ancien français (pos)
  2. Projeter un modèle linguistique d'ancien français (pos)

Méthode

On souhaite utiliser dans un premier temps TreeTagger en s'appuyant sur l'infrastructure existante d'annotation de TXM (accessible seulement depuis l'import) :

  • Faire de l'apprentissage depuis TXM
  • Projeter depuis TXM (hors ce qui se fait déjà à l'import)

Ce développement se fait hors tokenisation particulière (il dépend de la tokenisation réalisée pour les corpus servant à la création du modèle et à son application) : ceci sera fait dans une seconde étape (si nécessaire). La cohérence de la tokenisation est vérifiée au niveau du corpus et du lexique d'apprentissage (cf section 'vérifications de la tokenisation').

Solution

Manipulation de dictionnaires

Créer un plugin “Dictionnaire” qui implémente les commandes de base de manipulation de dictionnaire : https://groupes.renater.fr/wiki/txm-info/public/specs_dictionnaire

vérifications de la tokenisation

Le corpus d'apprentissage, le lexique et les textes à lemmatiser doivent partager la même Tokenisation. Il faut pouvoir :

  • comparer : (ajouter “diff” à l'API)
    • le lexique du corpus d'apprentissage et le lexique “frolex”
    • le lexique du corpus à lemmatiser et le lexique “frolex”
  • faire des vérifications de certains mots des lexiques : apostrophes, tirets, etc. (ajouter “recherche regexp” à l'API)

Vérification à faire :

  • Dans le lexique externe et dans les lexiques des corpus tokenisés, il faut chercher les unités contenant :
    • des apostrophes (' et ’)
    • des trait-d'unions (-)
    • des espaces blancs (par exemple “a priori”)
  • Si le lexique externe ne contient que des apostrophes droits, il faut normaliser les apostrophes du corpus avant de procéder à la comparaison
  • Il faut produire une liste de tokens du corpus contenant ces caractères et n'ayant pas de correspondance dans le lexique externe

Lemmatisation automatique

Créer un plugin “TreeTagger” qui implémente les commandes d'apprentissage et de projection d'un modèle. https://groupes.renater.fr/wiki/txm-info/public/specs_plugin_treetagger

implémenter l'apprentissage

Dans le plugin “TreeTagger”, ajouter la commande “Apprentissage”/“Learn/Train”. Arguments :

  • corpus : le corpus d'apprentissage : un corpus binaire (ou un sous corpus de texte) de TXM (sélectionné dans la vue corpus)
  • lexique : le lexique : un fichier TSV compatible avec TreeTagger
  • options : une chaine d'options TreeTagger pour l'apprentissage
  • model : le chemin du modèle à créer (.par)

La commande :

  1. prépare le fichier TXT d'apprentissage de TreeTagger (format form/pos) à partir des fichiers XML-TXM du corpus binaire qui correspondent au corpus d'apprentissage
  2. on appelle TreeTagger avec les paramètres précédents dans un fichier <model>.par

implémenter la lemmatisation

Dans le plugin “TreeTagger” ajouter la commande “Appliquer” avec comme arguments :

  • corpus : le corpus binaire à annoter (sélectionné dans la vue Corpus)
  • model : le chemin du modèle (.par)
  • properties : noms des propriétés à ajouter/modifier ('fropos,frolemma')
  • options: les options TreeTagger

La commande :

  1. Prépare les fichiers sources pour TreeTagger à partir des fichiers XML-TXM du corpus
  2. appelle TreeTagger
  3. injecte les nouvelles valeurs de propriété
  4. met à jour les index CQP et les éditions du corpus

Tickets et cibles réalisant les solutions

Recettes

V1

  1. installer TXM 0.7.7 et TreeTagger
  2. mettre à jour TXM en DEV avec l'updatesite 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ée”
    2. lancer la mise à jour (on récupère les extensions TreeTagger et Dictionary en passant)
  3. préparer le lexique 'frolex' (frolex → lexique TreeTagger)
    1. créer le dictionnaire vide 'frolex'
    2. importer dans ce dictionnaire le contenu du fichier frolex.tsv
    3. lui appliquer la commande JoinLines(form, 'msd_cattex_conv,lemma', 'frolex-tt.tsv', 'msd_cattex_conv', [“<nopos>”, “”])
      • (Le 3e paramètre est la propriété de de filtrage à utiliser pour le 4e paramètre, le 4e paramètre est une liste de filtre expression régulière des valeurs d'entrée à ignorer)
    4. Exporter le résultat dans un fichier frolex-tt.tsv
  4. importer BFMGOLD comprenant les textes avec cattex entièrement vérifié (propriété w@type) avec le module XTZ :
    • répertoire : ensldfs BFMGOLD
    • nom : BFMGOLD
    • paramètres :
      • ne pas tokenizer
      • <w> est la balise de mots
      • ne pas annoter
      • plans textuels
        • hors texte à éditer : front,head,note,speaker,foreign
        • hors texte : teiHeader,facsimile
  5. sélectionner le corpus BFMGOLD
  6. lancer le Recodage de la propriété type sur le corpus BFMGOLD (dégradation de cattex) :
    1. Sélectionner le corpus, puis Corpus > Recoder le corpus
    2. table de conversion : conv ctx9 ctx9-nca.tsv
    3. entrée : type
    4. sortie : pos
  7. diagnostic des tokens
    1. faire l'index de la propriété word du corpus BFMGOLD
    2. créer un dictionnaire vide BFM-form à partir du contenu de l'index word créé
    3. lancer la commande Diff(frolex, nom de la colone de diff de frolex, BFM-form, nom de la colonne de diff de BFM-form, nom du fichier de sortie .tsv)
      → lister dans le fichier de sortie et compter les valeurs de BFM-form n'ayant pas de correspondance dans frolex (sort|uniq -c)
    4. vérifier les points sensibles suivants entre frolex et BFM-form en filtrant les lignes à l'aide de la commande “grep” en ligne commande sur le fichier de sortie :
      • regexp : “['’ \-]”
        • des apostrophes (' et ’)
        • des trait-d'unions (-)
        • des espaces blancs (par exemple “a priori”)
  8. créer le sous-corpus Train des séquences de mots à utiliser pour l'apprentissage
    1. tout ce qui n'est pas dans speaker, head avec la requête [!speaker & !head]
  9. sélectionner le sous-corpus Train
  10. lancer la commande “TreeTagger > Train” du menu principal et remplir le formulaire
    • nom du modèle : fro2.par
    • propriété pos à utiliser : w@pos
    • étiquette des marques de fin de phrase : PONfrt
    • propriété lemma à utiliser : frolemma
    • lexique : sélectionner le lexique frolex-tt.tsv
      → génère modèle 'fro2.par'
  11. lancer la commande “TreeTagger > Apply” du menu principal et renseigner les paramètres :
    • sélectionner le modèle fro2.par
    • propriété pos à créer/remplacer : fro2pos
    • propriété lemma à créer/remplacer : fro2lemma
      → le corpus est mis à jour avec les annotations
  12. faire 2 index sur le corpus avec les paramètres suivants :
    • requête : [fropos != fro2pos]
    • requête : [pos != fro2pos]

notes

- commande Recodage de corpus

  1. choisir l'opération :
    1. conversion prop
      1. paramètre : choisir la table de conversion (fichier TSV)
      2. nom de la propriété d'entrée
      3. nom de la propriété de sortie
    2. toLowerCase prop
      1. nom de la propriété d'entrée
      2. nom de la propriété de sortie
    3. split prop par regexp
      1. regexp pour éclater : e.g. (…)(.*)
      2. nom de la propriété d'entrée
      3. noms des propriétés à créer pour recevoir les portions : cattex-main,cattex-sub
    4. merge prop par regexp
      1. noms des propriétés à fusionner : cattex-main,cattex-sub
      2. nom de la propriété de sortie
    5. split line par regexp
      1. à définir
    6. merge line par regexp
      1. à définir

- extension Dictionary

  1. commande JoinLines :
    1. nom colonne de jointure : eg. 'form'
    2. noms des colonnes de projection : eg. 'fropos,lemma'
    3. fichier de sortie : eg. 'frolex-tt.tsv'
public/palafra_lemmatisation_fro/lemmatisation_spec.txt · Dernière modification: 2016/11/19 12:45 par alexei.lavrentev@ens-lyon.fr