11 · TF-IDF en práctica: pipeline de extremo a extremo
Construye un clasificador de texto real — TF-IDF + LogisticRegression en un Pipeline de sklearn, inspecciona la importancia de features y ajusta con GridSearchCV.
Construye un clasificador de texto real: TF-IDF + LogisticRegression en un Pipeline de sklearn — el caballo de batalla para cualquier tarea de texto tabular.
Sin esto:
Atascado explicando TF-IDF de forma abstracta sin ejecutarlo nunca sobre texto real.
La lección anterior te dio las matemáticas. Ahora construyamos algo real. Un Pipeline TF-IDF + LogisticRegression es lo primero a lo que recurre cualquier profesional de NLP al clasificar texto — corre en milisegundos, es totalmente interpretable y a menudo supera a modelos más complejos en conjuntos de datos pequeños.
Los pasos clave son:
- Vectorización TF-IDF: convierte texto crudo en una matriz dispersa donde cada columna es un token del vocabulario ponderado por TF-IDF.
- Entrenar un clasificador: LogisticRegression funciona excepcionalmente bien en features TF-IDF dispersas porque la frontera de decisión es un hiperplano en el espacio de pesos de tokens.
- Inspeccionar la importancia de features: los coeficientes aprendidos se mapean directamente a pesos de tokens — los coeficientes positivos significan que el token empuja hacia la clase positiva, los negativos hacia la clase negativa. Esto te da un modelo totalmente interpretable.
- Ajustar con GridSearchCV: los parámetros más impactantes son
ngram_range,min_df,sublinear_tfy la fortaleza de regularizaciónC.
Al final de esta lección tendrás un pipeline que se entrena, evalúa, ajusta y se explica a sí mismo — la línea base que todo modelo más complejo debe superar.
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).
Python (in browser)
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Hoja de trucos de ajuste de TF-IDF — los cuatro parámetros que más importan
¿Cuál es el rol típico de `min_df=5` en `TfidfVectorizer`?
- Un `Pipeline([('tfidf', TfidfVectorizer(...)), ('clf', LogisticRegression())])` es el caballo de batalla seguro para producción en clasificación de texto — un único artefacto para guardar, cero desviación entre entrenamiento y servicio.
- Los coeficientes de LogisticRegression son directamente interpretables como importancia de tokens — mapéalos a nombres de features mediante `pipe.named_steps['tfidf'].get_feature_names_out()` para ver qué tokens impulsan cada clase.
- Orden de prioridad para ajuste de TF-IDF: `ngram_range=(1,2)` primero, luego `min_df=5` para reducción de ruido, luego `sublinear_tf=True` para documentos largos, luego `clf__C` para regularización.
- Ejecuta siempre TF-IDF + LogReg como tu línea base antes de invertir en embeddings — supera a BERT ajustado en conjuntos de datos pequeños y se explica completamente mediante la inspección de coeficientes.
La búsqueda en Wikipedia, la búsqueda en documentos internos, los filtros de spam en la era pre-transformer — todos eran pipelines TF-IDF + modelo lineal. Los retrievers híbridos modernos combinan recuperación dispersa TF-IDF con recuperación densa basada en embeddings mediante fusión de rango recíproco (RRF), dando lo mejor de ambos mundos: coincidencia exacta de palabras clave y similitud semántica.
Si lo quitas: Sin un pipeline TF-IDF funcional, no tienes una línea base interpretable contra la que comparar los embeddings. El error más común en NLP es ir directamente a un transformer sin establecer nunca si el modelo más simple ya es suficientemente bueno.