R> # Asignar un tema a cada palabra del corpus
R> tokens_etiq <- tokens_resp |>
+ mutate(tema = case_when(
+ palabra %in% c("economía", "inflación", "precios", "trabajo", "empleo") ~ "economía",
+ palabra %in% c("inseguridad", "violencia", "robos", "delincuencia") ~ "seguridad",
+ palabra %in% c("corruptos", "políticos", "gobierno") ~ "corrupción",
+ palabra %in% c("educación", "salud", "escuelas", "hospitales", "médicos", "docentes") ~ "servicios"
+ ))
R>
R> # Tema dominante de cada respuesta
R> clasificacion <- tokens_etiq |>
+ filter(!is.na(tema)) |>
+ count(id, tema) |>
+ slice_max(n, by = id, n = 1)
R>
R> # Diccionario breve de palabras negativas
R> neg <- c("mal", "inflación", "corruptos",
+ "inseguridad", "robos", "violencia",
+ "delincuencia", "grave", "deficiente",
+ "abandonadas", "faltan", "arruinan")
R>
R> # Palabras negativas por respuesta
R> tono <- tokens_resp |>
+ summarise(n_neg = sum(palabra %in% neg), .by = id)
R>
R> # Resumen: cantidad de respuestas y tono por tema
R> clasificacion |>
+ left_join(tono, by = "id") |>
+ summarise(respuestas = n(),
+ negativas = round(mean(n_neg), 2),
+ .by = tema) |>
+ arrange(desc(negativas))