34. Caso práctico completo de análisis de texto

34.1 Introducción

Después de recorrer conceptos, modelos, métricas y aplicaciones, conviene cerrar el curso con una mirada integradora. En este tema construiremos mentalmente un caso práctico completo de análisis de texto, siguiendo el flujo típico de un proyecto real.

La idea no es presentar una aplicación industrial gigantesca, sino mostrar cómo se conectan entre sí los distintos pasos vistos a lo largo del curso: definición del problema, recolección de datos, preprocesamiento, modelado, evaluación, interpretación y uso final.

34.2 Problema elegido

Tomaremos como ejemplo una aplicación para analizar opiniones de usuarios sobre películas. El objetivo será clasificar reseñas como positivas o negativas y, además, ofrecer herramientas didácticas para explorar el comportamiento del sistema.

Este tipo de problema es especialmente útil porque reúne clasificación de texto, análisis de sentimiento, interpretación de resultados y comparación entre enfoques clásicos y enfoques más expresivos.

34.3 Definir bien el objetivo

Un proyecto de NLP no comienza escribiendo código, sino formulando con claridad qué queremos resolver. En este caso, algunas preguntas clave serían:

  • ¿Queremos clasificar sentimiento global o también por aspecto?
  • ¿Las clases serán positiva y negativa, o también neutral?
  • ¿El sistema será solo demostrativo o servirá para uso real?
  • ¿Importa más la interpretabilidad o el rendimiento máximo?

Responder estas preguntas al inicio evita tomar decisiones técnicas desconectadas del verdadero objetivo del proyecto.

34.4 Elegir los datos

Una vez definido el problema, necesitamos un conjunto de datos adecuado. Para este caso práctico, una opción razonable es usar el corpus movie_reviews de NLTK, que contiene reseñas etiquetadas como positivas y negativas.

La elección del dataset no es un detalle menor: condiciona lo que el modelo podrá aprender, cómo será evaluado y hasta qué punto generalizará fuera de ese dominio.

En NLP, la calidad del proyecto depende tanto del modelo como de la calidad, claridad y pertinencia de los datos disponibles.

34.5 Explorar antes de modelar

Antes de entrenar cualquier sistema conviene inspeccionar el dataset. ¿Cuántos documentos hay? ¿Las clases están balanceadas? ¿Qué longitud tienen las reseñas? ¿Hay ruido, duplicados o inconsistencias?

Esta exploración inicial suele revelar problemas prácticos que después impactan directamente sobre el entrenamiento y la evaluación.

34.6 Preprocesamiento razonable

En un proyecto de análisis de texto, el preprocesamiento debe ser útil, no automático por costumbre. Convertir a minúsculas, tokenizar, normalizar ciertas expresiones o manejar signos puede ayudar, pero una limpieza excesiva puede eliminar información importante.

En sentimiento, por ejemplo, quitar negaciones o intensificadores puede destruir justamente las señales que más necesitamos.

34.7 Primera línea base

Una buena práctica es comenzar con una solución simple y sólida. En este caso, una línea base razonable puede ser un pipeline clásico de TF-IDF + LogisticRegression.

Este enfoque ofrece varias ventajas: es rápido, fácil de entrenar, suele rendir bien en clasificación de texto y además permite interpretar pesos de términos con relativa facilidad.

34.8 Dividir entrenamiento y prueba

El siguiente paso es separar datos para entrenamiento y prueba. Si evaluamos sobre ejemplos ya vistos, obtenemos una imagen artificialmente optimista del sistema.

La separación entre entrenamiento, validación y prueba es esencial para medir generalización y no solo memorización.

34.9 Entrenar el modelo

Con los datos preparados, entrenamos el clasificador. En un enfoque clásico, esto implica vectorizar el texto, transformar cada documento en un vector numérico y ajustar el modelo supervisado a partir de las etiquetas.

El resultado no es solo una función que predice, sino también una representación del vocabulario y una estructura que después podremos inspeccionar.

34.10 Medir rendimiento

Una vez entrenado el sistema, llega el momento de evaluar. En una tarea binaria como esta conviene mirar accuracy, precision, recall, F1-score y matriz de confusión.

No alcanza con una sola cifra. Cada métrica muestra un aspecto distinto del comportamiento del modelo.

34.11 Analizar errores

Después de las métricas globales, hay que observar ejemplos concretos donde el sistema falla. ¿Se equivoca con ironía? ¿Con reseñas mixtas? ¿Con textos ambiguos? ¿Con vocabulario poco frecuente?

Este análisis de errores suele ser uno de los pasos más informativos de todo el proyecto, porque conecta números con fenómenos lingüísticos reales.

34.12 Interpretar el modelo

Si usamos un modelo lineal con TF-IDF, podemos inspeccionar qué palabras empujan hacia positivo y cuáles hacia negativo. Esto no explica todo, pero da una idea clara de qué señales está aprovechando el sistema.

La interpretabilidad es especialmente valiosa en un caso práctico didáctico, porque convierte el modelo en una herramienta de aprendizaje además de una herramienta predictiva.

34.13 Incorporar ejemplos manuales

Una aplicación útil no debería limitarse al dataset. También conviene permitir que el usuario escriba nuevas reseñas y obtenga una predicción en tiempo real.

Esto acerca el proyecto a una situación de uso real y ayuda a comprobar cómo responde el sistema fuera del conjunto de prueba formal.

34.14 Añadir enfoque basado en reglas

En un entorno didáctico, es muy valioso agregar también una capa sencilla basada en reglas. Por ejemplo, un pequeño análisis léxico que tenga en cuenta negaciones, intensificadores y atenuadores.

Este enfoque no compite necesariamente con el modelo supervisado, pero sí ayuda a visualizar fenómenos lingüísticos que el estudiante puede comprender de manera directa.

34.15 Comparar enfoques

Una comparación entre reglas y Machine Learning permite discutir ventajas y limitaciones de ambos mundos. Las reglas son más interpretables y explícitas; los modelos supervisados suelen generalizar mejor dentro del dominio de entrenamiento.

Ver ambos enfoques en la misma aplicación ayuda a entender que NLP no es una receta única, sino un conjunto de estrategias con distintos compromisos.

34.16 Sentimiento por aspecto

Para enriquecer el caso práctico, también puede incorporarse un análisis por aspecto. En vez de quedarse con una sola etiqueta global, el sistema intenta detectar opiniones sobre actuación, trama, final, música o imágenes.

Esto muestra una idea importante del curso: un texto puede ser globalmente mixto aunque tenga juicios muy claros sobre componentes específicos.

34.17 Persistencia del modelo

En una aplicación más cercana al uso real, no conviene reentrenar el modelo desde cero cada vez que se ejecuta el programa. Por eso, guardar y cargar el pipeline entrenado es una mejora práctica importante.

Este detalle conecta el proyecto con problemas reales de ingeniería: reproducibilidad, reutilización y tiempo de respuesta.

34.18 Interfaz de usuario

Un caso práctico completo también puede incluir una interfaz simple, por ejemplo con tkinter, que organice el flujo en pestañas: recursos, dataset, entrenamiento, evaluación, inferencia, reglas, aspectos y comparación.

Esto no solo mejora la presentación, sino que ayuda a pensar el sistema como una secuencia de etapas conectadas.

34.19 Qué aprendemos con este caso

Este tipo de proyecto enseña que el NLP aplicado no es solo “entrenar un modelo”. Incluye decisiones sobre datos, representación, evaluación, interpretación, experiencia de usuario y persistencia.

Justamente ahí radica su valor pedagógico: integra teoría y práctica en una sola aplicación comprensible.

34.20 Posibles extensiones

Una vez completado un caso como este, aparecen muchas extensiones posibles:

  • Reemplazar el modelo clásico por un modelo preentrenado.
  • Agregar nuevas clases o una clase neutral.
  • Ampliar el dominio más allá de películas.
  • Incorporar visualizaciones de errores o explicaciones.
  • Convertir la aplicación de escritorio en una aplicación web.

Estas extensiones permiten escalar el proyecto de un laboratorio didáctico a un prototipo más cercano a un producto real.

34.21 Comparación conceptual

Etapa Pregunta principal Riesgo si se descuida
Definición del problema ¿Qué queremos resolver exactamente? Construir un sistema técnicamente correcto pero irrelevante.
Datos ¿Qué ejemplos tenemos y qué representan? Aprendizaje sesgado o poco generalizable.
Modelado ¿Qué enfoque conviene usar? Complejidad innecesaria o rendimiento insuficiente.
Evaluación ¿Cómo medimos calidad real? Conclusiones engañosas.
Interpretación ¿Por qué decide lo que decide? Errores ocultos y falta de confianza.
Uso final ¿Cómo interactúa el usuario con el sistema? Una solución técnica poco usable.

34.22 Ejemplo en Python: pipeline mínimo de proyecto

Este pequeño ejemplo resume, de forma compacta, el corazón del caso práctico: datos, vectorización, entrenamiento, evaluación y uso sobre un texto nuevo.

from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

textos = [
    "la pelicula fue excelente y emocionante",
    "el final fue terrible y aburrido",
    "me gusto mucho la historia",
    "la trama fue confusa y decepcionante"
]

etiquetas = [1, 0, 1, 0]

X_train, X_test, y_train, y_test = train_test_split(
    textos, etiquetas, test_size=0.25, random_state=42
)

modelo = Pipeline([
    ("tfidf", TfidfVectorizer()),
    ("clf", LogisticRegression())
])

modelo.fit(X_train, y_train)
y_pred = modelo.predict(X_test)

print("Accuracy:", accuracy_score(y_test, y_pred))
print("Prediccion nueva:", modelo.predict(["la pelicula fue muy buena"])[0])

Aunque es un ejemplo mínimo, condensa el flujo general de un proyecto real: partir de textos etiquetados, entrenar un pipeline, medir rendimiento y aplicar el sistema sobre datos nuevos.

34.23 Qué debes recordar de este tema

  • Un proyecto de NLP completo comienza con una buena definición del problema.
  • Los datos, el preprocesamiento y la evaluación son tan importantes como el modelo.
  • Una línea base simple y bien entendida suele ser el mejor punto de partida.
  • El análisis de errores y la interpretación aportan valor práctico y didáctico.
  • La utilidad real del sistema también depende de cómo se integra en una aplicación.
  • Un caso práctico bien diseñado conecta teoría y práctica de manera natural.

34.24 Conclusión

Este caso práctico muestra cómo las piezas del curso encajan entre sí cuando se piensa en un proyecto completo: problema, datos, modelo, evaluación, interpretación y uso final forman parte de una misma cadena.

La lección importante es que un buen sistema de NLP no se construye solo con una arquitectura potente, sino con decisiones coherentes a lo largo de todo el proceso.

En el próximo tema estudiaremos las buenas prácticas en proyectos de NLP, donde resumiremos criterios clave para diseñar, evaluar y mantener este tipo de sistemas con mayor rigor.