Análisis de letras de Trap con Procesamiento de Lenguaje Natural (NLP). Metodología
- 5 minutos de lectura'
El trap es uno de los géneros musicales más populares entre los jóvenes en la Argentina en el último tiempo. De los artistas más escuchados el año pasado, diez oscilan entre el rap, el trap y el reggaetón. Por esto, quisimos utilizar herramientas de procesamiento de lenguaje natural (NLP) para analizar sus letras, desmitificar conceptos en torno al género y comprender de qué hablan estos artistas que causan tanto furor entre las nuevas generaciones.
Este especial es un desarrollo de LA NACION Data en el que se trabajó aproximadamente unos siete meses y forma parte de un proceso de experimentación con nuevas tecnologías para la producción periodística.
Uno de los grandes desafíos de este proyecto fue la aplicación de técnicas entrenadas en textos escritos en prosa a textos que están escritos en verso, con frases en distintos idiomas (inglés, español, italiano, entre otros) y palabras y abreviaciones propias del género que no están en los diccionarios.
Todo el procesamiento de la información se realizó en el lenguaje Python y también, R. Las visualizaciones se trabajaron en Vue.JS.
En este texto, describimos los diferentes pasos del proceso, las métricas utilizadas y el tratamiento de los datos.
Fuente de datos
El primer paso fue el scrapeo de 692 letras de canciones de los 20 principales artistas del género (Duki, Paulo Londra, Lit Killah, Neo Pistea, Ysy A, Lucho SSJ, Homer el Mero Mero, CRO, Zaramay, Cazzu, Nicki Nicole, Khea, Trueno, Ca7riel y Paco Amoroso, Wos, Ecko, Chita, Seven Kayne, Acru, Tiago PZK) hasta noviembre del 2020 de Genius.
Estos nombres fueron seleccionados por periodistas especializados en el tema.
Preprocesamiento
A partir de estas letras, se realizaron distintos pasos de preprocesamiento para calcular la frecuencia de palabras utilizadas en las canciones como tokenización y lematización. Para la limpieza de palabras, se utilizó la librería de Pyhton, Stopwords y se unificaron todas las onomatopeyas bajo la palabra “Yeah”.
En cuanto a la contabilización de aparición de términos se usó la librería Collections del mismo lenguaje de programación.
También se probaron otras técnicas como stemming pero se descartó ya que no era tan precisa como la lematización.
Estos mismos pasos se programaron en lenguaje R para verificar la obtención de resultados. Por esto, se realizaron varias iteraciones del modelo para mejorar su resultado.
Marcas, personas y lugares: Entity recognition (NER)
Para el reconocimiento de marcas se usó la librería SpaCy en español y se realizó un chequeo manual.
Se tomó una muestra de canciones con un intervalo de confianza del 95% y se clasificó manualmente palabra por palabra bajo tres etiquetas: lugares, personas y marcas para luego poder comparar las entidades que se etiquetaron manualmente contra aquellas reconocidas por el modelo.
A continuación, se realizó el análisis del error para entender aquellos casos en que el modelo no reconocía las entidades etiquetadas manualmente.
Luego de varias iteraciones, se recurrió al EntityRuler, una funcionalidad de la librería SpaCy para agregar entidades y mejorar el reconocimiento de las mismas. Para el entity ruler se usaron diferentes páginas de Wikipedia con listas de marcas para entrenar al modelo.
Así, se corrió una vez más el modelo sobre la muestra para realizar una matriz de confusión y determinar el F1 score (métrica para conocer la precisión del modelo de clasificación), que en su última versión fue de 0,61.
Finalmente, se procesó el universo de todas las letras de canciones y, una vez logrado el output, se realizó una corrección manual sobre el mismo para lograr un nivel aún mayor de precisión.
Para este paso se evaluaron otras librerías como NLTK o Stanford CoreNLP pero no lograron un nivel de precisión aceptable como SpaCy.
Índice de autorreferencia y exorreferencia
Para este paso se utilizó como input la tokenización del preprocesamiento. A diferencia del cálculo de frecuencia de palabras, se utilizaron expresiones regulares para encontrar la cantidad de veces que se menciona un artista a sí mismo y a otros.
Se consideraron las diferentes formas en las que se puede llamar a un artista. Por ejemplo, Duki, además de llamarse “Duki”, puede llamarse “Duko”.
Detección de tópicos
Se aplicó la técnica conocida como Topic Modelling con el modelo Top2Vec, el cual detecta automáticamente tópicos a partir de generar vectores de temas, documentos y palabras.
Para este paso también se probaron otros modelos (LDA, LSA) pero no lograron tanta precisión como el finalmente utilizado. Y, es el único modelo que funcionó en volúmenes no tan grandes de datos como los que trabajamos.
Clustering con KMeans
A diferencia de los pasos anteriores, en este caso se utilizó como input, variables ligadas al ritmo de cada canción como la bailabilidad, el tempo, la energía, el nivel acústico, de la API de Spotify.
A partir de estas, se aplicó la técnica conocida como clustering con el modelo KMeans, que segmenta las variables de un dataset homogéneas entre sí y heterogéneas con el resto.
Se probaron diferentes cantidades de clusters (tres a seis) pero se concluyó que tres era la cantidad más óptima de agrupación entre parecidos y separación entre diferentes.
Finalmente, luego de escuchar canciones de los tres grupos, se clasificó a cada uno de ellos como “enérgico”, “intermedio” y “lento”.
Una de las cosas a considerar es que los ritmos son similares, por eso, una de las canciones que se encuentra en grupo podría estar en el otro.
LA NACION