Bag of Words (BoW)
Intuición: BoW representa cada documento como una bolsa de palabras: ignoramos el orden y la gramática, solo contamos frecuencias. La frase "el gato persigue al ratón" y "el ratón persigue al gato" tienen el mismo vector BoW porque las palabras son las mismas, aunque el orden sea diferente.
Fórmula explicada: dᵢ = (wᵢ₁, wᵢ₂, ..., wᵢₚ), donde wᵢⱼ es el número de veces que aparece la palabra j en el documento i. Si el corpus tiene p=10,000 palabras únicas, cada documento es un vector de 10,000 números. La mayoría serán ceros (matriz dispersa).
Caso real: Un corpus de 1,000 discursos políticos. BoW convierte cada discurso en un vector de frecuencias. Luego se puede clasificar el partido político basado en las palabras que usa.
Error común: No eliminar stopwords ("el", "la", "de", "y") antes de construir BoW. Estas palabras son las más frecuentes pero no aportan información discriminativa.
TF-IDF
Intuición: TF-IDF corrige el problema de BoW: las palabras comunes (stopwords) tienen alta frecuencia en todos los documentos y no ayudan a distinguirlos. TF-IDF da peso alto a palabras que aparecen mucho en UN documento pero poco en el CORPUS. "Econometría" tiene TF-IDF alto si aparece en 1 de 100 documentos.
Fórmula explicada: TF-IDF(t,d) = TF(t,d) × log(N / DF(t)). TF = frecuencia de t en el documento d. DF(t) = número de documentos que contienen t. log(N/DF) es la IDF: palabras raras en el corpus tienen IDF grande. stopwords (presentes en casi todos los docs) tienen IDF ≈ log(1) = 0.
Caso real: En un conjunto de artículos académicos, la palabra "data" tiene TF alta en todos, pero IDF baja (todos la usan). La palabra "heterocedasticidad" tiene TF alta solo en algunos artículos e IDF alta. TF-IDF destaca esta palabra como distintiva.
Error común: Usar TF-IDF con stopwords incluidas. Aunque TF-IDF reduce su peso, no lo elimina por completo. Es mejor eliminarlas primero.
Sentiment Analysis
Intuición: El análisis de sentimiento determina si un texto expresa opinión positiva, negativa o neutral. El método más simple usa diccionarios de palabras con polaridad: "excelente" → +2, "terrible" → -2. La suma de polaridades da el sentimiento total.
Fórmula explicada: Sentiment = Σ w_t × s_t, donde w_t es la frecuencia de la palabra t y s_t es su polaridad (ej. +1 positiva, -1 negativa). Existen diccionarios validados: Lexicoder (inglés), AFINN, LIWC. En español hay menos recursos, pero se pueden traducir o construir manualmente.
Caso real: Analizar 10,000 tuits sobre un producto. Se calcula el sentimiento de cada tuit y se promedia para tener el sentimiento general. Además, se puede correlacionar con ventas para ver si el sentimiento en redes predice las ventas futuras.
Error común: Ignorar el contexto. "No es malo" tiene una palabra negativa ("malo") pero la negación ("no") invierte el sentido. Los diccionarios simples fallan con negaciones y sarcasmo.
Stance Detection
Intuición: Stance (postura) es diferente de sentimiento. Sentimiento es positivo/negativo en general. Stance es a favor/en contra/neutral respecto a UN TEMA ESPECÍFICO. Por ejemplo, "la economía va mal" tiene sentimiento negativo y stance en contra del gobierno. Pero "el clima es terrible" tiene sentimiento negativo sin stance político.
Fórmula explicada: Stance(documento, tema) ∈ {Favor, Against, Neutral}. Se entrena un clasificador supervisado donde las etiquetas son la postura hacia el tema. Las características suelen ser TF-IDF + embeddings de palabras clave del tema.
Caso real: Analizar debates parlamentarios sobre una reforma fiscal. Stance detection clasifica cada intervención como "a favor de la reforma", "en contra" o "neutral", permitiendo cuantificar el apoyo en el debate.
Error común: Confundir stance con sentimiento. Un texto puede tener sentimiento negativo ("esta reforma es un desastre") y estar a favor de la reforma (si critica a los opositores).
Preprocesamiento de Texto
Intuición: Antes de vectorizar, el texto se "limpia". Los pasos típicos son: (1) convertir a minúsculas, (2) eliminar puntuación y números, (3) tokenizar (dividir en palabras), (4) eliminar stopwords, (5) stemming o lematización (reducir palabras a su raíz: "corriendo", "corría" → "corr").
Fórmula explicada: Stemming: algoritmo heurístico que corta sufijos ("economista" → "econom"). Lematización: usa diccionario morfológico para reducir a la forma canónica ("fuimos" → "ir"). La lematización es más precisa pero más lenta.
Caso real: Para analizar 5,000 reseñas de productos, el preprocesamiento reduce el vocabulario de 50,000 a 8,000 términos únicos. Esto hace que la matriz TF-IDF sea más manejable y el modelo más rápido.
Error común: Hacer stemming en español con algoritmos diseñados para inglés. El SnowballStemmer soporta español. No usarlo produce raíces incorrectas.
Clasificación Supervisada con Texto
Intuición: Una vez que tenemos los vectores TF-IDF, podemos usar cualquier clasificador (SVM, Random Forest, regresión logística) para predecir etiquetas a partir del texto. Es como tener una tabla normal de datos, pero cada fila es un documento en lugar de un individuo.
Fórmula explicada: El pipeline es: (1) Preprocesar texto, (2) Vectorizar (BoW o TF-IDF), (3) Entrenar clasificador sobre los vectores. Para inferencia causal con texto, se usa el "texto como confounder": se incluye el vector de texto como control en una regresión para estimar otro efecto.
Caso real: Clasificar sentencias judiciales como "condena" vs "absolución" basado en el texto. Se vectoriza la sentencia con TF-IDF y se entrena un SVM lineal, que además permite ver qué palabras predicen cada clase.
Error común: Usar herramientas de NLP modernas (BERT) para tareas simples. Si una regresión logística con TF-IDF da 85% de precisión, un BERT que da 87% pero requiere 100 veces más recursos puede no valer la pena.
Analizamos un texto económico: extraemos palabras clave TF-IDF y calculamos su sentimiento.
"La economía creció fuertemente este trimestre" → tokens: [economía, creció, fuertemente, trimestre]. Stopwords eliminadas: "la", "este".
Palabras como "economía" y "creció" tienen TF alta en este texto. Si son raras en el corpus (pocos documentos las contienen), su TF-IDF será alto.
Score = +2 (creció) +1 (fuertemente) = +3. Sentimiento: Positivo. El texto se clasifica como opinión positiva sobre la economía.
Selecciona un texto de ejemplo o escribe el tuyo para ver su vectorización TF-IDF y análisis de sentimiento.