32. Evaluación de modelos de NLP

32.1 Introducción

Entrenar un modelo de NLP no alcanza. También necesitamos saber qué tan bien funciona, en qué situaciones falla y si realmente resuelve el problema para el que fue construido.

La evaluación es, por lo tanto, una parte central del desarrollo de sistemas de lenguaje. Sin una evaluación adecuada, los números pueden ser engañosos y las conclusiones incorrectas.

32.2 ¿Por qué evaluar?

Evaluar permite comparar modelos, ajustar hiperparámetros, detectar debilidades, medir impacto de cambios y estimar si un sistema está listo para uso real.

También sirve para evitar decisiones basadas solo en impresiones subjetivas o ejemplos aislados. En problemas de NLP, donde la salida puede parecer plausible aunque sea incorrecta, esto es especialmente importante.

32.3 Evaluar no es solo obtener un número

Aunque muchas veces se resume el rendimiento en una métrica principal, la evaluación real es más rica. No basta con un único valor agregado: conviene mirar el tipo de errores, el comportamiento por subgrupos, la robustez y la utilidad práctica.

Un modelo puede tener una métrica global alta y aun así fallar gravemente en casos importantes.

Una buena evaluación no solo responde “cuánto acierta”, sino también “dónde falla”, “por qué falla” y “si esos fallos son aceptables para la aplicación”.

32.4 La métrica depende de la tarea

No existe una única métrica válida para todo NLP. La evaluación cambia según el problema: clasificación, extracción de entidades, traducción, resumen, generación, recuperación de información o pregunta-respuesta.

Elegir una métrica incorrecta puede llevar a optimizar un comportamiento que no coincide con lo que realmente importa.

32.5 Clasificación de texto

En tareas de clasificación, las métricas más comunes son accuracy, precision, recall y F1-score. Todas ellas intentan medir distintos aspectos del acierto del modelo.

La elección entre unas y otras depende de si importa más acertar en general, evitar falsos positivos o no dejar pasar casos relevantes.

32.6 Accuracy

Accuracy mide la proporción de predicciones correctas sobre el total. Es intuitiva y útil cuando las clases están razonablemente balanceadas.

Sin embargo, puede ser engañosa en datasets desbalanceados. Si una clase domina ampliamente, un modelo mediocre puede obtener accuracy alta simplemente prediciendo siempre la clase mayoritaria.

32.7 Precision

Precision responde a la pregunta: de todas las veces que el modelo predijo una clase, ¿cuántas veces acertó realmente?

Es especialmente importante cuando un falso positivo tiene un costo alto, por ejemplo en detección de spam, fraude o moderación de contenido.

32.8 Recall

Recall mide qué proporción de los casos realmente positivos fue detectada por el sistema. Es clave cuando no queremos dejar pasar ejemplos importantes.

En contextos como diagnóstico asistido o alerta de incidentes, un recall bajo puede ser más problemático que una precision moderada.

32.9 F1-score

F1-score combina precision y recall en una sola medida. Resulta útil cuando se quiere equilibrar ambas dimensiones y evitar depender solo de una.

No reemplaza el análisis separado de precision y recall, pero ofrece una visión sintética valiosa en muchos problemas.

32.10 Matriz de confusión

La matriz de confusión muestra cómo se distribuyen los aciertos y errores por clase. Es una herramienta simple pero muy poderosa para entender qué tipo de equivocaciones está cometiendo el modelo.

Permite ver, por ejemplo, si una clase se confunde especialmente con otra, algo que una métrica global puede ocultar.

32.11 Clasificación multiclase y multietiqueta

En problemas multiclase o multietiqueta, la evaluación se vuelve más compleja. Aparecen variantes como promedios macro, micro y weighted, que resumen el rendimiento sobre varias clases de maneras distintas.

Comprender estas diferencias es importante para no interpretar mal los resultados cuando el dataset está desbalanceado o las clases tienen relevancia desigual.

32.12 Etiquetado secuencial y entidades

En tareas como reconocimiento de entidades nombradas, la evaluación suele centrarse en qué entidades fueron detectadas correctamente con sus límites y etiquetas apropiadas.

Aquí también suelen usarse precision, recall y F1, pero aplicadas a spans o unidades más complejas que una simple clase por documento.

32.13 Traducción automática

En traducción automática, la evaluación es más difícil porque una misma oración puede tener múltiples traducciones válidas. Históricamente se usó mucho BLEU, una métrica basada en superposición de n-gramas con referencias humanas.

BLEU fue útil durante años, pero también tiene límites: una traducción correcta con palabras distintas a las de la referencia puede recibir una puntuación menor a la esperada.

32.14 Resumen automático

En resumen automático, una métrica clásica es ROUGE, que compara el resumen generado con uno o más resúmenes de referencia. Se basa también en coincidencias de n-gramas y secuencias compartidas.

Como en traducción, esto ayuda, pero no captura completamente fidelidad, coherencia ni utilidad real del resumen.

32.15 Modelado de lenguaje y perplexity

En modelado de lenguaje, una métrica conocida es la perplexity, que refleja cuán bien el modelo predice una secuencia de texto. En términos generales, una perplexity más baja indica mejor capacidad predictiva.

Sin embargo, una mejor perplexity no siempre implica mejores resultados en todas las tareas derivadas o mejor calidad percibida por personas.

32.16 Generación abierta de texto

Evaluar generación abierta es especialmente difícil. El texto puede ser correcto y útil sin parecerse a ninguna referencia exacta. Además, importan dimensiones como coherencia, naturalidad, fidelidad, ausencia de toxicidad o valor práctico.

Por eso, en generación suele ser necesario complementar métricas automáticas con evaluación humana.

32.17 Evaluación humana

La evaluación humana sigue siendo fundamental en muchas tareas de NLP. Permite juzgar aspectos que las métricas automáticas no capturan bien: claridad, utilidad, naturalidad, adecuación al contexto, fidelidad y consistencia.

Su principal desventaja es el costo y la dificultad de escalarla, pero en aplicaciones importantes suele ser insustituible.

32.18 Conjuntos de entrenamiento, validación y prueba

Una evaluación confiable requiere separar correctamente los datos. En general, se usan conjuntos de entrenamiento, validación y prueba para evitar que el modelo se evalúe sobre ejemplos que ya conoce.

Si no respetamos esta separación, podemos obtener métricas artificialmente infladas que no reflejan el rendimiento real fuera de muestra.

32.19 Sobreajuste y generalización

Un modelo puede funcionar muy bien sobre los datos con los que fue ajustado y, aun así, generalizar mal a nuevos textos. Evaluar correctamente significa medir justamente esa capacidad de generalización.

Por eso, no basta con observar la pérdida de entrenamiento ni ejemplos favorables. Hace falta una evaluación independiente y rigurosa.

32.20 Robustez y cambio de dominio

Otra dimensión importante es la robustez. Un sistema puede rendir bien en un dominio y degradarse mucho cuando cambia el tipo de texto, el estilo, el vocabulario o el contexto de uso.

Por eso, en NLP conviene probar modelos en escenarios variados y no asumir que un buen resultado en un dataset implica buen comportamiento universal.

32.21 Comparación conceptual

Tarea Métricas comunes Qué capturan bien Qué pueden dejar afuera
Clasificación Accuracy, precision, recall, F1 Acierto estructurado sobre etiquetas. Impacto real de errores y distribución por casos.
Traducción BLEU y métricas relacionadas Coincidencia con referencias. Naturalidad y equivalencias semánticas no literales.
Resumen ROUGE Superposición con resúmenes de referencia. Fidelidad, claridad y utilidad real.
Modelado de lenguaje Perplexity Capacidad predictiva token a token. Calidad total de salida en tareas complejas.

32.22 Ejemplo en Python: métricas para clasificación

Este ejemplo muestra cómo calcular métricas clásicas de evaluación en una tarea de clasificación de texto con scikit-learn. Lo importante es observar que no nos quedamos con una sola medida, sino que miramos varias dimensiones del rendimiento.

from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, confusion_matrix

y_real = [1, 0, 1, 1, 0, 0, 1, 0]
y_pred = [1, 0, 1, 0, 0, 0, 1, 1]

print("Accuracy :", accuracy_score(y_real, y_pred))
print("Precision:", precision_score(y_real, y_pred))
print("Recall   :", recall_score(y_real, y_pred))
print("F1-score :", f1_score(y_real, y_pred))
print("Matriz de confusion:")
print(confusion_matrix(y_real, y_pred))

Este tipo de salida permite entender no solo cuántos aciertos hubo, sino también cómo se reparten los errores y qué compromiso existe entre precisión y cobertura.

32.23 Qué debes recordar de este tema

  • La evaluación es indispensable para saber si un modelo de NLP realmente funciona.
  • No existe una única métrica válida para todas las tareas.
  • En clasificación suelen usarse accuracy, precision, recall, F1 y matriz de confusión.
  • En traducción, resumen y generación las métricas automáticas son útiles pero insuficientes por sí solas.
  • La evaluación humana sigue siendo clave en tareas complejas de lenguaje.
  • También importa medir generalización, robustez y comportamiento fuera del dominio de entrenamiento.

32.24 Conclusión

Evaluar modelos de NLP es mucho más que reportar una cifra. Implica elegir métricas adecuadas, analizar errores, validar con datos no vistos y entender qué aspectos del problema quedan fuera de los números.

Cuanto más sofisticada es la tarea, más importante resulta combinar evaluación automática con criterio humano y conocimiento del contexto de uso.

En el próximo tema estudiaremos la interpretación de modelos de lenguaje, una cuestión clave para entender mejor por qué los modelos producen ciertas salidas y cómo analizar su comportamiento interno.