Anotação multilíngue e de baixos recursos
Anotar em idiomas além do inglês: a lacuna de diversidade, os métodos participativos com falantes nativos e como localizar a interface do Potato com suporte da direita para a esquerda, fontes e rótulos traduzidos.
Anotar em um idioma que não seja o inglês são dois problemas ao mesmo tempo. O científico: a maioria dos recursos de PLN cobre um punhado de idiomas, as categorias não se transferem de forma limpa entre culturas e você precisa de falantes de verdade, não apenas de pessoas bilíngues, para produzir bons rótulos. O prático: fazer com que a ferramenta exiba o idioma corretamente, incluindo escritas da direita para a esquerda e fontes não latinas. O Potato resolve o segundo pela configuração; o primeiro fica por sua conta. Este guia cobre ambos.
A lacuna de diversidade é real e enorme
Existem cerca de 7.000 idiomas no mundo e o PLN atende de forma significativa a poucas dezenas. Joshi et al. (2020) quantificaram isso: um pequeno número de idiomas tem dados rotulados em abundância, enquanto a imensa maioria, falada por bilhões de pessoas, quase não tem nenhum, e a lacuna se autorreforça porque os recursos fluem para os idiomas que já os possuem. A anotação costuma ser o gargalo. Se você quer que um modelo funcione em um idioma de baixos recursos, alguém precisa rotular dados nele, e é nessa rotulagem que a qualidade se ganha ou se perde.
Anote com a comunidade linguística, não apenas no idioma
O instinto é contratar trabalhadores de multidão bilíngues baratos e traduzir um guia em inglês. As duas partes são arriscadas. Bird (2020) argumenta contra abordagens extrativas que tratam uma comunidade linguística como fonte de dados, e o modelo participativo do projeto Masakhane (Nekoto et al., 2020) mostra que a alternativa funciona em escala para os idiomas africanos: os falantes nativos ajudam a projetar a tarefa, a redigir as diretrizes e são donos dos rótulos, em vez de validar decisões tomadas em outro lugar. Duas consequências práticas:
- Recrute falantes fluentes, idealmente da variedade certa. Um idioma não é monolítico; o dialeto, a região e o registro importam, e quem fala uma variedade pode rotular outra de forma errada. Bilíngue não é o mesmo que nativo.
- Não presuma que as categorias se transferem. Sentimento, ofensividade, cortesia e até tipos de entidades nomeadas são culturalmente específicos. Um guia que funciona para a cortesia em inglês pode se romper silenciosamente em um idioma no qual a cortesia é codificada gramaticalmente. Faça com que os falantes adaptem o esquema, não apenas traduzam as palavras. Esta é uma decisão de design de esquema, não uma tarefa de tradução.
Localizando a interface do Potato
A metade prática. O Potato localiza a interface voltada ao anotador por meio da configuração, sem alterações de código, embora valha a pena conhecer os limites de antemão.
Texto da interface. O bloco ui_language é uma tabela de cadeias para os elementos da interface. Defina o idioma do documento e traduza os botões e cabeçalhos que o anotador vê:
ui_language:
html_lang: ar
html_dir: rtl # right-to-left for Arabic, Hebrew, etc.
submit_button: "إرسال"
instructions_heading: "التعليمات"Definir html_dir: rtl inverte todo o documento para as escritas da direita para a esquerda usando o tratamento bidirecional nativo do navegador. Uma limitação honesta: ui_language cobre as telas principais de anotação e de login, mas várias páginas do lado administrativo (o painel, a adjudicação, o treinamento e as telas de logout) ainda estão apenas em inglês, então planeje isso se os seus anotadores forem vê-las.
Fontes para escritas não latinas. Os navegadores nem sempre trazem uma boa fonte padrão para as escritas CJK, árabe ou índicas. Carregue uma por meio de uma folha de estilos do projeto com base_css:
base_css: "css/noto_font.css"Dados não ingleses. O Potato lê os arquivos de dados como UTF-8 por padrão e renderiza qualquer caractere Unicode no campo de texto, de modo que o conteúdo não inglês é exibido como está. Se um arquivo usar uma codificação diferente, substitua-a por arquivo (encoding:) ou globalmente (data_directory_encoding:).
Rótulos traduzidos. Esta é a única armadilha sutil. Por padrão, o Potato "humaniza" os nomes dos rótulos, reformatando-os e aplicando maiúsculas iniciais, o que pode deturpar as escritas não latinas. Mantenha valores name em inglês legíveis por máquina para os seus dados e mostre ao anotador um rótulo traduzido com displayed_label, desativando a humanização:
annotation_schemes:
- name: sentiment
annotation_type: radio
description: "ما هو شعور هذا النص؟"
humanize_labels: false
labels:
- name: positive
displayed_label: "إيجابي"
- name: negative
displayed_label: "سلبي"
- name: neutral
displayed_label: "محايد"A anotação armazenada continua sendo positive, portanto os seus dados permanecem limpos enquanto o anotador trabalha inteiramente em árabe.
Instruções e consentimento. Redija as suas páginas de consentimento e instruções do surveyflow diretamente no idioma de destino; são arquivos HTML que você mesmo escreve, sem nada que force o inglês. Para executar a mesma tarefa em vários idiomas, o Potato inclui um auxiliar setup_multilingual_config.py que gera configurações por idioma a partir de um modelo.
Leitura adicional
- Como escolher um esquema de anotação, porque as categorias raramente se transferem entre idiomas sem mudanças.
- Como escrever diretrizes de anotação, que os falantes nativos deveriam ajudar a redigir, não apenas traduzir.
- Como conduzir um estudo no Prolific e no MTurk, para recrutar falantes do idioma e da variedade certos.
- Personalização de layout, para fontes e modelos personalizados.