Selecciona Edición
Entra en EL PAÍS
Conéctate ¿No estás registrado? Crea tu cuenta Suscríbete
Selecciona Edición
Tamaño letra

La música más alegre y más triste del mundo: un experimento con datos de Spotify

Cualquier persona con algo de conocimiento de programación y el uso de software libre puede elaborar sus listas en el servicio de 'streaming' musical. Este experimento logra dos listas con las más tristes y alegres del mundo

Un usuario marca en Spotify las canciones que más le gustan y cada lunes le llega una selección individualizada de música muy similar.

Los servicios de música en streaming como Spotify, Google Music o Apple Music almacenan en sus servidores cerca de 30 millones de canciones, y entre ellas se puede encontrar música excelente, muy buena, buena, regular, mala, penosa, deleznable y David Bisbal. A esta ingente cantidad de información hay que sumar la que generan sus usuarios al interactuar con este catálogo —por ejemplo, etiquetando qué canciones son sus preferidas; o escuchando obsesivamente esa canción—, que permite personalizar, entre otras cosas, las recomendaciones musicales. Es el mismo mecanismo que permite a Netflix predecir que alguien que ha puntuado Daredevil con cinco estrellas igual no debería perderse Jessica Jones. Un usuario marca en Spotify las canciones que más le gustan y cada lunes le llega una selección individualizada de música muy similar. No es magia, son matemáticas.

De la misma forma que estas empresas buscan continuamente patrones que les permitan mejorar sus servicios, cualquier persona con conocimientos de programación puede también hacer uso de estos datos para responder, a menor escala, sus propias preguntas. Quizá, en nuestra Alta Fidelidad particular, queremos nuestra propia lista de las canciones más tristes del mundo para poder escuchar durante el atasco de los lunes por la mañana. O quizá queremos las canciones más alegres para poner a todo trapo cuando se vuelvan a convocar elecciones: ¡dos fiestas de la democracia en tan poco tiempo!

Lo mejor de todo es que el trabajo de selección ya lo han hecho por nosotros los usuarios de Spotify al crear sus listas de reproducción públicas. Si accedemos a esos datos, podemos ver qué canciones se incluyen más en listas alegres y cuáles en listas tristes. Así que hemos desarrollado unos pequeños programas en Python —para la descarga de los datos— y R —para el posterior análisis. Hemos elegido Spotify porque es relativamente sencillo acceder a sus bases de datos. Los lectores con inquietudes técnicas pueden obtener el código utilizado en este repositorio.

Para hacernos esas dos recopilaciones que acabamos de mencionar, hemos descargado los nombres de las canciones que integran todas las listas de reproducción publicadas en Spotify que contenían en el título la palabra sad (o alguno de sus sinónimos) por una parte, y happy (y nuevamente sus sinónimos) por otra. Hemos hecho las búsquedas en inglés porque el número de listas etiquetadas en ese idioma es bastante mayor que en español (sí, hemos probado). En total hemos descargado 11.330 listas de reproducción tristes, con más casi 330.000 canciones diferentes, y 8.931 listas de reproducción alegres, con más de 350.000 temas distintos.

Una vez que tenemos estos datos, la tentación de ver limitarse a mirar qué canciones se repiten más en cada lista es fuerte. Sin embargo, eso nos daría como resultado que Sorry, de Justin Bieber, está simultáneamente entre las cinco canciones más tristes y más alegres. Hay un detalle importante: que una canción aparezca en el 10 % de las recopilaciones de música triste no significa nada si aparece en un 15 % de listas etiquetadas con términos emocionalmente asépticos (música, favoritos, etc): esperamos que la música relacionada con una sensación determinada aparezca en un porcentaje mayor de sus listas correspondientes. Para corregir esto, hemos descargado también un conjunto de datos neutro que nos permita comprobar este nivel basal de cada tema: algo más de 50000 listas de reproducción con más de 1.600.000 canciones en total.

En total hemos descargado 11.330 listas de reproducción tristes, con más casi 330.000 canciones diferentes, y 8.931 listas de reproducción alegres, con más de 350.000 temas distintos

Bien, ¿cuál es el resultado final? Después de analizar los datos según los criterios que acabamos de mencionar, hemos hecho un ránking y hemos recopilado cerca de 50 canciones de cada tipo con las que hemos confeccionado unas listas que hemos publicado: las más tristes [Spotify,YouTube] y las más alegres [Spotify,YouTube]. Están ordenadas de mayor a menor según su relevancia, pero si quieren únicamente un caballo ganador, éstos serían Build you up, de Kim Taylor, y Celeste, de Ezra Vine. Justin Bieber sigue por ahí, pero nada es perfecto.

Los resultados contienen los tipos de música que uno esperaría: mucho piano lento para la triste y ritmos animados para la alegre. No obstante, hay que tener en cuenta todas las limitaciones que conlleva el método escogido: en realidad, solamente hemos analizado un pequeño porcentaje de todas las canciones disponibles, y únicamente una minúscula proporción de todos los usuarios ha emitido su voto al publicar sus selecciones; pero incluso con esta pequeña fracción de los datos de Spotify hemos podido obtener resultados que tienen sentido.

Para llevar a cabo este proyecto no han hecho falta modernísimos equipos ni tirar de tarjeta de crédito: de los cálculos se ha encargado un portátil con casi 9 años de antigüedad que se ha dejado un par de noches descargando las listas de canciones; todo el software empleado es libre y no ha habido que pagar ni un céntimo en licencias. El análisis de datos no solamente permite la incursión de cualquiera que tenga unos mínimos conocimientos de programación y una base de datos a su disposición, sino que, en muchos casos, ni siquiera hace falta saber programar: simplemente hacen falta ganas, la pregunta que se quiera responder, los datos que podrían hacerlo, una hoja de cálculo y mucha paciencia. Miren por ejemplo lo que hace @NacionRotonda en sus ratos libres.

José María Mateos (@rinze) es analista de datos en una empresa de contenidos digitales.

Más información