Guía de detección de idiomas para la Web

La tarea MediaPipe Language Detector te permite identificar el idioma de un fragmento de texto. En estas instrucciones, se muestra cómo usar el Detector de idioma para apps web y de JavaScript. La muestra de código que se describe en estas instrucciones está disponible en GitHub.

Puedes ver esta tarea en acción en la demostración. Para obtener más información sobre las capacidades, los modelos y las opciones de configuración de esta tarea, consulta la Descripción general.

Ejemplo de código

El código de ejemplo de Language Detector proporciona una implementación completa de esta tarea en JavaScript para tu referencia. Este código te ayuda a probar esta tarea y a comenzar a crear tu propia función de detección de idioma. Puedes ver, ejecutar y editar el ejemplo solo con tu navegador web.

Configuración

En esta sección, se describen los pasos clave para configurar tu entorno de desarrollo y proyectos de código específicamente para usar Language Detector. Si deseas obtener información general para configurar tu entorno de desarrollo para usar las tareas de MediaPipe, incluidos los requisitos de versión de la plataforma, consulta la guía de configuración para la Web.

Paquetes de JavaScript

El código de Language Detector está disponible a través del paquete @mediapipe/tasks-text. Puedes encontrar y descargar estas bibliotecas desde los vínculos que se proporcionan en la guía de configuración de la plataforma.

Puedes instalar los paquetes requeridos con el siguiente código para la organización local con el siguiente comando:

npm install @mediapipe/tasks-text

Si deseas realizar la implementación en un servidor, puedes usar un servicio de red de distribución de contenido (CDN), como jsDelivr, para agregar código directamente a tu página HTML, de la siguiente manera:

<head>
  <script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/index.js"
    crossorigin="anonymous"></script>
</head>

Modelo

La tarea MediaPipe Language Detector requiere un modelo entrenado que sea compatible con esta tarea. Para obtener más información sobre los modelos entrenados disponibles para Language Detector, consulta la sección Modelos del resumen de la tarea.

Selecciona y descarga un modelo, y, luego, almacénalo en el directorio de tu proyecto:

<dev-project-root>/app/shared/models

Especifica la ruta de acceso del modelo con el parámetro modelAssetPath del objeto baseOptions, como se muestra a continuación:

baseOptions: {
        modelAssetPath: `/app/shared/models/language_detector.tflite`
      }

Crea la tarea

Usa una de las funciones LanguageDetector.createFrom...() de Language Detector para preparar la tarea para ejecutar inferencias. Puedes usar la función createFromModelPath() con una ruta de acceso relativa o absoluta al archivo del modelo entrenado. En el siguiente ejemplo de código, se muestra el uso de la función createFromOptions(). Para obtener más información sobre la configuración de tareas, consulta Opciones de configuración.

En el siguiente código, se muestra cómo compilar y configurar esta tarea.

async function createDetector() {
  const textFiles = await FilesetResolver.forTextTasks(
      "https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm/");
  languageDetector = await languageDetector.createFromOptions(
    textFiles,
    {
      baseOptions: {
        modelAssetPath: `https://storage.googleapis.com/mediapipe-models/language_detector/language_detector/float32/1/language_detector.tflite`
      },
    }
  );
}
createDetector();

Opciones de configuración

Esta tarea tiene las siguientes opciones de configuración para aplicaciones web y de JavaScript:

Nombre de la opción Descripción Rango de valores Valor predeterminado
maxResults Establece la cantidad máxima opcional de predicciones de idioma con la puntuación más alta que se devolverán. Si este valor es menor que cero, se devuelven todos los resultados disponibles. Cualquier número positivo -1
scoreThreshold Establece el umbral de la puntuación de predicción que anula el proporcionado en los metadatos del modelo (si hay alguno). Se rechazan los resultados por debajo de este valor. Cualquier número de punto flotante Sin establecer
categoryAllowlist Establece la lista opcional de códigos de idioma permitidos. Si no está vacío, se filtrarán las predicciones de idioma cuyo código de idioma no esté en este conjunto. Esta opción es mutuamente exclusiva con categoryDenylist, y usar ambas opciones genera un error. Cualquier cadena Sin establecer
categoryDenylist Establece la lista opcional de códigos de idioma que no están permitidos. Si no está vacío, se filtrarán las predicciones de idioma cuyo código de idioma se encuentre en este conjunto. Esta opción es mutuamente excluyente con categoryAllowlist, y usar ambas genera un error. Cualquier cadena Sin establecer

Preparar los datos

Language Detector funciona con datos de texto (string). La tarea controla el procesamiento previo de la entrada de datos, incluido el procesamiento previo de tensores y la tokenización. Todo el procesamiento previo se controla dentro de la función detect. No es necesario realizar un procesamiento previo adicional del texto de entrada.

const inputText = "The input text for the detector.";

Ejecuta la tarea

El Detector de idioma usa la función detect para activar las inferencias. En el caso de la detección de idiomas, esto significa devolver los idiomas posibles para el texto de entrada.

En el siguiente código, se muestra cómo ejecutar el procesamiento con el modelo de tareas:

// Wait to run the function until inner text is set
const detectionResult = languageDetector.detect(inputText);

Cómo controlar y mostrar los resultados

La tarea Language Detector genera un LanguageDetectorResult que consiste en una lista de predicciones de idiomas junto con las probabilidades de esas predicciones. A continuación, se muestra un ejemplo de los datos de resultado de esta tarea:

LanguageDetectorResult:
  LanguagePrediction #0:
    language_code: "fr"
    probability: 0.999781

Este resultado se obtuvo ejecutando el modelo en el texto de entrada: "Il y a beaucoup de bouches qui parlent et fort peu de têtes qui pensent.".

Para ver un ejemplo del código necesario para procesar y visualizar los resultados de esta tarea, consulta el ejemplo.