Skip to content

Texte glosé interlinéaire : segmentation en morphèmes et gloses de Leipzig

Glosez des phrases mot à mot dans Potato avec segmentation en morphèmes, contrôles d'alignement de Leipzig et tiers supplémentaires, et exportez en FLExText, Toolbox ou LaTeX gb4e.

Nouveau dans la v2.12.0

Un schéma interlinear_gloss présente une phrase sous forme d'une colonne par mot. Chaque colonne contient le mot (en lecture seule), sa segmentation en morphèmes et sa glose, et la traduction libre figure sur une ligne sous les colonnes. Il convient à la documentation des langues, aux données typologiques et à la vérification de gloses importées depuis FLEx ou Toolbox. Sur un écran étroit, les colonnes passent à la ligne, comme le fait un long exemple à l'impression.

La page vérifie chaque mot selon les Leipzig Glossing Rules (Comrie, Haspelmath et Bickel) pendant que l'annotateur saisit. Terrain linguistique décrit l'aller-retour avec FLEx et Toolbox.

Configuration

yaml
annotation_schemes:
  - annotation_type: interlinear_gloss
    name: igt
    description: Segment each word into morphemes and gloss every morpheme
    source_field: text            # sentence string, or a list of words
    morphemes_field: morphemes    # optional pre-filled segmentation
    gloss_field: glosses          # optional pre-filled glosses
    translation_field: translation
    tiers: [pos, notes]           # optional extra lines per word
    abbreviations: leipzig        # warn on unknown category labels
    language: la                  # BCP 47 tag of the object language
    metalanguage: en              # language of the glosses and translation
    label_requirement:
      required: true
json
{"id": "latin_1", "text": "Puella rosam amat.",
 "morphemes": ["puell-a", "ros-am", "ama-t"],
 "glosses": ["girl-NOM.SG", "rose-ACC.SG", "love-3SG"],
 "translation": "The girl loves the rose.",
 "pos": ["n", "n", "v"]}

Quand source_field contient une chaîne, celle-ci est découpée sur les espaces, et la ponctuation aux bords de chaque mot (., ,, ?, guillemets et parenthèses) est supprimée. Les traits d'union et les = à l'intérieur d'un mot sont conservés. Pour maîtriser exactement les mots, fournissez une liste.

Les champs de préremplissage prennent une liste avec une entrée par mot, ou une chaîne avec une entrée par mot séparée par des espaces. Un tier configuré est prérempli à partir d'un champ de l'item du même nom quand ce champ est une liste. Un mot sans segmentation préremplie commence avec le mot lui-même dans la cellule de segmentation ; l'annotateur ne saisit donc que les frontières.

CléValeur par défautSignification
source_fieldtextChamp de l'item contenant la phrase (chaîne) ou les mots (liste)
morphemes_fieldaucuneChamp de l'item contenant une segmentation par mot
gloss_fieldaucuneChamp de l'item contenant une glose par mot
translation_fieldaucuneChamp de l'item contenant la traduction libre
tiers[]Lignes supplémentaires par mot, comme [pos, notes]. word, morphemes et gloss sont réservés
abbreviationsaucuneleipzig pour la liste standard, une liste de libellés, ou un mapping de libellé vers signification. [leipzig, EVID, AOR] ajoute vos propres libellés aux libellés standard. Sans cette clé, les libellés ne sont pas vérifiés
languageaucuneÉtiquette de langue placée sur les cellules de mot et de segmentation, et écrite dans FLExText
metalanguageaucuneÉtiquette de langue des cellules de glose, de tier et de traduction
show_translationtrueAffiche la ligne de traduction libre
label_requirementaucunerequired: true bloque Next tant que chaque mot n'est pas segmenté, glosé et aligné

Contrôles d'alignement et de libellés

Pour chaque mot, la segmentation et la glose doivent avoir les mêmes frontières - (affixe) et = (clitique) dans le même ordre. ros-am avec rose-ACC.SG est aligné, et rose-ACC-SG a une frontière de trop. vir-um=que avec man-ACC.SG-and a le bon nombre de frontières mais glose le clitique =que comme un affixe ; il est donc signalé lui aussi.

Un mot est signalé comme mal aligné, avec la raison sous sa colonne, quand :

  • les frontières diffèrent en nombre, en nature ou en ordre ;
  • un morphème ou une glose entre deux frontières est vide (ev--ler, house-) ;
  • une cellule contient une espace. Reliez les mots d'une même glose par . (put.in.bag), et séparez les morphèmes par - ou =.

Les infixes entre chevrons (s<um>ulat) sont comptés dans les deux lignes mais ne sont pas appariés par position, car la glose de l'infixe se place à côté de celle du radical plutôt qu'à l'intérieur.

Un mot mal aligné a une bordure rouge, un ≠ devant le mot et aria-invalid sur les deux cellules, et un mot dont une seule des deux lignes est remplie est présenté comme pas encore glosé. Le compteur en haut du widget indique combien de mots sont mal alignés, et quand le schéma est obligatoire, l'un ou l'autre de ces états bloque Next.

Les libellés de catégories grammaticales (mots en capitales et combinaisons personne-nombre comme ACC et 3SG) sont affichés sous la cellule de glose en petites capitales. Avec abbreviations défini, un libellé absent de la liste apparaît comme un avertissement sous le mot, comme "Unknown label: EVID", qui ne bloque pas Next. Le contrôle accepte la personne et le nombre écrits ensemble (3SG), le préfixe N- pour « non- » (NSG, NPST), et Ø.

ToucheAction
Tab, Maj+TabCellule suivante ou précédente : on descend les lignes d'un mot, puis on passe au mot suivant
EntréeMême ligne du mot suivant, ou la traduction depuis le dernier mot
Maj+EntréeMême ligne du mot précédent

Réponse stockée

json
{"words": [{"word": "Puella", "morphemes": "puell-a", "gloss": "girl-NOM.SG",
            "pos": "n", "notes": ""}],
 "translation": "The girl loves the rose."}

Un item arrivé avec une analyse préremplie est enregistré quand l'annotateur appuie sur Next, même si rien n'a été modifié ; un import confirmé est donc stocké comme la réponse de cette personne. Un item sans préremplissage est stocké dès que l'annotateur y saisit quelque chose.

Export

FormatFichiersContenu
flextext<user>.flextextXML interlinéaire FieldWorks, un fichier par annotateur
toolbox<user>.txtFormat standard Toolbox avec des lignes \tx \mb \ge \ps \ft alignées en colonnes
igtigt.txt, igt.texTexte brut aligné et LaTeX gb4e
bash
python -m potato.export --config config.yaml --format igt --output out/

igt.tex contient un environnement exe avec un \ex par réponse stockée, la segmentation et la glose sur une ligne \gll, et la traduction sur \glt. Les libellés de catégories sont écrits sous la forme \textsc{...} en minuscules, et les caractères spéciaux de LaTeX sont échappés. Chargez gb4e dans le préambule, et compilez avec XeLaTeX ou LuaLaTeX pour les écritures autres que latines.

Les mots encore mal alignés sont exportés tels qu'ils sont stockés, et l'export affiche leur nombre. FLExText et Toolbox apparient les gloses aux morphèmes un à un ; dans ces formats, la glose entière d'un mot mal aligné est donc placée sur son premier morphème.

Exemple

bash
python potato/flask_server.py start examples/span/interlinear-gloss/config.yaml -p 8000

L'exemple contient quatre phrases latines glosées à titre d'illustration. L'une est complète, une autre est vide, une autre a une segmentation sans gloses, et la dernière comporte une erreur volontaire, le clitique -que glosé avec -.

Pour aller plus loin

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