Letras del Folklore Argentino: ¿A qué le cantan?

El siguiente es un análisis exploratorio para resolver una curiosidad: ¿A qué le canta el folclore Argentino?. El Objetivo es, inicialmente, extraer las palabras y frases más utilizadas. Luego trataremos de ampliar el análisis tratando de agrupar las canciones en distintas categorías, descubrir temáticas en común, agrupar autores por estilo, etc.

Conjunto de Datos

library(dplyr)
library(tidytext)
library(wordcloud)
library(RColorBrewer)
library(ggplot2)
knitr::opts_chunk$set(echo = TRUE)
dat <- readr::read_csv("../../static/data/analisis-letras-folclore/datosCanciones.csv")

# Un poco de Limpieza Extra: Hay 7 Canciones que tienen 2 canciones adentro
# http://www.mifolkloreargentino.com.ar/letras-de-canciones-de-la-yunta/al-jardin-de-la-republica
dat <- dat %>% filter(!grepl("Letra y Música:",letra))

Los datos fueron extraidos de http://www.mifolkloreargentino.com.ar/:

  • Cantidad de Artistas: 132
  • Cantidad de Canciones: 3665

Hay que tener en cuenta que el Universo de canciones a analizar no es exhaustivo, está acotado a lo disponible en la fuente de datos. Otra consideración importante es que si varios artistas cantan la misma canción, las palabras y frases de dicha canción serán contabilizadas todas las veces. Algunos ejemplos de las canciones:

dat %>%
  slice(sample(1:nrow(dat), 10)) %>%
  select(artista, nombre_cancion) %>%
  head(10)
## # A tibble: 10 x 2
##    artista                  nombre_cancion
##    <chr>                    <chr>
##  1 Atahualpa Yupanqui       Zambita de alto verde
##  2 Jorge Cafrune            La familia de Juanito Laguna
##  3 Luciano Pereyra          Parecido a mí
##  4 Chaqueño Palavecino      Mataco Diaz
##  5 Cuti y Roberto Carabajal Cambalache
##  6 Antonio Tormo            Cuando no me quieras
##  7 Mercedes Sosa            Venas abiertas
##  8 Jorge Cafrune            Zamba de un cantor
##  9 Jorge Cafrune            Albahaca sin carnaval
## 10 Tamara Castro            Coplitas de pie quebrado

Pre-Análisis

¿Quiénes son los autores con más canciones en el conjunto de datos?

dat %>%
  group_by(artista) %>%
  summarise(canciones = n()) %>%
  arrange(desc(canciones)) %>%
  head(10)
## # A tibble: 10 x 2
##    artista             canciones
##    <chr>                   <int>
##  1 Jorge Cafrune             283
##  2 Chaqueño Palavecino       252
##  3 Horacio Guarany           199
##  4 Mercedes Sosa             182
##  5 Soledad Pastorutti        172
##  6 Antonio Tarrago Ros       162
##  7 Peteco Carabajal          147
##  8 Los Nocheros              124
##  9 Abel Pintos               123
## 10 Los Tekis                 111

¿Cuál es la canción más repetida en el conjunto de datos?

dat %>%
  group_by(nombre_cancion) %>%
  summarise(cantidad = n()) %>%
  arrange(desc(cantidad)) %>%
  head(10)
## # A tibble: 10 x 2
##    nombre_cancion              cantidad
##    <chr>                          <int>
##  1 Añoranzas                          7
##  2 Chacarera de un triste             7
##  3 De Simoca                          7
##  4 Entre a mi pago sin golpear        7
##  5 Canción del jangadero              6
##  6 Guitarrero                         6
##  7 Kilometro 11                       6
##  8 Amargura                           5
##  9 Balderrama                         5
## 10 Chakay manta                       5

¿Qué palabra es más cantada en el Folclore Argentino?

# TidyText no tiene por defecto un diccionario de Stop Words en Español -.-"
stopWords <- scan("http://www.webmining.cl/wp-content/uploads/2011/03/stopwords.es.txt", character())
customStopWords <- strsplit("ay am do re rem mi mi7 mim fa sol la la7 lam si si7 vas pa vos bis has estribillo", " ")[[1]]

stopWords <- c(stopWords, customStopWords)
tidyText <- dat %>%
  unnest_tokens(palabra, letra) %>%
  filter(!(palabra %in% stopWords))

top <- tidyText %>%
  count(palabra, sort = TRUE) %>%
  head(15)

ggplot(top, aes(x=reorder(palabra, n), y = n)) +
  geom_col() +
  coord_flip() +
  theme_minimal() +
  labs(title = "15 Palabras más usadas en el Folklore Argentino",
       subtitle = "El gráfico contabiliza cuántas veces la palabra aparece en la letra de alguna canción. \nAnálisis en base a más de 3600 canciones.",
       caption = "Fuente: Open Data Córdoba - blog.opendatacordoba.org",
       x = "Palabra", y = "Cantidad de veces usada")

Amor es la palabra más cantada… Qué belleza!

wordsCloud <- tidyText %>%
  count(palabra, sort = TRUE) %>%
  select(palabra, n) %>%
  head(50)

wordcloud2::wordcloud2(wordsCloud, minRotation = -pi/6, maxRotation = pi/6)

¿En cuántas canciones aparece la palabra amor?

cancionesAmor <- dat %>%
  select(nombre_cancion, letra) %>%
  distinct() %>%
  filter(grepl("amor", letra)) %>%
  nrow()
cancionesAmor
## [1] 1429

En 1429 canciones aparece la palabra Amor!