Skip to content

Terrain linguistique dans Potato : gloser avec FLEx, Toolbox, Praat et ELAN

Importez des textes FLEx ou Toolbox dans Potato, vérifiez les gloses interlinéaires selon les règles de Leipzig, et exportez en FLExText, Toolbox ou LaTeX ; ainsi que des tiers TextGrid et ELAN.

Potato 2.12.0 importe des textes interlinéaires depuis FieldWorks Language Explorer (FLEx) et Toolbox, permet aux annotateurs de vérifier chaque phrase dans un schéma interlinear_gloss qui contrôle les règles d'alignement de Leipzig, et exporte les gloses corrigées dans le même format. Les fichiers Praat TextGrid et ELAN s'importent de la même façon, sous forme de tiers alignés dans le temps.

L'analyse se trouve généralement déjà dans FLEx ou Toolbox, et le travail consiste à la vérifier et à la corriger, souvent avec plusieurs personnes qui relisent des textes différents. Potato ajoute l'étape de relecture : l'attribution des textes aux relecteurs, un contrôle d'alignement sur chaque mot, et la trace de qui a confirmé chaque phrase.

Importer des textes FLEx ou Toolbox

bash
# A FLEx interlinear export (FLExText)
potato import -i stories.flextext -o glossing-project/
 
# A Toolbox or Shoebox text database
potato import -i texts.txt -f toolbox -o glossing-project/

-i peut aussi désigner un répertoire de fichiers .flextext, ou de fichiers Toolbox (.txt, .sfm, .db, .tbx, .toolbox). Le format est détecté à partir du contenu : un fichier FLExText contient des éléments <interlinear-text>, et un fichier Toolbox contient des enregistrements \ref avec une ligne de texte et une ligne de morphèmes ou de gloses. -f flextext ou -f toolbox le choisit explicitement.

Un fichier FLExText illisible est écarté avec la raison : il est binaire ou n'est pas du texte UTF-8, ce n'est pas du XML bien formé, ou il définit des entités XML, ce que les fichiers téléversés n'ont pas le droit de faire.

Chaque phrase FLEx ou enregistrement Toolbox devient un item. L'analyse existante est écrite dans les champs propres de l'item (words, morphemes, glosses, translation, et pos quand la source comporte des parties du discours), et le schéma généré les lit comme point de départ. Rien ne compte comme la réponse d'une personne tant qu'un annotateur n'a pas appuyé sur Next ou modifié l'item ; un export effectué avant la relecture ne contient donc que les phrases que quelqu'un a vérifiées.

FLExTextPotato
Titre de interlinear-textChamp text_title, réutilisé à l'export
paragraph, segnum de la phraseChamps paragraph, phrase
txt du motUn mot. Les mots punct restent dans le texte de la phrase mais ne sont pas glosés
txt (ou cf) et type du morpheLa segmentation, avec - ou = tirés des marques de la forme elle-même ou de son type
gls du morpheLa glose de ce morphème, les espaces étant remplacées par .
pos du mot, ou msa du radicalLe tier pos
gls de la phraseLa traduction libre
language de la langue vernaculaire et de la langue d'analyseLes language et metalanguage du schéma

Les enregistrements Toolbox commencent à \ref, et les lignes interlinéaires sont lues par colonnes, telles que Toolbox les écrit. Les fichiers modifiés à la main ne sont souvent pas alignés ; deux lectures par ordre sont donc essayées d'abord : les morphèmes regroupés en mots d'après leurs propres marques, et les gloses appariées aux morphèmes dans l'ordre. L'importateur lit \tx ou \t pour le texte, \mb ou \m pour les morphèmes, \ge ou \g pour la glose, \ps ou \p pour la partie du discours, et \ft ou \f pour la traduction libre. Les autres marqueurs d'un enregistrement, comme \nt, sont conservés dans le champ sfm_extra de l'item et réécrits à l'export.

Vérifier les gloses

bash
python potato/flask_server.py start glossing-project/config.yaml -p 8000

Les annotateurs voient chaque phrase avec l'analyse importée en place. Tout mot dont la segmentation et la glose ne s'alignent pas est signalé à l'ouverture de la page ; les erreurs déjà présentes dans la source apparaissent donc dès la première relecture. Texte glosé interlinéaire liste les contrôles et les commandes clavier.

Les contrôles suivent les Leipzig Glossing Rules de Bernard Comrie, Martin Haspelmath et Balthasar Bickel :

  • La ligne d'exemple et la ligne de glose sont alignées mot à mot.
  • À l'intérieur d'un mot, - sépare les affixes et = sépare les clitiques, et la glose comporte les mêmes séparateurs aux mêmes endroits, de sorte que morphèmes et gloses peuvent être appariés par comptage.
  • Quand un morphème correspond à plusieurs significations, celles-ci sont reliées par un point : NOM.SG, put.in.bag. Un point n'est pas une frontière et n'est pas compté.
  • La personne et le nombre peuvent être écrits ensemble sans point, comme dans 3SG.
  • Les catégories grammaticales sont des abréviations en capitales, imprimées en petites capitales.
  • Un infixe est encadré de chevrons dans les deux lignes, et sa glose se place à côté de celle du radical.

Exporter vers FLEx, Toolbox ou LaTeX

bash
python -m potato.export --config glossing-project/config.yaml --format flextext --output out/
python -m potato.export --config glossing-project/config.yaml --format toolbox --output out/
python -m potato.export --config glossing-project/config.yaml --format igt --output out/
  • flextext écrit <annotator>.flextext, un fichier par annotateur, regroupé selon les textes et les paragraphes enregistrés à l'import. Les types de morphes sont déduits des frontières : le premier morphème doté d'une glose en minuscules (lexicale) est le radical, les morphèmes qui le précèdent sont des préfixes ou des proclitiques, et ceux qui le suivent des suffixes ou des enclitiques.
  • toolbox écrit <annotator>.txt avec des lignes alignées en colonnes et les valeurs \ref d'origine.
  • igt écrit igt.txt, avec trois lignes alignées et la traduction pour chaque exemple, et igt.tex pour le paquet LaTeX gb4e.

Réimporter un fichier exporté redonne les mêmes mots, segmentations, gloses, traductions et parties du discours. Ce qui ne survit pas à l'aller-retour :

  • Les GUID FLEx et les liens vers le lexique, car l'export n'a pas de lexique.
  • Les mots de ponctuation FLEx, qui restent dans le texte de la phrase de l'item mais ne sont pas réécrits comme mots punct.
  • Le type de morphe d'un morphème qui n'est ni le radical ni voisin d'une frontière marquée, comme une deuxième racine dans un composé.
  • Les tiers autres que pos dans FLExText. Dans Toolbox, ils sont écrits sous forme de lignes supplémentaires portant le nom du tier.

TextGrids Praat et fichiers ELAN

bash
potato import -i recordings/ -o my-project

recordings/ contient des fichiers .TextGrid ou .eaf, chacun accompagné d'un fichier audio ou vidéo du même nom. Chaque fichier devient un item dont le média est copié dans media/, chaque tier devient un tier d'un schéma tiered_annotation unique, et chaque intervalle non vide devient un segment que les annotateurs peuvent corriger. Un tier comptant au plus 30 valeurs distinctes, comme des phones ou des codes de locuteurs, les reçoit comme étiquettes. Les exportateurs textgrid et eaf réécrivent les tiers corrigés. Importer des projets donne les détails.

Pour aller plus loin

Pour les détails d'implémentation, consultez la documentation source.