Descendiente de emigrantes japoneses, Alberto Fujimori nació en Lima el 28 de julio de 1938. Estudió en el colegio Nuestra Señora de la Merced y en la Gran Unidad Escolar Alfonso Ugarte de Lima. En 1957 ingresó a la Universidad Nacional Agraria de La Molina. En 1984 fue nombrado decano de la Facultad de Ciencias de dicha universidad, de la cual poco después fue elegido rector. Fue presidente de Perú entre 1990 y 2000. Fundador de la agrupación Cambio 90, ganó las elecciones presidenciales de 1990, derrotando a Vargas Llosa, y puso en marcha un duro plan de ajuste para paliar la grave situación económica. El 5 de abril de 1992, con el apoyo del ejército, encabezó un autogolpe y disolvió el parlamento. Después de sofocar un intento de contragolpe protagonizado por varios militares (13 de noviembre), convocó unas elecciones (6 de diciembre de 1992) para un denominado Congreso Constituyente Democrático, que fueron boicoteadas por los partidos tradicionales de país.
Alberto Fujimori
library(pacman)
p_load(tidyverse, tidytext, tm, wordcloud, wordcloud2,
pdftools, patchwork, widyr, dplyr, magrittr, ggtextures,
igraph, ggraph, extrafont, RColorBrewer)
# para instalar ggtextures
# devtools::install_github("clauswilke/ggtextures")
#-----------------#
#### I.PARTICIPACIÓN CIUDADANA ####
#-----------------#
#Lectura del archivo.
library(pdftools)
discurso <- pdf_text("mensaje-1991-af.pdf")
discurso <- paste(discurso, collapse = " ")
# A) LIMPIEZA DE DATOS-----------------------------------------------------------
# Buscando los números de página
str_count(discurso, "\n[:blank:]+[:digit:]+\n")
## [1] 50
discurso <- str_replace_all(discurso, "[:blank:]{2,}", " ")
# Buscando los signos de puntuación
str_count(discurso, "[:punct:]")
## [1] 2662
discurso <- str_remove_all(discurso, "[:punct:]")
# Buscando los números
str_count(discurso, "[:digit:]")
## [1] 481
discurso <- str_remove_all(discurso, "[:digit:]")
# Guardando como un archivo de texto plano
write_lines(discurso, "mensaje-1991-af.txt")
discurso<- scan("mensaje-1991-af.txt",
encoding = "UTF-8", what = "char",
sep = "\n")
# Acontinuación cada palabra sera ordenada, una por fila
discurso <- tibble(discurso) %>%
unnest_tokens(Token,discurso) %>%
mutate(Token = removeNumbers(Token))
discurso
## # A tibble: 23,355 × 1
## Token
## <chr>
## 1 mensaje
## 2 del
## 3 presidente
## 4 constitucional
## 5 del
## 6 perú
## 7 ingeniero
## 8 alberto
## 9 fujimori
## 10 fujimori
## # … with 23,345 more rows
#Lectura del diccionario-------------------------------------------------------
library(readxl)
stopwords_es_1 <- read_excel("CustomStopWords.xlsx")
names(stopwords_es_1) <- c("Token", "Fuente")
# Al encontar espacios vacios en las filas creamos un tibble un vector vacio
# para después proceder a eliminarlas.
stopwords_es_2 <- tibble(Token = c(""), Fuente="Mis StopWords")
# En esta parte se junta el primer diccionario "stopwords_es_1" y el tibble "stopwords_es_2"
# en un solo objeto de nombre "stopwords_es".
stopwords_es <- rbind(stopwords_es_1, stopwords_es_2)
stopwords_es <- stopwords_es[!duplicated(stopwords_es$Token), ]
# B) Removiendo los stopwords---------------------------------------------------
discurso <- discurso %>% anti_join(stopwords_es)
## Joining, by = "Token"
# C) Obteniendo frecuencias por palabra-----------------------------------------
discurso_frecuencias <- discurso %>%
count(Token, sort = TRUE)
discurso_frecuencias
## # A tibble: 4,548 × 2
## Token n
## <chr> <int>
## 1 gobierno 97
## 2 perú 82
## 3 millones 79
## 4 dólares 67
## 5 país 63
## 6 nacional 61
## 7 año 57
## 8 mil 57
## 9 empresas 51
## 10 sector 50
## # … with 4,538 more rows
# Gráfico de palabras más frecuentes
library(ggtextures)
# Usamos la función inner_join
discurso_frecuencias <- discurso %>%
inner_join(discurso_frecuencias, by = c("Token" = "Token"))
# Para cambiar la textura de la barra
loadfonts(device = "win", quiet = TRUE)
img = "n.jpg"
discurso_frecuencias %>%
count(Token, sort = TRUE) %>%
filter(n > 40)%>% # Se filtra las palabras que tengan una fracuencia mayor a 78
ggplot(aes(x = reorder(Token, n), y = n)) +
geom_textured_col(image = img, color = "white", width = 0.8)+
geom_text(aes(label = reorder(Token, n)),
hjust = 1.2,vjust = 0.3, color = "black",
size = 4.5, family="Breakfast")+
labs(y = "Frecuencia de palabras",
x = NULL,
title = "PARTICIPACIÓN CIUDADANA")+
coord_flip()+
ylim(c(0, 210))+
theme_bw()+
#Hacemos visualmente mas atractivo el gráfico
theme(plot.title = element_text( hjust = 0.5,vjust = 3, color = "#EC2400", size = 30, family="Austein Script"),
axis.text.y = element_blank(),
axis.title.x = element_text(family = "Forte",
size = 12, color="#7A2617"),
axis.text.x = element_text( color = "#7A2617" , size = 10,
family="Forte"),
plot.caption = element_text(size = 7.5, color = "#7A2617"),
panel.background = element_rect(fill = c("#ffffff")),
plot.margin=unit(c(2,1,1.5,1.2),"cm"),
line = element_line(color="black",linetype = 1),
rect = element_rect(size = 0.8,
fill = "lightcyan"))
# D) Nube de palabras con el paquete wordcloud2---------------------------------
library(wordcloud2)
set.seed(2021)
wordcloud2(discurso_frecuencias,
size = 1.5,
minRotation = -0.52,
maxRotation = -0.52,
rotateRatio = 2,
backgroundColor = 'Black')
sentimientos <- read.delim("sentimientos_2.txt")
sentimientos <- as.tibble(sentimientos)
table(sentimientos$sentimiento)
##
## alegría asombro confianza disgusto ira miedo
## 619 476 1122 929 1071 1272
## negativo positivo premonición tristeza
## 4379 2728 769 1011
sentimientos <- distinct(sentimientos)
# Para encontrar el sentimiento que produce cada palabra hacemos uso de las palabras
# en común encontradas en el diccionario de sentimientos y la novela.
Lectura1_sentimiento2 <- discurso %>%
inner_join(sentimientos, by = c("Token" = "palabra"))
# Gráfico de los sentimientos mas frecuentes
library(gganimate)
library(gifski)
Lectura1_sentimiento2 %>%
dplyr::count(sentimiento) %>%
ggplot() + aes(x = fct_reorder(sentimiento, n),
y = n,
fill = sentimiento) +
geom_col(show.legend = F) + coord_flip() +
labs(title ="PARCTICIPACION CIUDADANA",
subtitle = "Alberto Fujimori",
x = "Sentimientos",
y= "Frecuencia") +
theme_bw()+
theme( plot.title = element_text(family = "Monotype Corsiva",
size = 30,
color = "black",
vjust = 0),
text = element_text(family = "Comic Sans MS",
size = 12),
line = element_line(linetype = 1),
rect = element_rect(size = 1.5,
fill = "papayawhip"))+
scale_fill_brewer(palette = "RdBu") +
enter_fade() +
exit_shrink() +
ease_aes('sine-in-out')
# El gráfico muestra el sentiento mas representativo el cuál es el negativo con
# aproximadamente 6000 palabras que representan este sentimiento.
# F) Gráfica de análisis de sentimientos----------------------------------------
contar_palabras1 <- discurso %>%
inner_join(sentimientos,
by = c("Token" = "palabra")) %>%
dplyr::count(Token, sentimiento) %>%
group_by(sentimiento) %>%
top_n(5, n)
contar_palabras1
## # A tibble: 55 × 3
## # Groups: sentimiento [10]
## Token sentimiento n
## <chr> <chr> <int>
## 1 acción positivo 14
## 2 caso miedo 17
## 3 caso negativo 17
## 4 caso tristeza 17
## 5 comercio confianza 19
## 6 competencia asombro 11
## 7 congreso disgusto 14
## 8 corrupción disgusto 11
## 9 económico positivo 14
## 10 emergencia asombro 14
## # … with 45 more rows
# G) RED DE PALABRAS------------------------------------------------------------
library(igraph)
library(ggraph)
library(grid)
# 1 recuento de bigramas palabras unidas a los sentimientos
recuento_bigramas <- Lectura1_sentimiento2 %>%
count(Token, sentimiento, sort = T)
# filtrado de palabras con animación
grafo_bigramas <- contar_palabras1 %>%
filter(n>10) |>
graph_from_data_frame()
set.seed(2001)
ggraph(grafo_bigramas, layout = "gem") +
geom_edge_link(aes(edge_alpha = n),
show.legend = TRUE,
arrow = arrow(type = "closed",
length = unit(3, "mm"),
ends = "last")) +
geom_node_point(color = "darkmagenta", size = 3) +
geom_node_text(aes(label = name), vjust = 1, hjust = 1, size= 3.8, color = "goldenrod4", )+
theme_graph()+
theme(legend.position = "left")+
labs(title= "Red de palabras con sentimientos ",
subtitle = "PARTICIPACIÓN CIUDADANA")+
theme( plot.title = element_text(family = "Monotype Corsiva",
size = 35,
color = "gray48",
vjust = 0),
plot.subtitle = element_text(family = "Breakfast",
size = 17,
color = "Black"),
plot.background = element_rect(fill = "darkseagreen1"),
legend.background = element_rect(fill= "lightgoldenrodyellow"))+
enter_fade() +
exit_shrink()
Podemos concluir que en el discurso dado pór el ex-presidente Alberto Fujimori las palabras mas usadas son Gobierno que esta a la misma ves esta relacionada con el sentimiento negativo y de miedo ; tambien encontramos la palabra emergencia y esta relaconada con el sentimiento de asombro , tristeza y negativo , podemos observar que el discurso esta nos brinda mas sentimientos negativos