9 · Ensamblando todo: pipeline BOW + n-gramas
Envuelve preprocesamiento + vectorizador + clasificador en un Pipeline de sklearn para clasificación de texto reproducible y segura para producción.
Envuelve preprocesamiento de texto + BOW + n-gramas + clasificador en un Pipeline de sklearn para que entrenamiento e inferencia apliquen exactamente las mismas transformaciones.
Sin esto:
Los pipelines de texto en producción se desvían cuando el preprocesamiento de entrenamiento diverge del de inferencia — errores silenciosos difíciles de detectar.
Ahora tienes todos los bloques: tokenización, eliminación de stopwords, conteos BOW y features de n-gramas. En proyectos reales estos pasos pueden desincronizarse fácilmente — podrías ajustar el vectorizador en datos de entrenamiento, guardarlo por separado y luego olvidar aplicar el mismo ajuste de minúsculas en tiempo de inferencia. El resultado es un desajuste de vocabulario que degrada el rendimiento silenciosamente.
El Pipeline de sklearn resuelve esto encadenando pasos en un único objeto. Llamas a .fit() una vez en todo el pipeline, y aprende el vocabulario a partir de los datos de entrenamiento. En tiempo de inferencia .predict() ejecuta automáticamente la misma tokenización, paso a minúsculas y vectorización que vio el entrenamiento — garantizado, sin contabilidad manual.
Un Pipeline de clasificación de texto típico se ve así:
Pipeline([
("vec", CountVectorizer(...)), # paso 1: texto crudo -> matriz dispersa
("clf", LogisticRegression()) # paso 2: matriz dispersa -> predicción
])
La notación de doble guión bajo (vec__ngram_range, clf__C) permite a GridSearchCV ajustar hiperparámetros de cualquier paso por nombre — el patrón de ajuste más poderoso en NLP clásico.
Python (in browser)
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Python (in browser)
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Python (in browser)
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
La lista de verificación completa del Pipeline de clasificación de texto
¿Por qué usar el Pipeline de sklearn en lugar de ejecutar vectorizador y clasificador por separado?
- El `Pipeline([('vec', CountVectorizer(...)), ('clf', Classifier())])` de sklearn es la forma segura para producción de combinar vectorizador y clasificador — sin fuga de datos, un único artefacto para guardar y cargar.
- Usa la notación de doble guión bajo `vec__param` y `clf__param` en GridSearchCV para ajustar juntos los hiperparámetros del vectorizador y del clasificador.
- Nunca llames `.fit_transform()` en datos de prueba — Pipeline lo maneja automáticamente aplicando solo `.transform()` durante la predicción.
- Persiste todo el pipeline ajustado con `joblib.dump` — esto guarda el vocabulario, la configuración de n-gramas y los pesos del clasificador en un solo archivo, eliminando la desviación entre entrenamiento y servicio.
Todo sistema de clasificación de texto en producción usa el Pipeline de sklearn (o su equivalente en PyTorch / spaCy / Hugging Face). El patrón — vectorizador + clasificador, ajustado con validación cruzada, guardado como un único artefacto — es universal en todos los frameworks de NLP.
Si lo quitas: Sin Pipeline, el preprocesamiento de entrenamiento diverge del de inferencia — 'train/serve skew' — uno de los errores de ML en producción más comunes y difíciles de depurar.