Introducción

En este informe, exploramos el mensaje a la Nación del expresidente Martín Vizcarra, pronunciado el 28 de julio de 2019. El análisis se centra en la frecuencia de palabras, el contenido emocional del discurso y la representación visual de sus principales temas.

El objetivo es descubrir qué palabras y sentimientos dominaron el discurso y cómo estas reflejan las prioridades del gobierno de turno.


I. Lectura y limpieza del texto

library(pacman)
p_load(tidyverse, tidytext, tm, wordcloud2, pdftools,
       patchwork, widyr, dplyr, magrittr, gganimate, stopwords, readxl, forcats)

1. Lectura del PDF

discurso1 <- pdf_text("mensaje-2019-01-vizcarra.pdf") %>% 
  paste(collapse = " ")
nchar(discurso1)
## [1] 70656

2. Preprocesamiento del texto

discurso1 <- discurso1 %>%
  str_remove_all("MARTÍN VIZCARRA CORNEJO|MENSAJE A LA NACIÓN|PRESIDENTE DE LA REPÚBLICA") %>%
  str_remove_all("\\d+")
write_lines(discurso1, "Discurso_Vizcarra_2019.txt")

discurso1 <- scan("Discurso_Vizcarra_2019.txt", encoding = "UTF-8", what = "char", sep = "\n")

II. Construcción del corpus

1. Tokenización

discurso1 <- tibble(discurso1) %>% 
  unnest_tokens(Token, discurso1) %>% 
  mutate(Token = removeNumbers(Token))

2. Eliminación de stopwords

stopwords_es_1 <- read_excel("CustomStopWords.xlsx")
names(stopwords_es_1) <- c("Token", "Fuente")

stopwords_es <- rbind(stopwords_es_1, tibble(Token = "", Fuente = "Manual"))
stopwords_es <- stopwords_es[!duplicated(stopwords_es$Token), ]

discurso1 <- discurso1 %>% 
  anti_join(stopwords_es) %>%
  filter(Token != "república", Token != ",") %>%
  mutate(Token = str_replace_all(Token, c("perú" = "país", 
                                          "peruanas" = "peruanos", 
                                          "señoras" = "señores", 
                                          "señor" = "señores", 
                                          "señoreses" = "señores")))

III. Frecuencia de palabras

Palabras más frecuentes

frecuencias_top15 <- discurso1 %>%
  count(Token, sort = TRUE) %>%
  top_n(15, n)

frecuencias_top15
## # A tibble: 15 × 2
##    Token           n
##    <chr>       <int>
##  1 país          103
##  2 año            64
##  3 millones       44
##  4 nacional       41
##  5 peruanos       41
##  6 mil            36
##  7 gobierno       34
##  8 salud          28
##  9 ley            26
## 10 soles          26
## 11 regionales     25
## 12 proyectos      23
## 13 crecimiento    22
## 14 desarrollo     22
## 15 política       21

Visualización animada

grafico_animado <- frecuencias_top15 %>%
  mutate(frame = row_number()) %>%
  ggplot(aes(x = fct_reorder(Token, n), y = n, fill = Token)) +
  geom_col() +
  coord_flip() +
  labs(title = "Top 15 palabras más frecuentes",
       subtitle = "Discurso Presidencial - 28 julio 2019",
       x = "Palabra", y = "Frecuencia") +
  theme_minimal() +
  theme(legend.position = "none") +
  transition_states(frame, transition_length = 2, state_length = 2) +
  enter_fade() +
  exit_fade()
animate(grafico_animado, nframes = 60, fps = 2)

Comentario: El gráfico muestra que las palabras más frecuentes fueron:
gobierno, peruanos, proyectos, país, democracia, desarrollo, justica , servicio, entre otras.
Estas reflejan los temas centrales del discurso: fortalecimiento del gobierno, desarrollo, y servicio público.


IV. Nube de palabras

frecuencias_palabras <- discurso1 %>%
  count(Token, sort = TRUE)

wordcloud2(data = frecuencias_palabras,
           size = 0.4,
           color = "random-light",
           backgroundColor = "black",
           shape = "circle")

V. Análisis de sentimientos

1. Lectura del léxico NRC

sentimientos <- read.delim("sentimientos_2.txt") %>%
  as_tibble() %>%
  distinct()

table(sentimientos$sentimiento)
## 
##     alegría     asombro   confianza    disgusto         ira       miedo 
##         618         476        1122         929        1071        1272 
##    negativo    positivo premonición    tristeza 
##        2986        2141         769        1011

2. Unión con el texto

discurso_sentimiento1 <- discurso1 %>%
  inner_join(sentimientos, by = c("Token" = "palabra"))

3. Frecuencia de sentimientos

discurso_sentimiento1 %>%
  count(sentimiento) %>%
  ggplot(aes(x = fct_reorder(sentimiento, n), y = n, fill = sentimiento)) +
  geom_col(show.legend = FALSE) +
  labs(title = "Frecuencia de sentimientos en el discurso",
       subtitle = "Mensaje presidencial 28 julio 2019",
       x = "Sentimientos", y = "Frecuencia") +
  coord_flip() +
  theme_bw()

4. Top 3 palabras por sentimiento

top3_palabras <- discurso_sentimiento1 %>%
  count(Token, sentimiento, sort = TRUE) %>%
  group_by(sentimiento) %>%
  slice_max(n, n = 3)

ggplot(top3_palabras, aes(x = fct_reorder(Token, n), y = n, fill = sentimiento)) +
  geom_col(show.legend = FALSE) +
  facet_wrap(~ sentimiento, scales = "free", ncol = 3) +
  labs(title = "Top 3 palabras por sentimiento",
       subtitle = "Discurso presidencial Vizcarra 2019",
       x = "Palabra", y = "Frecuencia") +
  theme_bw() +
  coord_flip()

Interpretación final: El análisis de sentimientos muestra un predominio de emociones como confianza, alegría, positivo y anticipación. Esto sugiere que el discurso buscó transmitir esperanza y compromiso con el cambio, resaltando un tono positivo general.


Conclusiones

El análisis del discurso presidencial del 28 de julio de 2019 mediante técnicas de minería de texto nos permite observar:

  • Los conceptos más repetidos giran en torno al trabajo del gobierno, ciudadanía, justicia y país.
  • El discurso transmite emociones predominantemente positivas como confianza y alegría.
  • La metodología permite identificar de forma objetiva los énfasis discursivos del mensaje.

Este tipo de análisis automatizado ofrece una mirada clara y replicable sobre los temas centrales y el tono emocional utilizado en discursos políticos.