Tarea 8: Codificación y confiabilidad con LLMs

IA para Científicos Sociales - UCU

Autor/a

Danilo Freire

Fecha de publicación

15 de abril de 2026

1 Instrucciones

Esta tarea aplica los conceptos del Laboratorio 8 a una construcción nueva: la retórica populista. En la clase medimos retórica liberal-iliberal con un codebook que ya venía dado; acá van a diseñar el suyo desde cero, codificar a mano su propio gold standard, validar, medir confiabilidad y auditar un sesgo. Responder cada pregunta escribiendo código R en los bloques indicados.

Para trabajar en esta tarea:

  1. Descarguen este archivo .qmd y discursos_ideologia.csv (en clases/dia-04/datos/) de la página del curso, o clonen el repositorio con git clone https://github.com/danilofreire/introduccion-ia-ucu.git. Mantengan el CSV en una subcarpeta datos/ junto al .qmd
  2. Necesitan Quarto y RStudio (>= 2022.07)
  3. Necesitan la API key de OpenRouter configurada en .Renviron como OPENROUTER_API_KEY (alternativa: Ollama local)
  4. Instalar quallmer desde GitHub: install.packages("pak"); pak::pak("quallmer/quallmer")
  5. Abrir este archivo en RStudio y ejecutar los bloques con Ctrl+Enter

1.1 Configuración

library(ellmer)
library(quallmer)
library(tidyverse)
library(tidytext)

set.seed(2026)

stopifnot(Sys.getenv("OPENROUTER_API_KEY") != "")

# 15 fragmentos de discurso político
discursos <- read_csv("datos/discursos_ideologia.csv", show_col_types = FALSE)

MODELO <- "openrouter/nvidia/nemotron-3-super-120b-a12b:free"

2 Codificación y validación

2.1 Pregunta 1: Diseñar un codebook para populismo

Diseñen desde cero un codebook para medir retórica populista: el grado en que un discurso apela al “pueblo” o “la gente común” en contra de una “élite”, “casta” o “los de arriba”. Usen una escala de 0 (nada populista) a 10 (muy populista). Escriban instrucciones claras de qué cuenta como populismo.

Pista: miren el codebook de la clase como molde, pero las instructions y la escala son suyas. Un type_integer con levels = list(... = "interval").

# Escriban su código aquí

Respuesta:

2.2 Pregunta 2: Codificar a mano su propio gold

Antes de confiar en el LLM, codifiquen ustedes. Elijan seis discursos del corpus y asígnenles a mano un puntaje de populismo (0 a 10) según su propio juicio y su codebook. Construyan el gold standard con qlm_humancoded().

Pista: el gold necesita una columna .id y su columna de puntaje. Es la misma estructura que usaron para las etiquetas humanas en la clase.

# Escriban su código aquí

Respuesta:

2.3 Pregunta 3: Codificar con el LLM y validar

Codifiquen los mismos seis discursos con qlm_code() y validen contra su gold con qlm_validate() a nivel de intervalo. Reporten la correlación de Pearson y el ICC. ¿El LLM coincide con su juicio?

Pista: qlm_validate(coded, gold = gold, by = "populismo", level = "interval"). Muéstrenlo como tabla con as_tibble(...) |> select(measure, value).

# Escriban su código aquí

Respuesta:

3 Confiabilidad y métodos clásicos

3.1 Pregunta 4: Confiabilidad de dos formulaciones

La confiabilidad no es solo entre corridas: también importa si el resultado cambia al reformular el codebook. Escriban una segunda versión de su codebook con instrucciones más breves (codebook_breve), codifiquen los mismos textos y comparen las dos codificaciones con qlm_compare(). ¿Son estables?

Pista: qlm_compare(coded1, coded2, by = "populismo", level = "interval", tolerance = 1) da el alpha de Krippendorff.

# Escriban su código aquí

Respuesta:

3.2 Pregunta 5: LLM vs diccionario

Comparen el LLM con un método clásico. Armen un diccionario de palabras populistas (pueblo, gente, élite, casta, corruptos, privilegiados…) y cuenten cuántas aparecen en cada discurso. Correlacionen ese conteo con el puntaje del LLM. ¿Cuánto se parecen?

Pista: tokenicen con tidytext::unnest_tokens(), cuenten las coincidencias por discurso y usen cor().

# Escriban su código aquí

Respuesta:

4 Auditoría y datos sintéticos

4.1 Pregunta 6: Sesgo por etiqueta ideológica

Auditen un sesgo distinto al del género. Pídanle al modelo que describa las propuestas económicas de un político, variando solo una etiqueta: “un político de izquierda” vs “un político de derecha”. Codifiquen las dos descripciones con un codebook de tono (-5 a +5) y comparen. ¿El modelo trata distinto a una etiqueta que a la otra?

Pista: mismo texto, solo cambia la etiqueta. Es el patrón de la slide “Medir el sesgo”, con etiquetas ideológicas en vez de nombres.

# Escriban su código aquí

Respuesta:

4.2 Pregunta 7: Viñetas sintéticas para un experimento

Los LLMs sirven para generar estímulos de experimentos. Usen chat_structured() para generar cuatro viñetas cortas que describan a un candidato, variando una sola dimensión: su postura migratoria (restrictiva / abierta). Cada viñeta debe ser plausible y comparable. Muéstrenlas.

Pista: definan un type_array de type_object con un campo postura y un campo texto. Pídanle viñetas equilibradas que solo difieran en esa dimensión.

# Escriban su código aquí

Respuesta:

5 Reflexión

5.1 Pregunta 8: Reporte para un paper

Imaginen que en su próximo paper van a usar un LLM con quallmer para medir el populismo de tres mil discursos. Escribir el párrafo de “Métodos” que describiría el uso del LLM, en estilo académico (máximo doscientas palabras). Incluir: el codebook y la escala, la validación contra una submuestra codificada a mano, la confiabilidad, el modelo y su versión, y la auditoría de sesgos.

Respuesta:

5.2 Pregunta 9: Diseño de un mini-experimento

Diseñar (no implementar) un mini-experimento para responder: “¿El LLM describe a los políticos de izquierda con un tono sistemáticamente distinto al de los de derecha?”. Especificar: hipótesis nula, variable independiente, variable dependiente, tamaño de muestra, métrica de comparación y al menos una amenaza de validez. Máximo doscientas palabras.

Respuesta:

Volver arriba