La tarea MediaPipe Text Classifier te permite clasificar texto en un conjunto de categorías definidas, como opiniones positivas o negativas. Las categorías se determinan según el modelo que usas y cómo se entrenó ese modelo. En estas instrucciones, se muestra cómo usar el Clasificador de texto para apps web y de JavaScript.
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 del clasificador de texto 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 compilar tu propia app de clasificación de texto. Puedes ver, ejecutar y editar el ejemplo del clasificador de texto con solo 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 Text Classifier. 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 del clasificador de texto 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@0.1/text-bundle.js"
crossorigin="anonymous"></script>
</head>
Modelo
La tarea MediaPipe Text Classifier requiere un modelo entrenado que sea compatible con esta tarea. Para obtener más información sobre los modelos entrenados disponibles para el clasificador de texto, 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>/assets/bert_text_classifier.tflite
Especifica la ruta de acceso del modelo con el parámetro modelAssetPath del objeto baseOptions, como se muestra a continuación:
baseOptions: {
modelAssetPath: `/assets/bert_text_classifier.tflite`
}
Crea la tarea
Usa una de las funciones TextClassifier.createFrom...() del clasificador de texto 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 TextClassifier.createFromOptions(). Para obtener más información sobre las opciones de configuración disponibles, consulta Opciones de configuración.
En el siguiente código, se muestra cómo compilar y configurar esta tarea:
async function createClassifier() {
const textFiles = await FilesetResolver.forTextTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm/");
textClassifier = await TextClassifier.createFromOptions(
textFiles,
{
baseOptions: {
modelAssetPath: `https://storage.googleapis.com/mediapipe-tasks/text_classifier/bert_text_classifier.tflite`
},
maxResults: 5
}
);
}
createClassifier();
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 |
|---|---|---|---|
displayNamesLocale |
Establece el idioma de las etiquetas que se usarán para los nombres visibles proporcionados en los metadatos del modelo de la tarea, si están disponibles. El valor predeterminado es en para inglés. Puedes agregar etiquetas localizadas a los metadatos de un modelo personalizado con la API de TensorFlow Lite Metadata Writer.
| Código de configuración regional | en |
maxResults |
Establece la cantidad máxima opcional de resultados de clasificación con la puntuación más alta que se devolverán. Si es < 0, se devolverán 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 nombres de categorías permitidos. Si no está vacío, se filtrarán los resultados de clasificación cuyo nombre de categoría no se encuentre en este conjunto. Se ignoran los nombres de categorías duplicados o desconocidos.
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 nombres de categorías que no están permitidas. Si no está vacío, se filtrarán los resultados de clasificación cuyo nombre de categoría se encuentre en este conjunto. Se ignoran los nombres de categorías duplicados o desconocidos. Esta opción es mutuamente excluyente con categoryAllowlist, y usar ambas opciones genera un error. |
Cualquier cadena | Sin establecer |
Preparar los datos
El Clasificador de texto 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 classify(). No es necesario realizar un procesamiento previo adicional del texto de entrada.
const inputText = "The input text to be classified.";
Ejecuta la tarea
El clasificador de texto usa la función classify() para activar las inferencias. En el caso de la clasificación de texto, esto significa devolver las categorías 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 result: TextClassifierResult = await textClassifier.classify(
inputText
);
Cómo controlar y mostrar los resultados
El clasificador de texto genera un TextClassifierResult que contiene la lista de categorías posibles para el texto de entrada. Las categorías se definen según el modelo que uses, por lo que, si quieres categorías diferentes, elige otro modelo o vuelve a entrenar uno existente.
A continuación, se muestra un ejemplo de los datos de resultado de esta tarea:
TextClassificationResult:
Classification #0 (single classification head):
ClassificationEntry #0:
Category #0:
category name: "positive"
score: 0.8904
index: 0
Category #1:
category name: "negative"
score: 0.1096
index: 1
Este resultado se obtuvo ejecutando el clasificador BERT en el texto de entrada:
"an imperfect but overall entertaining mystery".