Anotación multilingüe y de bajos recursos
Anotar en idiomas más allá del inglés: la brecha de diversidad, los métodos participativos con hablantes nativos y cómo localizar la interfaz de Potato con soporte de derecha a izquierda, fuentes y etiquetas traducidas.
Anotar en un idioma distinto del inglés son dos problemas a la vez. El científico: la mayoría de los recursos de PLN cubren un puñado de idiomas, las categorías no se transfieren limpiamente entre culturas y necesitas hablantes reales, no solo personas bilingües, para producir buenas etiquetas. El práctico: lograr que la herramienta muestre el idioma correctamente, incluidas las escrituras de derecha a izquierda y las fuentes no latinas. Potato resuelve lo segundo mediante la configuración; lo primero corre por tu cuenta. Esta guía cubre ambos.
La brecha de diversidad es real y enorme
En el mundo hay unos 7.000 idiomas y el PLN sirve de forma significativa a unas pocas decenas. Joshi et al. (2020) lo cuantificaron: un número reducido de idiomas cuenta con abundantes datos etiquetados, mientras que la inmensa mayoría, hablada por miles de millones de personas, casi no tiene ninguno, y la brecha se refuerza a sí misma porque los recursos fluyen hacia los idiomas que ya los poseen. La anotación suele ser el cuello de botella. Si quieres que un modelo funcione en un idioma de bajos recursos, alguien tiene que etiquetar datos en él, y es en ese etiquetado donde se gana o se pierde la calidad.
Anota con la comunidad lingüística, no solo en el idioma
El instinto es contratar a personas bilingües baratas para el crowdsourcing y traducir una guía en inglés. Ambas partes son arriesgadas. Bird (2020) se opone a los enfoques extractivos que tratan a una comunidad lingüística como fuente de datos, y el modelo participativo del proyecto Masakhane (Nekoto et al., 2020) muestra que la alternativa funciona a escala para las lenguas africanas: los hablantes nativos ayudan a diseñar la tarea, redactar las directrices y son dueños de las etiquetas, en lugar de validar decisiones tomadas en otra parte. Dos consecuencias prácticas:
- Recluta hablantes fluidos, idealmente de la variedad adecuada. Un idioma no es monolítico; el dialecto, la región y el registro importan, y quien habla una variedad puede etiquetar mal otra. Bilingüe no es lo mismo que nativo.
- No des por sentado que las categorías se transfieren. El sentimiento, la ofensividad, la cortesía e incluso los tipos de entidades nombradas son culturalmente específicos. Una guía que funciona para la cortesía en inglés puede romperse silenciosamente en un idioma donde la cortesía se codifica gramaticalmente. Haz que los hablantes adapten el esquema, no que solo traduzcan las palabras. Esta es una decisión de diseño del esquema, no una tarea de traducción.
Localizar la interfaz de Potato
La mitad práctica. Potato localiza la interfaz orientada al anotador mediante la configuración, sin cambios de código, aunque conviene conocer los límites de antemano.
Texto de la interfaz. El bloque ui_language es una tabla de cadenas para los elementos de la interfaz. Define el idioma del documento y traduce los botones y encabezados que ve el anotador:
ui_language:
html_lang: ar
html_dir: rtl # right-to-left for Arabic, Hebrew, etc.
submit_button: "إرسال"
instructions_heading: "التعليمات"Establecer html_dir: rtl invierte todo el documento para las escrituras de derecha a izquierda usando el manejo bidireccional nativo del navegador. Una limitación honesta: ui_language cubre las pantallas principales de anotación e inicio de sesión, pero varias páginas del lado de administración (el panel, la adjudicación, el entrenamiento y las pantallas de cierre de sesión) siguen solo en inglés, así que tenlo en cuenta si tus anotadores las verán.
Fuentes para escrituras no latinas. Los navegadores no siempre incluyen una buena fuente predeterminada para las escrituras CJK, árabe o índicas. Carga una mediante una hoja de estilos del proyecto con base_css:
base_css: "css/noto_font.css"Datos no ingleses. Potato lee los archivos de datos como UTF-8 de forma predeterminada y muestra cualquier carácter Unicode en el campo de texto, por lo que el contenido no inglés se presenta tal cual. Si un archivo usa una codificación diferente, anúlala por archivo (encoding:) o globalmente (data_directory_encoding:).
Etiquetas traducidas. Esta es la única trampa sutil. De forma predeterminada, Potato "humaniza" los nombres de las etiquetas, reformateándolos y aplicando mayúsculas iniciales, lo que puede estropear las escrituras no latinas. Mantén valores de name en inglés legibles por máquina para tus datos y muéstrale al anotador una etiqueta traducida con displayed_label, desactivando la humanización:
annotation_schemes:
- name: sentiment
annotation_type: radio
description: "ما هو شعور هذا النص؟"
humanize_labels: false
labels:
- name: positive
displayed_label: "إيجابي"
- name: negative
displayed_label: "سلبي"
- name: neutral
displayed_label: "محايد"La anotación almacenada sigue siendo positive, por lo que tus datos permanecen limpios mientras el anotador trabaja íntegramente en árabe.
Instrucciones y consentimiento. Redacta tus páginas de consentimiento e instrucciones de surveyflow directamente en el idioma de destino; son archivos HTML que tú escribes, sin nada que fuerce el inglés. Para ejecutar la misma tarea en varios idiomas, Potato incluye un ayudante setup_multilingual_config.py que genera configuraciones por idioma a partir de una plantilla.
Lecturas adicionales
- Cómo elegir un esquema de anotación, porque las categorías rara vez se transfieren entre idiomas sin cambios.
- Cómo escribir directrices de anotación, que los hablantes nativos deberían ayudar a redactar, no solo a traducir.
- Cómo realizar un estudio en Prolific y MTurk, para reclutar hablantes del idioma y la variedad correctos.
- Personalización del diseño, para fuentes y plantillas personalizadas.