4 · Stopwords, minúsculas y puntuación
Elimina palabras de alta frecuencia y baja información para que tus vectores TF-IDF y BOW lleven señal real.
Elimina las palabras de alta frecuencia y baja información ('the', 'is', 'and') y tus vectores TF-IDF / BOW se vuelven más compactos y rápidos.
Sin esto:
Las stopwords dominan tus conteos de tokens y ahogan la señal real.
Las stopwords son palabras extremadamente comunes que tienen poco significado semántico independiente — "the", "is", "at", "on", "and", "a". En un modelo Bag of Words, estas palabras aparecerían en casi todos los documentos y por tanto aportarían casi ninguna señal discriminativa. Inflan el tamaño del vocabulario y los costes computacionales sin ayudar al modelo a aprender nada útil.
Combinado con el paso a minúsculas (para que "The" y "the" mapeen al mismo token) y la eliminación de puntuación (para que solo sobrevivan los tokens alfabéticos), el filtrado de stopwords es típicamente el paso de preprocesamiento individual más impactante para el NLP clásico.
Cuándo NO eliminar stopwords:
La excepción clásica es el análisis de sentimientos. Considera: "This product is NOT good." Elimina "not" como stopword y obtienes "product good" — el sentimiento exactamente contrario. Para tareas de sentimientos, las palabras de negación ("not", "never", "barely", "hardly") son señal crítica y deben preservarse.
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).
Guía de decisión para eliminación de stopwords — depende de la tarea
Para un clasificador de sentimientos trabajando con 'this product is NOT good', ¿deberías eliminar la palabra 'not'?
- NLTK proporciona 179 stopwords en inglés y 313 en español; siempre audítalas contra tu dominio — las listas genéricas omiten palabras de alta frecuencia y baja señal específicas del dominio.
- El preprocesamiento clásico estándar en una línea: `[t for t in word_tokenize(text.lower()) if t.isalpha() and t not in stop_words]`.
- Para análisis de sentimientos, las palabras de negación ('not', 'never') deben conservarse — invierten la polaridad de la oración.
- Los Transformers modernos omiten completamente la eliminación de stopwords — los pesos de atención hacen el trabajo de forma dinámica.
Recuperación y clasificación clásicas — Lucene/Elasticsearch elimina stopwords por defecto para acelerar las búsquedas en el índice; `CountVectorizer` y `TfidfVectorizer` de sklearn aceptan el parámetro `stop_words='english'`.
Si lo quitas: Sin eliminación de stopwords, 'the', 'is', 'a' se convierten en los tokens más comunes en cada documento — los vectores BOW están dominados por ruido y los pesos TF-IDF para palabras de contenido colapsan.