Text Classifier
Text Classifier aprende a clasificar textos a partir de ejemplos que ya tienes clasificados: correos marcados como spam o no, opiniones etiquetadas como positivas o negativas, tickets asignados a una cola. Guarda lo aprendido como un modelo con nombre y, después, asigna una categoría a cada texto nuevo, con la probabilidad de cada una.
Es útil cuando tienes un historial de textos ya clasificados y quieres que los nuevos se clasifiquen igual, sin escribir reglas. No necesita un modelo de IA ni credenciales: todo ocurre dentro de NappAI.
Cuándo usarlo
- Separar los correos de spam de los que hay que atender.
- Conocer si las opiniones de tus clientes son positivas, negativas o neutras.
- Enviar cada ticket de soporte a su cola (soporte, ventas, facturación) a partir de cómo se repartieron los anteriores.
- Detectar la intención de un mensaje: comprar, cancelar, pedir información o reclamar.
- Ordenar documentos por tipo: factura, contrato, currículum.
Cómo se trabaja
El campo Operation decide qué hace el componente en cada ejecución:
- Train: aprende de tus ejemplos clasificados y guarda el clasificador con el nombre de Model Name.
- Predict: aplica un clasificador guardado a textos nuevos.
- Evaluate: compara las categorías que propone un clasificador guardado con las categorías reales de un conjunto de ejemplos y devuelve medidas de acierto.
Los clasificadores entrenados se guardan en tu almacenamiento, en la sección Clasificadores de texto. Desde allí puedes descargarlos, borrarlos o subirlos a otro entorno (consulta Subir un modelo entrenado).
Configuración
Los campos cambian según la operación elegida.
| Campo | Qué hace |
|---|---|
| Operation (obligatorio) | Train, Predict o Evaluate. Por defecto: Train. |
| Data | Una lista de filas de datos; conéctala desde una consulta a base de datos, una llamada a una API o un CSV. En Train (obligatorio), son los ejemplos: cada fila con el texto y su categoría correcta. En Evaluate (obligatorio), ejemplos con el mismo formato para medir el acierto. En Predict es opcional: conéctalo para clasificar muchos textos a la vez, con la misma columna de texto que en el entrenamiento. |
| Text | Solo en Predict. Un único texto para clasificar, por ejemplo el cuerpo de un correo que llega por un webhook. Si lo rellenas, se usa este texto; si lo dejas vacío, se clasifican los textos de Data. |
| Model Name (obligatorio) | En Train, el nombre con el que se guarda el clasificador; se propone uno con la fecha y la hora, y puedes cambiarlo por algo reconocible como spam_v1. No puede coincidir con el de un clasificador que ya tengas. En Predict y Evaluate, es un desplegable con tus clasificadores entrenados; usa el botón de actualizar si acabas de entrenar uno. |
| Text Column (obligatorio en Train) | El nombre de la columna de Data que contiene el texto, por ejemplo cuerpo o comentario. Escríbelo o arrástralo; debe coincidir exactamente, incluidas mayúsculas y minúsculas. Predict y Evaluate usan la columna guardada con el clasificador. |
| Label Column (obligatorio en Train y Evaluate) | El nombre de la columna que contiene la categoría de cada fila, por ejemplo cola o sentimiento. Hacen falta al menos dos categorías distintas. |
| Algorithm (obligatorio en Train) | El método de aprendizaje: Logistic Regression (por defecto, la opción equilibrada), Naive Bayes (muy rápido, aunque algo menos preciso) o Linear SVM (suele acertar más con muchos ejemplos, pero tarda más en entrenar). |
Opciones avanzadas
Solo aparecen en Train.
| Campo | Qué hace |
|---|---|
| Test Size | Qué parte de los ejemplos se aparta para medir el acierto en lugar de usarse para aprender. Por defecto: 0,2 (el 20 %). Con 0 se aprende con todo y no se mide sobre ejemplos apartados. |
| Max Vocabulary Size | Cuántas palabras distintas como máximo tiene en cuenta el clasificador. Por defecto: 20.000. Súbelo si tienes muchos textos o textos en varios idiomas; con 0 no hay límite. |
| Max N-gram Size | Si aprende de palabras sueltas o también de grupos de palabras. Con 1 (por defecto), palabras sueltas; con 2, también parejas como «dinero gratis»; con 3, también grupos de tres. Valores más altos pueden acertar más, pero el entrenamiento tarda más. |
Resultado
La salida Result devuelve datos que puedes conectar a cualquier componente que trabaje con datos, por ejemplo un enrutador condicional, una base de datos o un agente.
- Train: un resumen con el nombre del clasificador, las columnas usadas, el número de ejemplos, las categorías que ha aprendido y las medidas de acierto: la proporción de aciertos (
accuracy) y otras medidas de calidad (precision,recall,f1). - Predict: una fila por texto con el texto (
text), la categoría asignada (prediction) y la probabilidad de cada categoría (probabilities). - Evaluate: las mismas medidas de acierto, calculadas sobre los ejemplos que has conectado.
Ejemplo
La tienda online Casa Olmo quiere repartir automáticamente los mensajes de su formulario de contacto:
- Exporta los últimos mensajes ya atendidos, con las columnas
mensajeydepartamento, y los convierte en una lista de datos con CSV to Data List. - Con Train, Text Column
mensaje, Label Columndepartamentoy Model Namecontacto_v1, entrena el clasificador. - En el flujo que recibe el formulario, otro Text Classifier con Predict y el modelo
contacto_v1recibe el mensaje en Text. El resultado indica el departamento y un enrutador envía el mensaje al buzón correspondiente.
Buenas prácticas
- Cuantos más ejemplos por categoría, mejor. Con pocos ejemplos de una categoría, el clasificador la reconocerá peor.
- Evalúa con ejemplos nuevos, distintos de los que usaste para entrenar, para saber cuánto acierta de verdad.
- Para volver a entrenar, usa un nombre nuevo (por ejemplo
v2) o borra antes el clasificador anterior desde el almacenamiento: si el nombre ya existe, el entrenamiento se detiene con un error para no sobrescribirlo. - Si no tienes ejemplos clasificados, usa Laya, que decide a partir de una pregunta y la descripción de cada respuesta, sin entrenamiento.
Componentes relacionados
- Laya: clasificación sin ejemplos previos, a partir de una pregunta.
- Predictive Model: predicciones a partir de datos en forma de tabla.
- Data Conditional Router: para enviar cada texto por un camino distinto según su categoría.