Detección de idiomas

<< APIs de IA Traducción >>

La API de detección de idioma o Language Detector API, permite detectar con cierto grado de certeza el idioma en el que está escrito un texto. Esto puede ser útil de cara a usar otras herramientas como la API de traducción de textos (Translator API), etc.

Comprobar el soporte de los idiomas

El método estático availability, permite comprobar si el modelo tiene instalado el soporte para una serie de idiomas. Para ello, le pasamos un array con la lista de idiomas con la que queremos trabajar (en este caso detectar en un texto).

La llamada recibe un array con los lenguajes a comprobar y devuelve una promesa con un string, indicando el soporte. Los posibles resultados son:

  • available:  El navegador soporta el idioma
  • downloadable: El navegador necesita descargar el modelo de IA para ese idioma
  • downloading: El navegador está descargando el soporte del idioma
  • unavailable: El navegador no soporta la detección del idioma
async function langSupport(language) {
  const availability = await LanguageDetector.availability({
    expectedInputLanguages: [language],
  });
  console.log(availability);
}

langSupport('es'); // available

Detectando el idioma

Para detectar el idioma de un texto, primero debemos crearnos una instancia de la clase LanguageDetector con el método estático create. Le pasamos un array de idiomas que debería ser capaz de detectar, y si los soporta, nos devolverá una promesa con la instancia de LanguageDetector, o un error en otro caso.

Con el objeto recibido podremos utilizar el método detect con una cadena de texto. Nos devolverá un array con los idiomas detectados en función de la confianza que tenga en ellos (de mayor a menor confianza). Generalmente en la primera posición estará el idioma correcto (si lo ha detectado correctamente).

El objeto LanguageDetector, solo se podrá utilizar una vez para detectar el idioma de un texto. Si queremos detectar el idioma de más textos, debemos crear nuevos objetos.

async function detectLanguage(text) {
   const detector = await LanguageDetector.create({
    expectedInputLanguages: ["en", "es", "fr"],
  });
  const results = await detector?.detect(text);
  console.log(text);
  console.log(results);
  console.log(`Language detected: ${results[0]?.detectedLanguage}`);
}

detectLanguage("En un lugar de la mancha de cuyo nombre no quiero acordarme"), // es
detectLanguage("There was a wolf near the castle where the king lived") // en
detectLanguage("An einem Ort in La Mancha, an dessen Namen ich mich nicht erinnern möchte") // de

Como se puede observar, a pesar de crear el objeto sin la expectativa de encontrar el idioma alemán (de), si el navegador tiene el soporte descargado, es capaz de detectarlo sin problema. Lo que le indica el array de idiomas, es que si tiene que descargar alguno que no tenga instalado, lo haga en ese momento.

<< APIs de IA Traducción >>