IA para Científicos Sociales

Sesión 3.2: Análisis computacional de texto

Danilo Freire

Departament of Data and Decision Sciences
Emory University

Análisis computacional de texto

Agenda de la sesión

Primera parte

  • El texto como datos
  • Tokenización y preprocesamiento
  • Bag-of-words
  • TF-IDF
  • Análisis de sentimiento

Segunda parte

  • Topic Modeling (LDA)
  • Introducción a embeddings
  • Word2Vec y representaciones densas
  • Aplicaciones en América Latina
  • Limitaciones y próximos pasos

El texto como datos

¿Por qué analizar texto con computadoras?

  • Las ciencias sociales producen y estudian enormes cantidades de texto:
    • Discursos parlamentarios
    • Artículos periodísticos
    • Respuestas a encuestas abiertas
    • Publicaciones en redes sociales
    • Documentos legales y de política pública
  • Un investigador puede leer cientos de textos. Una computadora puede analizar millones
  • El análisis computacional de texto permite:
    • Medir temas y opiniones a gran escala
    • Descubrir patrones invisibles a la lectura manual
    • Comparar textos entre países, períodos o actores

El desafío central

Las computadoras trabajan con números.

El texto son palabras.

¿Cómo convertir palabras en números de forma que preserve el significado?

"La democracia es
 importante para el
 desarrollo"

        ↓ ???

[0.23, 0.87, 0.12,
 0.45, 0.91, 0.33]

Esta es la pregunta central del análisis de texto.

El pipeline de análisis de texto

┌─────────┐   ┌──────────────┐   ┌────────────┐   ┌───────────┐   ┌──────────┐
│ 1. Texto │──▶│ 2. Preprocesar│──▶│ 3. Represen-│──▶│ 4. Analizar│──▶│ 5. Inter- │
│ crudo    │   │ (limpiar)    │   │ tar (números)│   │ (modelo)  │   │ pretar   │
└─────────┘   └──────────────┘   └────────────┘   └───────────┘   └──────────┘


  • Paso 1: Recoger el corpus (conjunto de textos)
  • Paso 2: Limpiar: quitar puntuación, convertir a minúsculas, eliminar palabras vacías (stopwords)
  • Paso 3: Representar el texto como números (bag-of-words, TF-IDF, embeddings)
  • Paso 4: Aplicar un modelo (sentimiento, tópicos, clasificación)
  • Paso 5: Interpretar los resultados en contexto
  • Hoy nos enfocaremos en los pasos 2 a 4 con métodos clásicos (no deep learning)
  • Mañana veremos cómo los LLMs cambian este panorama

Preprocesamiento

Tokenización

  • Tokenización: dividir el texto en unidades más pequeñas (tokens)
  • Los tokens pueden ser:
    • Palabras: “la democracia es importante” → [“la”, “democracia”, “es”, “importante”]
    • N-gramas: secuencias de N palabras
      • Bigramas: [“la democracia”, “democracia es”, “es importante”]
    • Subpalabras: para modelos de lenguaje (lo veremos mañana)
  • La tokenización es el primer paso de casi todo análisis de texto
  • En R, usamos el paquete tidytext con la función unnest_tokens()
  • tidytext sigue la filosofía de tidyverse: una fila por token

Ejemplo con tidytext

library(tidytext)

tibble(texto = "La democracia es
  importante para el desarrollo") |>
  unnest_tokens(palabra, texto)

# Resultado:
#   palabra
#   <chr>
# 1 la
# 2 democracia
# 3 es
# 4 importante
# 5 para
# 6 el
# 7 desarrollo

Noten que tidytext automáticamente convierte a minúsculas.

Stopwords y limpieza

  • Stopwords (palabras vacías): palabras muy frecuentes que aportan poco significado
    • En español: “el”, “la”, “de”, “en”, “que”, “y”, “a”, “los”…
  • Las eliminamos para centrarnos en las palabras con contenido
  • Otros pasos de limpieza:
    • Quitar números y puntuación
    • Convertir a minúsculas
    • Opcionalmente, stemming: reducir palabras a su raíz
      • “democracia”, “democrático”, “democracias” → “democra-”
    • O lematización: reducir al lema (forma base)
      • “gobierna”, “gobernó”, “gobernar” → “gobernar”

Antes y después

Texto original:
"El gobierno anunció un nuevo
plan de estímulo fiscal para
reactivar la economía."

Después de limpiar:
["gobierno", "anunció", "nuevo",
 "plan", "estímulo", "fiscal",
 "reactivar", "economía"]

Palabras eliminadas:
"el", "un", "de", "para", "la"

Estas palabras son muy frecuentes
en todos los textos; no distinguen
un texto de otro.

Representaciones numéricas del texto

Bag-of-words

  • Bag-of-words (bolsa de palabras): representar un texto como un vector de frecuencias
  • Contar cuántas veces aparece cada palabra
  • Ignora el orden de las palabras (por eso se llama “bolsa”)
  • “El gato come pescado” y “El pescado come gato” tienen la misma representación
  • Simple pero sorprendentemente efectivo para muchos problemas
  • Limitaciones:
    • No captura el orden
    • No captura el significado
    • Las palabras muy frecuentes dominan

Ejemplo

Doc 1: "la economía crece"
Doc 2: "la economía no crece"
Doc 3: "la salud mejora"

Matriz término-documento:

          crece  economía  la  mejora  no  salud
Doc 1:      1      1       1    0      0    0
Doc 2:      1      1       1    0      1    0
Doc 3:      0      0       1    1      0    1

Cada fila es un "vector" que
representa el documento.
Los documentos se comparan
por la similitud de sus vectores.

TF-IDF

  • TF-IDF: Term Frequency - Inverse Document Frequency (el concepto de IDF viene de Sparck Jones, 1972)
  • Problema con bag-of-words: las palabras más frecuentes no siempre son las más informativas
  • TF-IDF pondera la frecuencia de una palabra por su rareza en el corpus:

\[\text{TF-IDF}(t, d) = \text{TF}(t, d) \times \log\left(\frac{N}{\text{DF}(t)}\right)\]

  • TF (Term Frequency): frecuencia del término en el documento
  • IDF (Inverse Document Frequency): \(\log(N / \text{documentos que contienen el término})\)
  • Una palabra que aparece mucho en un documento pero poco en el corpus tiene TF-IDF alto
  • Resultado: identifica las palabras distintivas de cada documento

Intuición

“gobierno” aparece en muchos textos → IDF bajo → poco distintiva

“deforestación” aparece solo en textos de medio ambiente → IDF alto → muy distintiva

TF-IDF responde: ¿qué palabras caracterizan ESTE documento en particular?


En tidytext:

datos_tfidf <- datos_tokens |>
  count(documento, palabra) |>
  bind_tf_idf(palabra, documento, n)

Análisis de sentimiento

¿Qué es el análisis de sentimiento?

  • Análisis de sentimiento: determinar si un texto expresa una opinión positiva, negativa o neutra
  • Método más simple: diccionarios de sentimiento
    • Listas de palabras clasificadas como positivas o negativas
    • “crecimiento”, “mejora”, “éxito” → positivo
    • “crisis”, “pobreza”, “fracaso” → negativo
  • Contar palabras positivas y negativas; comparar
  • Limitaciones importantes:
    • No captura negaciones: “no es bueno” → cuenta “bueno” como positivo
    • No captura ironía ni sarcasmo
    • Los diccionarios son dependientes del dominio
  • Aún así, funciona razonablemente bien a gran escala

Diccionarios disponibles en español

  • NRC: 8 emociones + positivo/negativo (multilingüe)
  • AFINN: puntuación -5 a +5 (necesita traducción)
  • Diccionarios académicos específicos para español

Ejemplo

"El crecimiento económico ha sido
 sólido gracias a las exportaciones"

Palabras positivas: crecimiento, sólido
Palabras negativas: (ninguna)

Sentimiento: POSITIVO (+2)

Para mayor precisión, los LLMs (Día 4) superan ampliamente a los diccionarios.

Topic Modeling

LDA: Latent Dirichlet Allocation

  • LDA (Latent Dirichlet Allocation, Blei, Ng y Jordan, 2003): el método más usado para descubrir temas en un corpus
  • Idea: cada documento es una mezcla de temas, y cada tema es una mezcla de palabras
  • LDA descubre ambas mezclas simultáneamente
  • Ejemplo:
    • Tema 1 (economía): “crecimiento”, “inflación”, “PIB”, “empleo”
    • Tema 2 (salud): “hospital”, “vacunación”, “pandemia”, “médicos”
    • Documento X: 70% tema 1 + 30% tema 2
  • El usuario elige el número de temas (K)
  • LDA es un modelo generativo: asume que los documentos fueron “generados” por este proceso de mezcla

El proceso generativo de LDA

Para cada documento:
  1. Elegir una mezcla de temas
     (ej: 70% economía, 30% salud)

  2. Para cada palabra:
     a. Elegir un tema según la mezcla
     b. Elegir una palabra del tema

Resultado:
  "El crecimiento [economía]
   del sector [economía]
   salud [salud]
   ha mejorado [economía]
   los hospitales [salud]
   públicos" [salud]

LDA hace el proceso INVERSO:
dado el texto, recupera los temas.

Interpretar temas de LDA

Lo que LDA nos da

  • Las K palabras más probables de cada tema
  • La proporción de cada tema en cada documento
  • Podemos etiquetar los temas según las palabras más frecuentes

Ejemplo de resultado

Tema Palabras principales
1 economía, crecimiento, empleo, inversión
2 educación, escuelas, docentes, estudiantes
3 violencia, seguridad, crimen, policía

→ Etiquetamos: tema 1 = “economía”, tema 2 = “educación”, tema 3 = “seguridad”

Limitaciones de LDA

  • Elegir K es difícil: no hay un método definitivo
  • Los temas pueden ser incoherentes (mezclar conceptos)
  • No captura relaciones entre palabras (como lo hacen los embeddings)
  • Los temas no tienen nombre: los nombres los pone el investigador
  • Es un modelo probabilístico: resultados pueden variar entre ejecuciones
  • Para textos cortos (tweets, respuestas breves), LDA funciona mal porque cada documento tiene muy pocas palabras para estimar distribuciones de tópicos
  • Los LLMs modernos pueden hacer este trabajo mucho mejor (Día 4)

Introducción a embeddings

Limitaciones de bag-of-words y TF-IDF

  • Bag-of-words y TF-IDF son representaciones dispersas (sparse)
    • Cada palabra es una dimensión independiente
    • No capturan significado ni relaciones semánticas
    • “perro” y “can” son tan diferentes como “perro” y “democracia”
  • Problemas:
    • Sinónimos: palabras diferentes, significado igual
    • Polisemia: misma palabra, significados diferentes
    • Orden: “el gato come pescado” = “el pescado come gato”
  • Solución: representaciones densas que capturan significado

Disperso vs. Denso

Bag-of-words (disperso):
"perro" = [0,0,0,1,0,0,0,0,0,0...]
           (10,000 dimensiones,
            casi todas cero)

Embedding (denso):
"perro" = [0.23, -0.45, 0.12, ...]
           (300 dimensiones,
            todas con valores)

Los embeddings codifican
SIGNIFICADO en cada dimensión.

¿Qué son los embeddings?

  • Un embedding es un vector denso que representa una palabra (o texto)
  • Las palabras con significados similares tienen vectores cercanos
  • La idea central: “una palabra se conoce por la compañía que frecuenta” (Firth, 1957)
  • Si dos palabras aparecen en contextos similares, tienen significados similares
    • “El ___ ladra fuerte” → perro, can, cachorro
    • Estos deberían tener embeddings cercanos
  • Métodos clásicos: Word2Vec (Google, 2013), GloVe (Stanford, 2014)
  • Métodos modernos: BERT, GPT (veremos mañana)

Embeddings en 3D

Las palabras similares se agrupan en el espacio de embeddings.

Word2Vec: la idea

  • Word2Vec (Mikolov et al., 2013): entrenar una red neuronal para predecir palabras a partir de su contexto
  • Dos arquitecturas:
    • CBOW (Continuous Bag of Words): predecir la palabra central dado el contexto
    • Skip-gram: predecir el contexto dada la palabra central
  • El “subproducto” del entrenamiento son los embeddings
  • Propiedades emergentes:
    • Aritmética de vectores: rey - hombre + mujer ≈ reina
    • Analogías: París:Francia :: Madrid:España

King - Man + Woman = Queen

Los embeddings capturan relaciones semánticas como operaciones vectoriales.

Embeddings preentrenados

  • Entrenar embeddings requiere muchísimos datos (miles de millones de palabras)
  • En la práctica, usamos embeddings preentrenados:
    • Word2Vec en Google News (inglés)
    • fastText (Facebook): disponible para español
    • GloVe (Stanford)
  • Para español:
    • Spanish Billion Words Corpus
    • fastText embeddings para español
  • Cómo usarlos: cargar los embeddings y buscar el vector de cada palabra

Usando embeddings en R:

# Con text2vec
library(text2vec)

# Cargar embeddings preentrenados
embeddings <- readRDS("embeddings_es.rds")

# Obtener vector de una palabra
vec_democracia <- embeddings["democracia", ]

# Encontrar palabras similares
sim <- sim2(
  embeddings,
  matrix(vec_democracia, nrow = 1)
)
head(sort(sim[,1], decreasing = TRUE))

Embeddings de documentos

  • Los embeddings de palabras representan palabras individuales
  • Pero muchas veces queremos representar documentos completos
  • Enfoques simples:
    • Promedio de los embeddings de las palabras del documento
    • Promedio ponderado por TF-IDF
  • Enfoques más sofisticados:
    • Doc2Vec: extensión de Word2Vec para documentos
    • Sentence-BERT: embeddings de oraciones con transformers
  • Los embeddings de documentos permiten medir similaridad entre textos

Búsqueda semántica

Con embeddings, podemos buscar textos por significado, no solo por palabras exactas.

Aplicaciones en América Latina

Análisis de discursos políticos

Ejemplos de investigación:

  • Análisis de discursos presidenciales
    • ¿Cómo cambia el tono según el contexto económico?
    • ¿Qué temas dominan en cada país?
  • Comparación de programas partidarios
    • Posicionamiento ideológico automático
    • Evolución de agendas a lo largo del tiempo
  • Debates parlamentarios
    • Polarización del lenguaje
    • Redes de co-aparición de temas

Datos disponibles:

  • ParlSpeech: discursos parlamentarios de varios países
  • Manifesto Project: programas de partidos codificados
  • Latin American Presidential Speeches: colecciones académicas
  • Repositorios gubernamentales: actas, leyes, decretos


El desafío principal es el acceso a datos estructurados y digitalizados.

Análisis de redes sociales

Aplicaciones:

  • Detección de desinformación
    • Identificar narrativas falsas
    • Mapear redes de difusión
  • Sentimiento hacia políticas públicas
    • Reacciones a anuncios gubernamentales
    • Evolución de la opinión pública
  • Movilización social
    • Identificar hashtags emergentes
    • Predecir protestas

Consideraciones:

  • Sesgos de representatividad: los usuarios de redes no son la población general
  • Bots y cuentas falsas: distorsionan el análisis
  • Cambios en APIs: X (Twitter) restringió acceso
  • Ética: privacidad, consentimiento


Los LLMs (Día 4) están transformando este campo: pueden clasificar, resumir y extraer información mucho mejor que los métodos clásicos.

Análisis de medios de comunicación

Aplicaciones:

  • Agenda setting: ¿qué temas cubren los medios?
  • Framing: ¿cómo se presenta cada tema?
  • Sesgo mediático: diferencias entre medios
  • Cobertura electoral: equidad y tono

Métodos:

  • TF-IDF para identificar temas distintivos
  • LDA para descubrir frames
  • Sentimiento para medir tono
  • Embeddings para similaridad temática

Proyectos relevantes:

  • GDELT Project: noticias globales en tiempo real
  • Media Cloud: análisis de ecosistemas mediáticos
  • Observatorios de medios: en varios países latinoamericanos


Ejemplo de pregunta:

¿La cobertura de la economía en medios argentinos es más negativa que en medios uruguayos?

→ TF-IDF + sentimiento + comparación

Análisis de respuestas abiertas

El problema:

  • Las encuestas incluyen preguntas abiertas
  • “¿Cuál es el principal problema del país?”
  • Codificar manualmente miles de respuestas es costoso

Solución con NLP:

  1. Tokenizar y limpiar las respuestas
  2. TF-IDF para identificar categorías
  3. Clustering para agrupar respuestas similares
  4. LDA para descubrir temas
  5. O mejor: usar un LLM para clasificar automáticamente

Ejemplo:

Respuestas abiertas:
"La economía está muy mal"
"No hay trabajo"
"La inflación nos mata"
"Mucha inseguridad"
"Los políticos son corruptos"

Clustering identifica:
- Cluster 1: Economía (3)
- Cluster 2: Seguridad (1)
- Cluster 3: Política (1)

Mucho más rápido que
codificación manual.

Limitaciones de los métodos clásicos

Bag-of-words / TF-IDF:

  • No capturan orden de palabras
  • No capturan significado
  • Dependen de stopwords predefinidas
  • Sensibles a errores ortográficos

LDA:

  • Elegir K es arbitrario
  • Temas pueden ser incoherentes
  • Malo para textos cortos
  • No captura relaciones entre temas


Los LLMs (transformers) superan estas limitaciones.

Mañana veremos cómo BERT, GPT y otros modelos revolucionan el análisis de texto.

Resumen de la sesión

Métodos clásicos:

  • Tokenización: dividir texto en palabras
  • Stopwords: eliminar palabras vacías
  • Bag-of-words: contar frecuencias
  • TF-IDF: ponderar por rareza
  • LDA: descubrir temas latentes

Representaciones:

  • Dispersas: un vector enorme con casi todos ceros
  • Densas (embeddings): vectores compactos que capturan significado
  • Word2Vec: embeddings de palabras
  • Doc2Vec: embeddings de documentos


Estos métodos son el fundamento. Los LLMs los mejoran en casi todo, pero entender los conceptos básicos es clave.

Próximos pasos

  • Laboratorios (3.3 y 3.4):
    • Clustering y PCA con datos de países latinoamericanos
    • Análisis de textos políticos con TF-IDF y LDA
  • Mañana (Día 4): LLMs y aplicaciones avanzadas
    • ¿Qué son los transformers?
    • BERT, GPT y modelos de lenguaje
    • Cómo usar LLMs para investigación
    • APIs y aplicaciones prácticas

Nos vemos en el laboratorio.

Nos vemos en el laboratorio