Necesitamos la mayor cantidad de letras de canciones posibles de un mismo cantante. Estos datos servirán como base para entrenar el modelo de Machine Learning que generará las nuevas letras.
Los datos los vamos a obtener de Genius. Este sitio web es muy popular porque puedes encontrar casi todo el catálogo de canciones (y letras) de un artista.
Vamos a utilizar el API de Genius para obtener la lista de canciones. Adicional, usaremos esta misma API para obtener los links desde dónde podemos ver la letra de la canción.
Ya que tengamos esta lista vamos a hacer web scrapping utilizando la librería de html-requests
para obtener las letras.Para todo este proceso utilizaremos Python
y Jupyter Notebook
.
Nota: Hacer la configuración de los Jupyter Notebooks e importar las librerías de Python puede llegar a ser tardado. Si quieres comenzar rápidamente con este proyecto te recomiendo que uses Google Colab. Esta plataforma de Google te permite usar notebooks muy parecidos a los de Jupyter. Colab también te da acceso a cierto número de GPU’s. Todo esto sin tener que configurar absolutamente nada.
client_access_token
y pega la información que copiaste como un string
urlencode
, requests
, enocde
y pandas
a tu notebook. Las vamos a necesitar para utilizar el API de Genius.
headers
. En esta variable se guardará un diccionario con un key
que se llame “Authorization” y un fstring que tenga un valor Bearer {client_access_token}
Search
, Artists
y Songs
Search
: Para obtener todas las canciones necesitamos un parametro llamado id
. Cada artista tiene uno distinto. Este parametro lo obtenemos llamando el recurso Search
y buscando el key
con el nombre id
.search_artist_id
que acepta un parametro (search_term
). Este parametro es el nombre del artista del cuál queremos el id
id
del artista, podemos obtener una lista de todas sus canciones. Para hacerlo usaremos el recurso Songs
.all_artist_songs
que acepta como parametro el id
del artista. Esta función nos regresa 2 resultados full_df
que contiene un dataframe con todas las canciones en las cuáles el artista principal tiene presencia (como vocalista, colaboración, productor, etc) y full_df_clean
que contiene un dataframe con las canciones que interpreta el artista principalmente.
requests_html
para obtener las letras de las canciones. Para esta parte del proceo vamos a hacer web_scraping. Es importante mencionar que este proceso puede ser completamente distinto al momento en el que estes viendo este tutorial. Esto ocurre debido a que dependemos enteramente de como esta organizado el HTML del sitio web.
words_from_song(url)
que acepta como parametro una url
de Genius que contenga la letra de una canción. En resumen esta función abrira la url, buscará la letra de la canción, la copiara y la dividira en oraciones. Estas oraciones serán la data que usaremos para entrenar nuestro modelo de Machine Learning.
combine_all_sentences()
que acepta como parametro la lista de oraciones que genero la función words_from_song()
. Esta función nos va a regresar todas las oraciones combinadas en una sola lista.
save_to_txt()
que acepta como parametro las lista de oraciones que genero la función combine_all_sentences()
. Esta función genera el txt y lo guarda dónde le especifiquemos.
¡Listo!, ahora tenemos las letras de todas las canciones en un formato que podrá consumir nuestro modelo de Machine Learning.
Para que conozcas como construir el modelo y entrenarlo, te invito a que visites la parte 2 de este proyecto dando click aquí.
Visita mi repo en Github, en dónde podrás descargar el código de este proyecto, dando click aqui.