O que é o 5 languages test e por que ele aparece no seu trabalho de localização
O 5 languages test é um conjunto de verificações que valida se um sistema de processamento de texto — seja um motor de NLP, um pipeline de tradução automática ou até uma interface interna — consegue identificar, classificar e lidar corretamente com cinco idiomas simultâneos. Não é mágica. É basicamente um benchmark de cobertura linguística que as equipes de QA fazem rodar antes de aprovar algo para produção. A parte mais importante não é só a classificação em si. O teste pressiona coisas que passam despercebidas até você ver o log de falhas. Codificação de caracteres, ordenação de grafemas, comportamento de segmentação em idiomas aglutinantes, e como o sistema lida com code-switching — quando um usuário mistura dois idiomas na mesma frase. Esses são os pontos que quebram deployments silenciosamente.
Como configurar o 5 languages test no seu pipeline
Vamos direto ao que funciona. O cenário mais comum é ter um serviço exposto via API que recebe texto e devolve o código do idioma detectado. O teste em si é um arquivo CSV ou JSON com frases de referência nos cinco idiomas, cada uma marcada com o ground truth esperado. Você varre as linhas, manda para a API, e compara o resultado retornado contra o esperado. Os cinco idiomas padrão da maioria dos setups industriais são inglês, espanhol, português, mandarim e árabe. Essa combinação cobre latin-based, agglutinative com tons, e scripts que vão da direita para a esquerda. Se o seu projeto usa outra palette, tudo bem — só ajuste o arquivo de referência.
Aqui está um exemplo mínimo que eu uso no meu dia a dia. Salvei em um script Python local: Arquivo: phrases_5lang.csv
phrase,lang,label
O sistema retornou um erro de timeout, lang=en,expected
El archivo no se encontró en el servidor, lang=es,expected
O relatório foi enviado para o departamento responsável, lang=pt,expected
, lang=zh,expected
, lang=ar,expected O script de validação lê esse arquivo, manda cada frase para o endpoint, e gera um relatório simples de acertos e erros. Nada complexo. O problema real começa quando você tenta generalizar isso para milhares de frases e precisa paralelizar.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Uma coisa que quase todo mundo esquece: validar também a ordem de bytes em arquivos UTF-8. Alguns motores de detecção falham feio se o BOM estiver presente ou se a string vier truncada no meio de um caractere multibyte. Eu perdi duas horas num projeto inteiro porque o cliente enviava os textos codificados em UTF-16 LE disfarçadamente. O detector classificou tudo como português. A correção foi adicionar uma camada de normalização de encoding antes de qualquer chamada à API. Depois de rodar o teste, o índice de acerto varia muito dependendo da qualidade do modelo. Em condições normais, acerto acima de 94% já é considerado aceitável para produção. Abaixo disso, você tem um problema séria de cobertura. Não adianta ajustar thresholds de confiança sem antes revisar os dados de treinamento.
Se o seu objetivo é ter uma baseline rápida para múltiplos serviços, existe uma versão open source do 5 languages test disponível no GitHub (search por 5-languages-test no repositório do Sapiens AI). O readme inclui instruções de instalação, mas o básico é baixar o repo, rodar o instalador, e executar o comando python run_test.py --input phrases_5lang.csv --output results.json. Isso gera um arquivo JSON com detalhes de cada chamada, tempo de resposta, e discrepâncias. Há uma armadilha comum que vale a pena mencionar. Testadores iniciantes costumam interpretar o 5 languages test como sinônimo de "o sistema suporta cinco idiomas". Na verdade, o teste só prova que o serviço consegue distinguir cinco labels. Ele não valida nada sobre a qualidade da tradução, da segmentação, ou da performance em campos não estruturados. Um sistema pode passar no 5 languages test com nota alta e ainda assim quebrar catastroficamente quando encontra gírias regionais ou termos técnicos específicos.
Outro ponto que pouca gente considera: a questão do code-switching. Frases como "O relatório foi enviado para o database, mas o sistema não respondeu" vão causar conflito de classificação em quase qualquer detector. Eu resolvi isso adicionando uma opção no meu pipeline para marcar those cases como "mixed" em vez de forçar um label único. É um workaround simples, mas evita falsos positivos que poluem seu dashboard de qualidade. Se você precisa de algo mais robusto que o teste básico, considere combinar o 5 languages test com uma camada adicional de validação de formato — verificar se o retorno da API está consistentemente no formato esperado, se os timestamps batem, e se não há valores null em campos obrigatórios. Isso reduz drasticamente o ruído nos relatórios.
Download direto do pacote de teste: https://github.com/sapiensai/5-languages-test/releases/latest O pacote inclui o arquivo CSV de referência, um README atualizado com as últimas práticas, e um script de validação pronto para uso. Recomendado apenas para ambientes de staging. Executar em produção sem supervisão pode gerar picos de latência se o volume de requisições não for controlado.
Resumindo: o 5 languages test é uma ferramenta útil, mas limitada. Use como primeiro filtro, não como última palavra. E sempre valide os resultados manualmente em casos borderline — um número no relatório não substitui olhar o log real.