Este estudio analiza las “Placas conmemorativas de la ciudad de Madrid” y muestra las palabras más repetidas mediante una nube de palabras.
Estas placas exhiben en las fachadas de las casas de la ciudad la relación de los hechos sucedidos con valor histórico, de las personas relevantes que vivieron en esas fincas y también la importancia de determinados edificios singulares.
Los datos son de uso público y están albergados en la página web del Ayuntamiento de Madrid https://datos.madrid.es/portal/site/egob
En primer lugar se cargan los datos directamente a través de su link.
library(readxl)
url <- "https://datos.madrid.es/egob/catalogo/300329-0-placas-conmemorativas-madrid.xlsx"
destfile <- "placas.xlsx"
curl::curl_download(url, destfile)
placas <- read_excel(destfile, col_types = c("text", "blank", "blank",
"blank", "blank", "blank", "blank", "blank",
"text", "blank", "blank", "blank",
"blank", "blank", "blank", "blank",
"blank", "blank", "blank"))
## `col_type = "blank"` deprecated. Use "skip" instead.
A continuación se cargan el resto de librerías que se van a utilizar.
library("tm", lib.loc="~/R/win-library/3.5")
## Loading required package: NLP
library("wordcloud", lib.loc="~/R/win-library/3.5")
## Loading required package: RColorBrewer
Una vez se han cargado correctamente los datos se analiza su estructura a través de un str y summary.
str(placas)
## Classes 'tbl_df', 'tbl' and 'data.frame': 387 obs. of 2 variables:
## $ Titulo : chr "General Castaños" "Luís Vélez de Guevara" "Juan Escobedo" "Mariano José de Larra" ...
## $ Comentario: chr "Aquí estuvo la casa en que nació en 1758 el GENERAL CASTAÑOS, vencedor en Bailén de las Tropas Napoleónicas. (1"| __truncated__ "En este lugar estuvo la Igesia de San Salvador en cuya torre LUIS VÉLEZ DE GUEVARA situó la acción de su novela"| __truncated__ "En esta calle mataron al secretario de Don Juan de Austria, JUAN ESCOBEDO, el 31 de Marzo de 1578, noche del lu"| __truncated__ "Junto a este lugar se hallaban las Casas de la Moneda, donde nació el escritor MARIANO JOSÉ DE LARRA \"FIGARO\""| __truncated__ ...
summary(placas)
## Titulo Comentario
## Length:387 Length:387
## Class :character Class :character
## Mode :character Mode :character
Se dispone de información de un total de 387 placas clasificadas en dos columnas. La primera indica el nombre del personaje, acontecimiento o edificio histórico y la segunda su descripción detallada, que será el objeto de estudio.
La primera limpieza que se realiza es la eliminación de caracteres especiales incluidos en el texto.
especial.text <- function(x){
x <- gsub("‘", " ", x)
x <- gsub("’", " ", x)
x <- gsub("“", " ", x)
x <- gsub("”", " ", x)
x <- gsub("─", " ", x)
x <- gsub("_", " ", x)
x <- gsub("–", " ", x)
}
placas2 <- especial.text(placas)
Seguidamente se crea un objeto Corpus.
pcorpus=Corpus(VectorSource(placas2))
En este momento se realizan las transformaciones a minúsculas, eliminación de números, puntuación, “stopwords” en castellano, espacios en blanco y se inspecciona el resultado final limpio.
corpus_clean <- tm_map(pcorpus, tolower)
corpus_clean <- tm_map(corpus_clean, removeNumbers)
corpus_clean <- tm_map(corpus_clean, removePunctuation)
corpus_clean <- tm_map(corpus_clean, removeWords, stopwords("spanish"))
corpus_clean <- tm_map(corpus_clean, removeWords, c("aunque","iii", "rrnrrnen", "rrnrrnel"))
corpus_clean <- tm_map(corpus_clean, stripWhitespace)
Una vez realizada la limpieza del texto se puede pasar a la siguiente etapa de la creación de la nube de palabras.
En esta fase se crea la nube de palabras con una frecuencia mínima de 50 repeticiones.
wordcloud(corpus_clean, min.freq = 50, random.order = FALSE, colors=brewer.pal(5, "Set1"))
Por último se lleva a cabo un análisis de los resultados a través de una matriz de palabras TDM y se muestran aquellas palabras cuya frecuencia de repetición es superior a 100.
tdm <- TermDocumentMatrix(corpus_clean)
findFreqTerms(tdm, 100)
## [1] "antonio" "carlos" "casa" "española" "felipe"
## [6] "gran" "josé" "juan" "luis" "madrid"
## [11] "maría" "palacio" "plaza" "real" "san"
## [16] "teatro" "aquí" "año" "años" "calle"
## [21] "ciudad" "después" "dos" "españa" "guerra"
## [26] "hijo" "junto" "lugar" "muerte" "murió"
## [31] "nació" "obra" "obras" "premio" "primera"
## [36] "rey" "ser" "siglo" "tarde" "universidad"
## [41] "vida" "vivió"