Skip to content

Texto glosado interlineal: segmentación morfológica y glosas de Leipzig

Glosa oraciones palabra por palabra en Potato con segmentación morfológica, comprobaciones de alineación de Leipzig y niveles adicionales, y exporta FLExText, Toolbox o LaTeX de gb4e.

Nuevo en v2.12.0

Un esquema interlinear_gloss muestra una oración como una columna por palabra. Cada columna tiene la palabra (de solo lectura), su segmentación en morfemas y su glosa, y la traducción libre va en una línea bajo las columnas. Es adecuado para la documentación lingüística, los datos tipológicos y la revisión de glosas importadas de FLEx o Toolbox. En una pantalla estrecha, las columnas pasan a líneas siguientes, como ocurre con un ejemplo largo en un texto impreso.

La página comprueba cada palabra según las Reglas de glosado de Leipzig (Comrie, Haspelmath y Bickel) mientras el anotador escribe. Trabajo de campo lingüístico explica el viaje de ida y vuelta con FLEx y Toolbox.

Configuración

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"]}

Cuando source_field contiene una cadena, se divide por los espacios, y se elimina la puntuación de los bordes de cada palabra (., ,, ?, comillas y corchetes). Los guiones y = dentro de una palabra se conservan. Para controlar exactamente las palabras, da una lista.

Los campos de prerrelleno admiten una lista con una entrada por palabra, o una cadena con una entrada por palabra separada por espacios. Un nivel configurado se rellena previamente desde un campo del ítem con el mismo nombre cuando ese campo es una lista. Una palabra sin segmentación previa empieza con la propia palabra en la celda de segmentación, así que el anotador solo escribe los límites.

ClaveValor por defectoSignificado
source_fieldtextCampo del ítem con la oración (cadena) o las palabras (lista)
morphemes_fieldningunoCampo del ítem con una segmentación por palabra
gloss_fieldningunoCampo del ítem con una glosa por palabra
translation_fieldningunoCampo del ítem con la traducción libre
tiers[]Líneas adicionales por palabra, como [pos, notes]. word, morphemes y gloss están reservados
abbreviationsningunoleipzig para la lista estándar, una lista de etiquetas o un mapeo de etiqueta a significado. [leipzig, EVID, AOR] añade tus propias etiquetas a las estándar. Sin esta opción, las etiquetas no se comprueban
languageningunoEtiqueta de idioma que se pone en las celdas de palabra y de segmentación, y que se escribe en FLExText
metalanguageningunoEtiqueta de idioma para las celdas de glosa, de nivel y de traducción
show_translationtrueMuestra la línea de traducción libre
label_requirementningunorequired: true bloquea Next hasta que todas las palabras están segmentadas, glosadas y alineadas

Comprobaciones de alineación y de etiquetas

En cada palabra, la segmentación y la glosa tienen que tener los mismos límites - (afijo) y = (clítico) en el mismo orden. ros-am con rose-ACC.SG está alineado, y rose-ACC-SG tiene un límite de más. vir-um=que con man-ACC.SG-and tiene el número correcto de límites, pero glosa el clítico =que como un afijo, así que también se marca.

Una palabra se marca como mal alineada, con el motivo bajo su columna, cuando:

  • los límites difieren en número, tipo u orden;
  • un morfema o una glosa entre dos límites está vacío (ev--ler, house-);
  • una celda contiene un espacio. Une las palabras de una glosa con . (put.in.bag), y separa los morfemas con - o =.

Los infijos entre corchetes angulares (s<um>ulat) se cuentan en ambas líneas, pero no se emparejan por posición, porque la glosa del infijo va junto a la glosa de la raíz y no dentro de ella.

Una palabra mal alineada tiene un borde rojo, un ≠ delante de la palabra y aria-invalid en ambas celdas, y una palabra con solo una de las dos líneas rellenada se muestra como aún no glosada. El recuento en la parte superior del widget indica cuántas palabras están mal alineadas, y cuando el esquema es obligatorio, cualquiera de los dos estados bloquea Next.

Las etiquetas de categorías gramaticales (palabras en mayúsculas y combinaciones de persona y número como ACC y 3SG) se muestran bajo la celda de la glosa en versalitas. Con abbreviations definido, una etiqueta que no está en la lista aparece como advertencia bajo la palabra, como "Unknown label: EVID", que no bloquea Next. La comprobación acepta la persona y el número escritos juntos (3SG), el prefijo N- para "no-" (NSG, NPST) y Ø.

TeclaAcción
Tab, Shift+TabCelda siguiente o anterior: baja por las líneas de una palabra y después pasa a la palabra siguiente
EnterLa misma línea de la palabra siguiente, o la traducción desde la última palabra
Shift+EnterLa misma línea de la palabra anterior

Respuesta guardada

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

Un ítem que llegó con un análisis previo se guarda cuando el anotador pulsa Next, aunque no se haya editado nada, así que una importación confirmada se guarda como la respuesta de esa persona. Un ítem sin prerrelleno se guarda en cuanto el anotador escribe en él.

Exportación

FormatoArchivosContenido
flextext<user>.flextextXML interlineal de FieldWorks, un archivo por anotador
toolbox<user>.txtFormato estándar de Toolbox con líneas \tx \mb \ge \ps \ft alineadas por columnas
igtigt.txt, igt.texTexto plano alineado y LaTeX de gb4e
bash
python -m potato.export --config config.yaml --format igt --output out/

igt.tex contiene un entorno exe con un \ex por respuesta guardada, la segmentación y la glosa en una línea \gll y la traducción en \glt. Las etiquetas de categoría se escriben como \textsc{...} en minúsculas, y los caracteres especiales de LaTeX se escapan. Carga gb4e en el preámbulo, y compila con XeLaTeX o LuaLaTeX para escrituras distintas de la latina.

Las palabras que siguen mal alineadas se exportan tal como se guardaron, y la exportación muestra cuántas había. FLExText y Toolbox emparejan glosas y morfemas uno a uno, así que allí la glosa completa de una palabra mal alineada va en su primer morfema.

Ejemplo

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

El ejemplo tiene cuatro oraciones latinas glosadas a modo de ilustración. Una está completa, otra está en blanco, otra tiene segmentación y no tiene glosas, y otra tiene un error deliberado, el clítico -que glosado con -.

Lecturas adicionales

Para detalles de implementación, consulta la documentación fuente.