Detecção de idioma no Chrome com IA integrada

Publicado em 24 de setembro de 2024

Antes de traduzir um texto de um idioma para outro, você precisa determinar qual idioma é usado no texto. Antes, era necessário fazer upload do texto para um serviço em nuvem. Com a inferência no dispositivo, você pode melhorar sua história de privacidade. Embora seja possível enviar uma biblioteca específica que faça isso, seriam necessários recursos adicionais para fazer o download.

A proposta da API Language Detector e Translator tem como objetivo resolver esse desafio ajustando um modelo para essa tarefa, com uma API integrada ao navegador.

Exemplos de casos de uso

A API Language Detector é útil principalmente nos seguintes cenários:

  • Determina o idioma do texto de entrada para que ele possa ser traduzido.
  • Determine o idioma do texto de entrada para que o modelo correto possa ser carregado para tarefas específicas de linguagem, como a detecção de toxicidade.
  • Determinar a linguagem do texto de entrada para que ele possa ser rotulado corretamente, por exemplo, em sites de redes sociais on-line.
  • Determine o idioma do texto de entrada para que a interface de um app possa ser ajustada de acordo. Por exemplo, em um site belga, mostrar apenas a interface relevante para usuários que falam francês.

Usar a API Language Detector

A API Language Detector faz parte da família maior de APIs do Tradutor. Primeiro, execute a detecção de recursos para ver se o navegador é compatível com a API Language Detector.

if ('translation' in self && 'canDetect' in self.translation) {
  // The Language Detector API is available.
}  

Download do modelo

A detecção de idiomas depende de um modelo ajustado para a tarefa específica de detecção de idiomas. Enquanto a API é criada no navegador, o modelo é transferido por download sob demanda na primeira vez que um site tenta usar a API. No Chrome, esse modelo é muito pequeno em comparação com outros modelos. Na verdade, ele pode já estar presente, já que esse modelo também é usado pelos recursos do navegador Chrome.

Para saber se o modelo está pronto para uso, chame a função translation.canDetect() assíncrona. Há três respostas possíveis:

  • 'no': o navegador atual é compatível com a API Language Detector, mas ela não pode ser usada no momento. Por exemplo, porque não há espaço livre suficiente em disco disponível para fazer o download do modelo.
  • 'readily': o navegador atual é compatível com a API Language Detector, que pode ser usada imediatamente.
  • 'after-download': o navegador atual oferece suporte à API Language Detector, mas precisa fazer o download do modelo primeiro.

Para acionar o download e instanciar o detector de idioma, chame a função translation.createDetector() assíncrona. Se a resposta para canDetect() foi 'after-download', a prática recomendada é detectar o progresso do download para informar o usuário caso o download demore.

O exemplo a seguir demonstra como inicializar o detector de idioma.

const canDetect = await translation.canDetect();
let detector;
if (canDetect === 'no') {
  // The language detector isn't usable.
  return;
}
if (canDetect === 'readily') {
  // The language detector can immediately be used.
  detector = await translation.createDetector();
} else {
  // The language detector can be used after model download.
  detector = await translation.createDetector();
  detector.addEventListener('downloadprogress', (e) => {
 console.log(e.loaded, e.total);
  });
  await detector.ready;
}

Executar o detector de idioma

A API Language Detector usa um modelo de classificação para determinar qual idioma é mais provável de ser usado em um determinado texto. A classificação é um tipo de aprendizado de máquina em que o objetivo é ordenar uma lista de itens. Nesse caso, a API Language Detector classifica os idiomas da maior para a menor probabilidade.

A função detect() pode retornar o primeiro resultado, a resposta mais provável, ou iterar os candidatos classificados com o nível de confiança. Isso é retornado como uma lista de objetos {detectedLanguage, confidence}. O nível de confidence é expresso como um valor entre 0.0 (menor confiança) e 1.0 (maior confiança).

const someUserText \= 'Hallo und herzlich willkommen\!';
const results \= await detector.detect(someUserText);
for (const result of results) {
  // Show the full list of potential languages with their likelihood, ranked
  // from most likely to least likely. In practice, one would pick the top
  // language(s) that cross a high enough threshold.
  console.log(result.detectedLanguage, result.confidence);
}
// (Output truncated):
// de 0.9993835687637329
// en 0.00038279531872831285
// nl 0.00010798392031574622
// ...

Demonstração

Confira a API Language Detector na nossa demonstração. Digite texto em diferentes idiomas no campo de texto.

Inscrever-se no teste de origem

Faça o registro no teste da API Language Detector para começar a testar essa API com seus usuários. Esse teste de origem é executado no Chrome 130 a 135.

Saiba como os testes de origem funcionam.

Esforço de padronização

A API Language Detector foi movida para o Grupo da comunidade do Incubator da Web do W3C depois que a proposta correspondente recebeu suporte suficiente. A API faz parte de uma proposta maior da API Translation. A equipe do Chrome solicitou feedback do W3C Technical Architecture Group e perguntou Mozilla e WebKit sobre as posições padrão do fornecedor de navegador específico.

Envie feedback

Se você tiver feedback sobre a implementação do Chrome, registre um bug do Chromium. Compartilhe seu feedback sobre o formato da API da API Language Detector comentando um problema existente ou abra um novo problema no repositório da API Translation do GitHub (link em inglês).

Recursos