En este documento presento un análisis completo del discurso de Mauricio Macri en la apertura de las sesiones ordinarias 2019 con mineria de textos usando R, que nos debería proporcionar suficientes herramientas para enteder cuál es el perfil político que tuvo y la relación con sus palabras.
Primero comenzamos a llamar a las librerias que vamos a utilizar para su estudio
library(tm)
package <U+393C><U+3E31>tm<U+393C><U+3E32> was built under R version 3.5.2Loading required package: NLP
package <U+393C><U+3E31>NLP<U+393C><U+3E32> was built under R version 3.5.2
library(SnowballC)
library(wordcloud)
package <U+393C><U+3E31>wordcloud<U+393C><U+3E32> was built under R version 3.5.1Loading required package: RColorBrewer
library(ggplot2)
Attaching package: <U+393C><U+3E31>ggplot2<U+393C><U+3E32>
The following object is masked from <U+393C><U+3E31>package:NLP<U+393C><U+3E32>:
annotate
library(dplyr)
package <U+393C><U+3E31>dplyr<U+393C><U+3E32> was built under R version 3.5.1
Attaching package: <U+393C><U+3E31>dplyr<U+393C><U+3E32>
The following objects are masked from <U+393C><U+3E31>package:stats<U+393C><U+3E32>:
filter, lag
The following objects are masked from <U+393C><U+3E31>package:base<U+393C><U+3E32>:
intersect, setdiff, setequal, union
library(readr)
package <U+393C><U+3E31>readr<U+393C><U+3E32> was built under R version 3.5.2
library(cluster)
Luego buscamos el archivo que decidimos descargar desde la página oficial de discursos del presidente
discurso <- read_lines("c://Users/rpardo/Downloads/DiscursoMacriNuevoVa.txt")
str(discurso)
chr "señores gobernadores; embajadores; miembros del congreso; invitados especiales; miembros del congreso; invitado"| __truncated__
PRIMER ANALISIS DEL TEXTO
str_length(discurso)
[1] 36763
El discurso de Mauricio Macri tuvo una extensión de 36.763 palabras.
LIMPIEZA DE TEXTO
Procedemos a la limpieza del discurso eliminando mayúsculas, letras que funcionan como conectores y remover puntuaciones que no son Útiles a la hora del análisis. También eliminamos los espacios correspondientes que nos genera el txt para que tratemos de disminuir al máximo la dispersión de palabras
discurso <- gsub("[[:cntrl:]]", " ", discurso)
discurso <- tolower(discurso)
discurso <- removeWords(discurso, words = stopwords("spanish"))
discurso <- removePunctuation(discurso)
discurso <- stripWhitespace(discurso)
SEGUNDO ANÁLISIS DEL TEXTO Detectando temáticas
cat("El presidente habló de economía: ",str_detect(discurso, "economía"))
El presidente habló de economía: TRUE
cat("El presidente habló de trabajo: ",str_detect(discurso, "trabajo"))
El presidente habló de trabajo: TRUE
cat("El presidente habló de educación: ",str_detect(discurso, "educación"))
El presidente habló de educación: TRUE
cat("El presidente habló de Salud: ",str_detect(discurso, "salud"))
El presidente habló de Salud: FALSE
cat("El presidente habló de Justicia: ",str_detect(discurso, "justicia"))
El presidente habló de Justicia: TRUE
cat("El presidente habló de Seguridad: ",str_detect(discurso, "seguridad"))
El presidente habló de Seguridad: TRUE
cat("El presidente habló de Ciencia: ",str_detect(discurso, "ciencia"))
El presidente habló de Ciencia: TRUE
cat("El presidente habló de energía: ",str_detect(discurso, "energía"))
El presidente habló de energía: TRUE
cat("El presidente habló de género: ",str_detect(discurso, "genero"))
El presidente habló de género: FALSE
cat("El presidente habló de transporte: ",str_detect(discurso, "transporte"))
El presidente habló de transporte: TRUE
str_detect(discurso, "economía")
[1] TRUE
El cuidado de la energía (10 veces mencionada), la pobreza (16 veces mencionada) y el trabajo (14 veces mencionado) fueron los temas más importantes que tuvo el presidente.
DETECTANDO MENCIONES A PROBLEMÁTICAS
str_detect(discurso, "desempleo")
[1] FALSE
str_detect(discurso, "desocupación")
[1] FALSE
str_detect(discurso, "tarifazo")
[1] FALSE
str_detect(discurso, "inflación")
[1] TRUE
El discurso no tuvo carga negativa y evitó tal como vemos en este informe mencionar palabras como “desempleo”, “desocupación” o “tarifazo”. Si habló de inflación y lo afrontó inclusive con las críticas de la oposición.
Ahora, para poder visualizar correctamente en una nube de texto, tenemos que realizar un cuerpo de texto juntando todos los renglones en un solo renglón.
documento <- Corpus(VectorSource(discurso))
documento
<<SimpleCorpus>>
Metadata: corpus specific: 1, document level (indexed): 0
Content: documents: 1
Como podemos ver, nustro Cuerpo de documentos está compuesto por 1 documento. Los siguientes análisis se harán a partir de este Corpus:
nuevo_Cuerpo <- tm_map(documento, PlainTextDocument)
transformation drops documents
Procedemos a mapear el nuevo cuerpo de texto del documento para que de esta manera, poder crear fácilmente una nube de palabras (wordcloud de la librería del mismo nombre) que nos muestra los términos más frecuentes usados por Mauricio Macri.
wordcloud(nuevo_Cuerpo, max.words = 130, random.order = F, colors = brewer.pal(name = "Dark2", n = 8))
“Argentinos” y “hoy” son las palabras que usó el presidente Macri con mayor frecuencia. Se puede observar una cierta tendencia a hablar de mundo relacionando a la apertura de Argentina al exterior. También se observan palabras muy relacionadas al PRO como “haciendo”, “hacer”, “cambia”, “juntos”.
nov_tdm <- TermDocumentMatrix(nuevo_Cuerpo)
nov_tdm
<<TermDocumentMatrix (terms: 1585, documents: 2)>>
Non-/sparse entries: 1585/1585
Sparsity : 50%
Maximal term length: 19
Weighting : term frequency (tf)
nov_mat <- as.matrix(nov_tdm)
dim(nov_mat)
[1] 1585 2
nov_mat <- nov_mat %>% rowSums() %>% sort(decreasing = TRUE)
nov_mat <- data.frame(palabra = names(nov_mat), frec = nov_mat)
nov_mat[1:20, ]
palabra frec
hoy hoy 30
argentinos argentinos 29
país país 26
serio serio 20
años años 19
mundo mundo 19
año año 18
ciento ciento 16
pobreza pobreza 15
cada cada 14
hacer hacer 14
vez vez 14
argentina argentina 13
trabajo trabajo 13
2015 2015 12
cambia cambia 12
camino camino 12
hace hace 12
haciendo haciendo 10
ser ser 10
nov_mat[1:10, ] %>%
ggplot(aes(palabra, frec)) +
geom_bar(stat = "identity", color = "black", fill = "#87CEFA") +
geom_text(aes(hjust = 1.3, label = frec)) +
coord_flip() +
labs(title = "Diez palabras más frecuentes en discurso de Macri", x = "Palabras", y = "Número de usos")