Detectando contenido explícito en las letras de las canciones

Por: Manuel Moussallam

Hemos investigado un poco sobre cómo detectar automáticamente contenido explícito en canciones utilizando solo la música en sí y sin metadatos adicionales. Dado que es un tema sensible y subjetivo, no queríamos usar un modelo de caja negra, sino construir un sistema modular cuyas decisiones se remontan a algunas palabras clave que se detectan en la canción. Nuestro sistema ofrece resultados prometedores, pero NO lo consideramos adecuado para etiquetar canciones como explícitas de manera totalmente automatizada.

Seamos explícitos

Cuando se trata de averiguar qué letras son explícitas, no hay un consenso general. Obviamente es un problema cultural, con muchas consideraciones sobre la audiencia prevista y el contexto de escucha. Como es el caso con las películas, el objetivo principal de etiquetar una pieza como «explícita» es proporcionar orientación para determinar qué tan adecuado es para un público objetivo. Esto a menudo se conoce como «asesoría parental» porque la audiencia en mente es principalmente niños. Si está interesado, se han realizado estudios científicos sobre el impacto del contenido explícito en los niños, pero de eso no se trata nuestra investigación.

Hay un muy buen artículo de Wikipedia sobre la creación de la etiqueta de asesoramiento parental para la música. A pesar de su definición imprecisa, generalmente se admite que un lenguaje fuerte (palabras usadas para maldecir y términos sexuales), representaciones de violencia y discurso discriminatorio caen dentro del alcance de lo que no es adecuado para que los niños escuchen en una canción y, por lo tanto, deben marcarse como contenidos explícitos. Por supuesto, esta definición está abierta a varias interpretaciones.

Actualmente, solo los humanos toman decisiones sobre si una canción debe etiquetarse como explícita o no. La persona a cargo de esto suele ser alguien que trabaja en un sello musical y sigue las pautas internas establecidas por la empresa. Cuando las canciones se entregan a servicios de streaming como el nuestro, a veces van acompañadas de la etiqueta «explícita», y otras no.

Cuando no se proporciona una etiqueta, puede significar que la canción es adecuada para todos los públicos, pero también puede significar que no se tomó ninguna decisión por parte de la etiqueta con respecto a su carácter explícito. Hay una parte sustancialmente grande de nuestro catálogo que pertenece a esta categoría.

Antes de preguntarnos si podríamos construir un sistema que pudiera hacer esto automáticamente, analizando la música, estudiamos el problema desde un punto de vista humano. Tener que decidir qué canción debe etiquetarse como explícita y cuál no debe ser una tarea compleja, requiere una comprensión de alto nivel de las expectativas culturales e implica mucha subjetividad.

Detección explícita de contenido como un problema científico

Dejemos de lado las consideraciones anteriores y ahora supongamos que existe un método determinista para decidir si una canción debe etiquetarse como explícita o no. El propósito de nuestra investigación es tratar de descubrir este método.

El problema se puede enmarcar como una clasificación binaria: dada una canción X, ¿podemos encontrar una función f que produzca 1 si la canción es explícita o 0 si no lo es? Por ejemplo, si X es “All Eyez On Me” de 2Pac, esperamos f (X) = 1 mientras que si X es esta canción, entonces f (X) = 0.

Como la mayoría de las tareas de clasificación en la actualidad, puede ser una buena idea utilizar técnicas supervisadas de aprendizaje automático (ML).

Un enfoque modular y explicable.

Si le pidieran que etiquetara las canciones como explícitas o no, ¿cómo procedería? Una respuesta natural es mirar las palabras pronunciadas por los cantantes; Si aparecen «palabras explícitas» en la letra, se debe aplicar la etiqueta explícita. Esa es una respuesta simple, pero podría decirse que es la mejor, según una investigación reciente que la compara con enfoques de aprendizaje automático más complejos.

Ahora, ¿qué pasa si no tienes acceso al texto de la letra? Eso es bastante común cuando se trata de millones de canciones. Si eres un aficionado al aprendizaje automático, podrías decir: construyamos un gran conjunto de datos anotados y entrenemos un clasificador supervisado para hacerlo desde audio. Este enfoque se llama ML de extremo a extremo o, a veces, de caja negra. Una familia de tales modelos son las redes neuronales profundas. Se han utilizado con gran éxito en tareas de clasificación de imágenes, oraciones, videos y, por supuesto, música.

Sin embargo, un inconveniente común es su falta de interpretabilidad. De hecho, una vez que se entrena el sistema (por ejemplo, haciéndolo aprender de un conjunto de ejemplos anotados), no es fácil explicar cómo toma sus decisiones sobre nuevas muestras que no se han visto durante el entrenamiento.

Si bien podemos evaluar el rendimiento del modelo en el conjunto de ejemplos conocidos, no se puede asociar fácilmente su salida a elementos tangibles de la entrada, como características musicales o letras cantadas. No obstante, probamos este enfoque de caja negra de ML, pero también queríamos probar otro sistema más confiable, cuyas decisiones podrían justificarse fácilmente. Tal sistema generalmente se llama ML explicable.

Afortunadamente, en nuestro equipo, tenemos una estudiante de doctorado, Andrea Vaglio, que está trabajando en extraer información lírica de la música. Una forma de detectar el contenido explícito es primero obtener una transcripción de las letras cantadas, y luego simplemente usar la presencia o ausencia de palabras de un conjunto de «lenguaje explícito» para decidir si etiquetar la canción como explícita o no.

Obtener una transcripción exacta de una voz cantada mezclada con música es una tarea muy difícil. Ya es mucho más fácil si solo puedes extraer la parte vocal de la canción. En Deezer, desarrollamos una herramienta llamada Spleeter. Está disponible gratuitamente para que todos lo usen y hace un buen trabajo al extraer voces de las canciones.

Aún así, la detección de palabras clave pronunciadas a partir de voces que cantan, incluso cuando están aisladas, es un problema complejo, y gran parte de nuestra contribución aquí es proponer un sistema para hacer precisamente eso. Se llama Sistema de detección de palabras clave y es la principal contribución de este trabajo.

Una vez que tenga la probabilidad de presencia de todas las palabras en su diccionario «explícito», será fácil tomar una decisión. Utilizamos un clasificador binario simple para eso, cuyos resultados pueden vincularse directamente a las probabilidades de presencia de «palabras explícitas».

Equilibrando los Géneros Musicales

Uno de los inconvenientes habituales de hacer aprendizaje automático es cuando su modelo no aprende lo que cree que hace, sino que solo se adapta a un sesgo en sus datos de muestra. En el análisis musical, este fenómeno se llama «caballo». En el caso de la detección explícita de contenido, el sesgo más importante a considerar es en los géneros musicales.

No sorprenderá a nadie que muchas canciones de rap contengan letras explícitas. Más que canciones country, por ejemplo. Sin embargo, hay canciones de rap no explícitas y hay canciones country explícitas. Si no se tiene cuidado al diseñar su experimento, puede terminar con un sistema que en lugar de detectar letras explícitas, detectará canciones de rap, simplemente porque tienen, en promedio, una mayor probabilidad de contener letras explícitas.

Resultados

En el documento, comparamos nuestro enfoque modular con uno de caja negra y con un sistema de Oracle que conoce las letras y detecta las palabras clave directamente en el texto (piense en ello como el límite superior de lo que podemos lograr, si nuestra palabra clave El sistema de detección fue perfecto).

Encontrarás todos los detalles sobre la configuración experimental en el documento, pero aquí están las conclusiones: aunque no es tan bueno como el de Oracle, nuestro enfoque produce resultados bastante prometedores. Cherry on the cake, supera al modelo de caja negra, que siempre es un buen resultado y va en contra de la creencia comúnmente encontrada de que hay una compensación entre la precisión y la explicabilidad de un sistema ML.

Como nota al margen, encontramos que en realidad ninguno de los sistemas considerados alcanzó niveles de precisión comparables a los humanos. Incluso el sistema de Oracle sólo tiene un puntaje F1 del 73%. Este es un hecho importante a considerar, especialmente cuando se tiene en cuenta la sensibilidad de la tarea. En este punto, no es realista automatizar completamente un proceso de decisión para el etiquetado de contenido explícito.

Una última palabra

Investigamos un primer enfoque (según nuestro conocimiento) para construir un detector de contenido explícito basado exclusivamente en audio. A pesar de alcanzar algunos resultados alentadores, nos gustaría enfatizar que esta tarea no está resuelta satisfactoriamente por las máquinas a día de hoy.

En Deezer, brindamos a nuestros socios, proveedores de música y sellos la posibilidad de marcar la canción que nos entregan como explícita. Luego, los usuarios tienen la posibilidad de filtrar contenido basado en esta etiqueta. En este proceso, solo implementamos una regla definida por el usuario, basada en los metadatos que obtenemos. No tenemos la intención de intervenir en este proceso o tomar decisiones en lugar de nuestros socios o nuestros clientes.

No obstante, se podría utilizar nuestro trabajo para construir un sistema para ayudar a los humanos en sus tareas de etiquetado. Con nuestro enfoque, no solo podemos detectar la presencia de palabras clave explícitas, sino también saber dónde se encuentran en la canción. Por lo tanto, podríamos resaltar algunas partes del audio en un anotador para facilitar su tarea. En una perspectiva más amplia, nuestro objetivo es obtener conocimiento sobre millones de canciones y aprovecharlo para mejorar el producto de Deezer. Esta investigación es otra piedra en este camino.