Detección de idioma en Chrome con IA integrada

Fecha de publicación: 24 de septiembre de 2024

Antes de traducir texto de un idioma a otro, primero debes determinar cuál es el idioma que se usa en el texto determinado. Antes, esto requería subir el texto a un servicio en la nube. Con la inferencia integrada en el dispositivo, puedes mejorar tu historia de privacidad. Si bien es posible enviar una biblioteca específica que haga esto, se requerirían recursos adicionales para descargarla.

El objetivo de la propuesta de la API de Detector de idiomas y traductor es resolver este desafío ajustando un modelo a esta tarea, con una API integrada en el navegador.

Ejemplos de casos de uso

La API de Language Detector es útil principalmente en las siguientes situaciones:

  • Determina el idioma del texto de entrada para que se pueda traducir.
  • Determina el idioma del texto de entrada para que se pueda cargar el modelo correcto para tareas específicas del idioma, como la detección de toxicidad.
  • Determina el idioma del texto de entrada para que se pueda etiquetar correctamente, por ejemplo, en sitios de redes sociales en línea.
  • Determina el idioma del texto de entrada para que la interfaz de una app se pueda ajustar según corresponda. Por ejemplo, en un sitio belga, solo mostrar la interfaz relevante para los usuarios que hablan francés.

Usa la API de Language Detector

La API de Language Detector forma parte de la familia más amplia de la API de Translator. Primero, ejecuta la detección de funciones para ver si el navegador admite la API de LanguageDetector.

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

Descarga del modelo

La detección de idiomas depende de un modelo que está ajustado para la tarea específica de detectar idiomas. Mientras la API se compila en el navegador, el modelo se descarga a pedido la primera vez que un sitio intenta usar la API. En Chrome, este modelo es muy pequeño en comparación con otros. De hecho, es posible que ya esté presente dado que las funciones del navegador Chrome también usan este modelo.

Para ver si el modelo está listo para usarse, llama a la función translation.canDetect() asíncrona. Existen tres respuestas posibles:

  • 'no': El navegador actual admite la API de Language Detector, pero no se puede usar en este momento. Por ejemplo, porque no hay suficiente espacio libre en el disco disponible para descargar el modelo.
  • 'readily': El navegador actual es compatible con la API de Language Detector y se puede usar de inmediato.
  • 'after-download': El navegador actual admite la API de Language Detector, pero primero debe descargar el modelo.

Para activar la descarga y crear una instancia del detector de idioma, llama a la función translation.createDetector() asíncrona. Si la respuesta a canDetect() fue 'after-download', se recomienda escuchar el progreso de la descarga para que puedas informar al usuario en caso de que la descarga tarde.

En el siguiente ejemplo, se muestra cómo inicializar el 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;
}

Ejecuta el detector de idioma

La API de Language Detector usa un modelo de clasificación para determinar cuál es el idioma más probable que se usa en un fragmento de texto determinado. El clasificación es un tipo de aprendizaje automático, en el que el objetivo es ordenar una lista de elementos. En este caso, la API de Language Detector clasifica los idiomas de mayor a menor probabilidad.

La función detect() puede mostrar el primer resultado, la respuesta más probable o iterar sobre los candidatos clasificados con el nivel de confianza. Se muestra como una lista de objetos {detectedLanguage, confidence}. El nivel confidence se expresa como un valor entre 0.0 (confianza más baja) y 1.0 (confianza más alta).

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
// ...

Demostración

Obtén una vista previa de la API de Language Detector en nuestra demo. Ingresa texto escrito en diferentes idiomas en el área de texto.

Regístrate en la prueba de origen

Regístrate en la prueba de la API de Language Detector para comenzar a probar esta API con tus usuarios. Esta prueba de origen se ejecuta de la versión 130 a la 135 de Chrome.

Obtén más información sobre cómo funcionan las pruebas de origen.

Esfuerzo de estandarización

La API de Language Detector se trasladó al W3C Web Incubator Community Group después de que la propuesta correspondiente recibiera asistencia suficiente. La API forma parte de una propuesta más amplia de la API de Translation. El equipo de Chrome solicitó comentarios al grupo de arquitectura técnica del W3C y a Mozilla y WebKit para conocer las posiciones de los estándares de los proveedores de navegadores en particular.

Comparte tus comentarios

Si tienes comentarios sobre la implementación de Chrome, informa un error de Chromium. Comparte tus comentarios sobre la forma de la API de la API de Language Detector. Para ello, comenta un problema existente o abre uno nuevo en el repositorio de GitHub de la API de Translation.

Recursos