Skip to content

Trabajo de campo lingüístico en Potato: glosado con FLEx, Toolbox, Praat y ELAN

Importa textos de FLEx o Toolbox a Potato, revisa las glosas interlineales según las reglas de Leipzig y exporta a FLExText, Toolbox o LaTeX; además, niveles de TextGrid y ELAN.

Potato 2.12.0 importa textos interlineales de FieldWorks Language Explorer (FLEx) y de Toolbox, permite a los anotadores revisar cada oración en un esquema interlinear_gloss que comprueba las reglas de alineación de Leipzig, y exporta las glosas corregidas de vuelta al mismo formato. Los archivos TextGrid de Praat y los de ELAN se importan del mismo modo, como niveles alineados en el tiempo.

El análisis suele estar ya en FLEx o en Toolbox, y el trabajo consiste en revisarlo y corregirlo, a menudo con varias personas revisando textos distintos. Potato añade el paso de revisión: la asignación de textos a revisores, una comprobación de alineación en cada palabra y un registro de quién confirmó cada oración.

Importar textos de FLEx o 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 también puede ser un directorio de archivos .flextext, o de archivos de Toolbox (.txt, .sfm, .db, .tbx, .toolbox). El formato se detecta a partir del contenido: un archivo FLExText tiene elementos <interlinear-text>, y un archivo de Toolbox tiene registros \ref con una línea de texto y una línea de morfemas o de glosas. -f flextext o -f toolbox lo elige explícitamente.

Un archivo FLExText que no puede leerse se deja fuera con el motivo: es binario o no es texto UTF-8, no es XML bien formado, o define entidades XML, algo que los archivos subidos no pueden hacer.

Cada frase de FLEx o registro de Toolbox se convierte en un ítem. El análisis existente se escribe en los campos del propio ítem (words, morphemes, glosses, translation, y pos cuando el origen tiene categorías gramaticales), y el esquema generado los lee como punto de partida. Nada cuenta como respuesta de una persona hasta que un anotador pulsa Next o edita el ítem, así que una exportación anterior a la revisión contiene solo las oraciones que alguien ha comprobado.

FLExTextPotato
Título de interlinear-textCampo text_title, que se reutiliza al exportar
paragraph, segnum de la fraseCampos paragraph, phrase
txt de la palabraUna palabra. Las palabras punct se quedan en el texto de la oración, pero no se glosan
txt (o cf) y type del morfemaLa segmentación, con - o = tomados de las marcas de la propia forma o del tipo
gls del morfemaLa glosa de ese morfema, con los espacios convertidos en .
pos de la palabra, o el msa de la raízEl nivel pos
gls de la fraseLa traducción libre
language vernácula y de análisislanguage y metalanguage del esquema

Los registros de Toolbox empiezan en \ref, y las líneas interlineales se leen por columnas, como las escribe Toolbox. Los archivos editados a mano a menudo no están alineados, así que primero se prueban dos lecturas por orden: los morfemas agrupados en palabras según sus propias marcas, y las glosas emparejadas con los morfemas por orden. El importador lee \tx o \t para el texto, \mb o \m para los morfemas, \ge o \g para la glosa, \ps o \p para la categoría gramatical, y \ft o \f para la traducción libre. Los demás marcadores de un registro, como \nt, se guardan en el campo sfm_extra del ítem y se vuelven a escribir al exportar.

Revisar las glosas

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

Los anotadores ven cada oración con el análisis importado ya en su sitio. Cualquier palabra cuya segmentación y glosa no se correspondan se marca al abrir la página, así que los errores que ya traía el origen aparecen en la primera revisión. Texto glosado interlineal enumera las comprobaciones y los controles de teclado.

Las comprobaciones siguen las Reglas de glosado de Leipzig de Bernard Comrie, Martin Haspelmath y Balthasar Bickel:

  • La línea del ejemplo y la línea de la glosa están alineadas palabra por palabra.
  • Dentro de una palabra, - separa los afijos y = separa los clíticos, y la glosa tiene los mismos separadores en los mismos lugares, así que morfema y glosa pueden emparejarse contando.
  • Cuando un morfema representa varios significados, estos se unen con un punto: NOM.SG, put.in.bag. Un punto no es un límite y no se cuenta.
  • La persona y el número pueden escribirse juntos sin punto, como en 3SG.
  • Las categorías gramaticales son abreviaturas en mayúsculas, impresas en versalitas.
  • Un infijo se delimita con corchetes angulares en ambas líneas, y su glosa va junto a la glosa de la raíz.

Exportar de vuelta a FLEx, Toolbox o 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 escribe <annotator>.flextext, uno por anotador, agrupado en los textos y párrafos que registró la importación. Los tipos de morfema se deducen de los límites: el primer morfema con una glosa en minúsculas (léxica) es la raíz, los morfemas anteriores son prefijos o proclíticos, y los posteriores son sufijos o enclíticos.
  • toolbox escribe <annotator>.txt con las líneas alineadas por columnas y los valores \ref originales.
  • igt escribe igt.txt, con tres líneas alineadas y la traducción de cada ejemplo, e igt.tex para el paquete gb4e de LaTeX.

Volver a importar un archivo exportado da las mismas palabras, segmentaciones, glosas, traducciones y categorías gramaticales. Lo que no sobrevive al viaje de ida y vuelta:

  • Los GUID de FLEx y los vínculos con el léxico, porque la exportación no tiene léxico.
  • Las palabras de puntuación de FLEx, que se quedan en el texto de la oración del ítem pero no se vuelven a escribir como palabras punct.
  • El tipo de un morfema que no es la raíz ni está junto a un límite marcado, como una segunda raíz en un compuesto.
  • Los niveles distintos de pos en FLExText. En Toolbox se escriben como líneas adicionales con el nombre del nivel.

TextGrids de Praat y archivos de ELAN

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

recordings/ contiene archivos .TextGrid o .eaf, cada uno con un archivo de audio o vídeo del mismo nombre al lado. Cada archivo se convierte en un ítem con su multimedia copiada en media/, cada nivel se convierte en un nivel de un esquema tiered_annotation, y cada intervalo no vacío se convierte en un segmento que los anotadores pueden corregir. Un nivel con como mucho 30 valores distintos, como fonos o códigos de hablante, los recibe como etiquetas. Los exportadores textgrid y eaf vuelven a escribir los niveles corregidos. Importar proyectos tiene los detalles.

Lecturas adicionales

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