Myanmar é atualmente o único país no mundo com uma presença online significativa que não padronizou em Unicode, o padrão internacional de codificação de texto. Em vez disso, Zawgyi é o tipo de letra dominante usado para codificar caracteres da língua birmanesa. Essa falta de um padrão único resultou em desafios técnicos para muitas empresas que fornecem aplicativos e serviços móveis em Mianmar. Isso dificulta a comunicação em plataformas digitais, uma vez que o conteúdo escrito em Unicode parece falsificado para os usuários Zawgyi e vice versa. Isso é um problema para aplicativos como Facebook e Messenger, porque os posts, mensagens e comentários escritos em uma codificação não são legíveis em outra. A falta de padronização em torno do Unicode torna a automação e a detecção proativa de conteúdo violador mais difícil, pode enfraquecer a segurança da conta, torna menos eficiente a denúncia de conteúdo potencialmente prejudicial no Facebook, e significa menos suporte a idiomas em Myanmar além do birmanês.

No ano passado, para apoiar a transição de Myanmar para o Unicode, removemos o Zawgyi como uma opção de idioma de interface para novos usuários do Facebook. Em seguida, trabalhamos para garantir que nossos classificadores para discursos de ódio e outros conteúdos violadores de políticas não tropeçassem no conteúdo Zawgyi e começamos a trabalhar na integração de conversores de fonte para melhorar a experiência de conteúdo em dispositivos Unicode. Hoje, para ajudar o país a continuar sua transição para o Unicode, estamos anunciando que implementamos conversores de fonte no Facebook e no Messenger. Como sabemos que essa transição levará tempo, nosso conversor Zawgyi-to-Unicode continuará permitindo que as pessoas que fazem a transição para Unicode leiam postagens, mensagens e comentários, mesmo que seus amigos e familiares ainda não tenham feito a transição de seus dispositivos. Este post irá detalhar os desafios técnicos envolvidos na integração desses conversores, incluindo como diferenciamos o texto Zawgyi do Unicode, como podemos dizer se um dispositivo usa Zawgyi ou Unicode, e como converter entre os dois, bem como algumas lições que aprendemos ao longo do caminho.

Post sem conversão Unicode (esquerda) e com ele (direita).
Post sem conversão (esquerda) e com ele (direita).

Por que Unicode?

Unicode foi projetado como um sistema global para permitir que todos no mundo possam usar sua própria linguagem em seus dispositivos. Mas a maioria dos dispositivos em Myanmar ainda usam Zawgyi, o que é incompatível com o Unicode. O que significa que as pessoas que usam esses dispositivos agora estão lidando com problemas de compatibilidade entre plataformas, sistemas operacionais e linguagens de programação. A fim de melhor alcançar seu público, os produtores de conteúdo em Mianmar frequentemente postam em Zawgyi e Unicode em um único post, sem mencionar o inglês ou outras línguas. A codificação Zawgyi usa múltiplos pontos de código para caracteres e renderizações combinadas; requer o dobro de pontos de código para representar apenas um subconjunto do script; e pontos de código de vogal podem aparecer antes ou depois de uma consoante (assim CAT ou CTA lêem o mesmo), o que leva a problemas de busca e comparação, mesmo dentro de um único documento. Isto torna qualquer tipo de comunicação entre sistemas um enorme desafio.

Facebook suporta Unicode porque ele oferece suporte e um padrão consistente para cada idioma. Em Myanmar, em particular, suportamos a transição para Unicode porque:

  • Permite que as pessoas em Myanmar utilizem nossos aplicativos e serviços em outros idiomas além do birmanês. Zawgyi suporta a entrada apenas de texto birmanês, enquanto Unicode permite a entrada de idiomas minoritários falados em Mianmar, como Shan e Mon.
  • Oferece uma forma normalizada para idiomas em Mianmar, o que nos ajuda a proteger as pessoas que usam nossos aplicativos, detectando conteúdo violador de políticas e melhora muito o desempenho das ferramentas de busca.
  • Torna mais eficiente para nós rever relatórios de conteúdo potencialmente prejudicial no Facebook, e os revisores de conteúdo serão capazes de rever problemas sem precisar saber como o conteúdo foi codificado.

Uma abordagem com três vertentes

Quando começamos a olhar para a codificação de Myanmar, nossa principal prioridade era garantir que nossos sistemas que detectam conteúdo prejudicial, como a fala de ódio, não tropeçassem no Zawgyi. Nós explicamos nossos objetivos para isso neste post do blog. Os mesmos desafios (como múltiplos pontos de código e renderizações combinadas) que dificultam a comunicação dos sistemas usando Zawgyi também dificultam o treinamento de nossos classificadores e sistemas de IA para efetivamente detectar conteúdo violador de políticas.

Felizmente, não somos a única empresa a trabalhar nesta questão, e fomos capazes de usar a biblioteca de mianmar-tools de código aberto do Google para implementar nossa solução. A biblioteca myanmar-tools foi uma grande atualização, em termos de precisão de detecção e conversão, em relação à biblioteca baseada em regex que vínhamos utilizando. Há cerca de um ano, integrámos a detecção e conversão de fontes para converter todo o conteúdo em Unicode antes de passarmos pelos nossos classificadores. Implementar a autoconversão em todos os nossos produtos não era uma tarefa simples. Cada um dos requisitos para a autoconversão – detecção de codificação de conteúdo, detecção de codificação de dispositivos e conversão – tinha seus próprios desafios.

Detecção de codificação de conteúdo

Para realizar a autoconversão, precisamos primeiro conhecer a codificação de conteúdo, ou seja, a codificação usada quando o texto foi inserido pela primeira vez. Infelizmente, Zawgyi e Unicode usam a mesma gama de pontos de código para representar caracteres em birmanês e outros idiomas. Por causa disso, não podemos dizer se uma lista de pontos de código representando uma string deve ser renderizada com Zawgyi ou Unicode. Além disso, nem toda cadeia de pontos de código faz sentido em ambas as codificações. Com um modelo treinado em texto criado em Zawgyi e Unicode, podemos avaliar a probabilidade de que uma dada string foi criada com um Zawgyi ou com um teclado Unicode.

Com um modelo treinado em texto criado em Zawgyi e Unicode, podemos avaliar a probabilidade de que uma dada string foi criada com um Zawgyi ou com um teclado Unicode.

Nossa detecção é baseada na abordagem da biblioteca de mianmar-tools. Nós treinamos um modelo de aprendizagem de máquina (ML) em amostras públicas de conteúdo do Facebook para as quais já conhecemos a codificação do conteúdo. Este modelo mantém um registro da probabilidade de uma série de pontos de código ocorrer em Unicode versus em Zawgyi para cada amostra. Mais tarde, ao determinar a codificação do conteúdo de alguém, nós olhamos a previsão do modelo para saber se essa seqüência de pontos de código era mais provável que tivesse sido inserida em Unicode ou em Zawgyi – e usamos esse resultado como a codificação de conteúdo.

Device encoding detection

Next, precisamos saber qual codificação foi usada pelo telefone de uma pessoa (ou seja, a codificação do dispositivo) para entender se precisamos executar uma conversão de codificação de fonte. Para fazer isso, podemos tirar vantagem do fato de que em uma codificação, combinando vários pontos de código irá combinar fragmentos de texto para criar um único caractere, enquanto na outra codificação, esses dois pontos de código podem representar caracteres separados. Se criarmos uma string no dispositivo e verificarmos a largura dessa string, podemos dizer qual a fonte que o dispositivo está usando para renderizar a string. Assim que tivermos essa informação, podemos dizer ao servidor em futuras solicitações web que o dispositivo está usando Zawgyi ou Unicode e garantir que qualquer conteúdo que for buscado corresponda. Em Myanmar, nossa lógica do lado do cliente determina se o dispositivo em questão é Zawgyi ou Unicode e envia essa codificação como parte do campo locale no pedido web (por exemplo, my_Qaag_MM).

Conversão

Next, o servidor verifica se está carregando conteúdo birmanês. Se a codificação do conteúdo e a codificação do dispositivo não coincidirem, precisamos converter o conteúdo para um formato que o dispositivo do leitor irá renderizar corretamente. Por exemplo, se um post foi inserido com uma codificação de conteúdo Unicode, mas está sendo lido em um dispositivo codificado Zawgyi, nós convertemos o texto do post para Zawgyi antes de renderizá-lo no dispositivo Zawgyi.

É importante treinar este modelo no conteúdo do Facebook em vez de em outros conteúdos publicamente acessíveis na web. As pessoas escrevem de forma diferente no Facebook do que escreveriam em uma página da web ou em um trabalho acadêmico: Os posts e mensagens do Facebook são geralmente mais curtos e menos formais, e contêm abreviaturas, gírias e erros de digitação. Queremos que nossas previsões sejam as mais precisas possível para o conteúdo que as pessoas compartilham e lêem em nossos aplicativos.

Integrar autoconversão na escala do Facebook

O próximo desafio foi integrar essa conversão entre os diferentes tipos de conteúdo que as pessoas podem criar em nossos aplicativos. O texto Zawgyi foi inserido para atualizações de status, bem como para nomes de usuários, comentários, legendas de vídeo, mensagens privadas e muito mais. Executar nossa detecção e conversão toda vez que alguém buscar qualquer tipo de conteúdo seria proibitivo em termos de tempo e recursos necessários. Não há um único canal pelo qual todo o conteúdo possível do Facebook passe, o que dificulta a captura de conteúdo Zawgyi em qualquer lugar que alguém possa entrar nele. Além disso, nem todos os pedidos da Web são feitos a partir do dispositivo de uma pessoa. Por exemplo, quando notificações e mensagens são empurradas para dispositivos, não podemos executar a lógica de codificação do dispositivo. Além disso, as mensagens e comentários são frequentemente muito curtos, diminuindo a precisão de detecção.

O conversor de fontes está agora totalmente implementado no Facebook e Messenger. Estas ferramentas farão uma grande diferença para os milhões de pessoas em Myanmar que estão usando nossos aplicativos para se comunicar com amigos e familiares. Para continuar apoiando as pessoas de Myanmar através desta transição para Unicode, estamos explorando a expansão de nossas ferramentas de autoconversão para mais da família de produtos do Facebook, bem como melhorar a qualidade da nossa detecção e conversão automática. Também pretendemos continuar a contribuir com a biblioteca de ferramentas de código aberto de Myanmar para ajudar outros a construir ferramentas para apoiar esta transição.

Deixe uma resposta

O seu endereço de email não será publicado.