Davido es un popular cantante y compositor nigeriano-estadounidense a quien todos han admirado a lo largo de los años debido a sus canciones, que en su mayoría son emocionantes y sensacionales.
El 31 de marzo de 2023, Davido lanzó su cuarto álbum ‘Eterno‘ con 17 pistas de canciones y una duración total de reproducción de 49 minutos y 12 segundos. Los fanáticos de todo el mundo habían estado esperando que este álbum saliera desde su último álbum ‘A Better Time’ en 2020. Debido a las reacciones masivas de las personas en los medios en línea, decidí realizar un análisis de este álbum. Quería entender cómo la comunidad de Twitter recibió este álbum y las interacciones detrás de él.
Para este análisis, implementé conocimientos de procesamiento de lenguaje natural (PNL), análisis de sentimiento y minería de texto. Para poder hacer esto, estudié algunos materiales y vi algunos tutoriales sobre las áreas antes mencionadas. Los tuits fueron raspados con hashtags ‘#eterno‘ y ‘#álbum atemporal‘, utilizando la biblioteca Snscrape entre el 31 de marzo y el 10 de abril de 2023.
Metodología del proceso
También te puede interesar¿Cómo encontrar valores atípicos en un conjunto de datos?Usé los siguientes pasos a continuación para llevar a cabo este análisis;
- Recopilación de requisitos de datos
- Recopilación de datos
- Limpieza de datos
- Preprocesamiento de datos
- Análisis exploratorio de datos y sentimiento
- Documentación y uso compartido
Recopilación de requisitos de datos
Esta etapa genera una lista de requisitos para definir de qué se trata este proyecto y su objetivo. Es un aspecto importante que tiene que ver con la lluvia de ideas y la investigación, ya que lo guía a uno durante todo el proceso. A través de mi análisis, quería descubrir respuestas a las siguientes preguntas;
1. ¿Qué canción le gustó más a la gente?
También te puede interesar¿Por qué las GPU y NVIDIA son las potencias de la IA?2. El artista destacado más popular del álbum.
3. ¿En qué ubicación se generaron los tweets?
4. ¿Cuáles fueron los sentimientos de los usuarios de Twitter?
5. ¿Cuáles fueron las palabras más frecuentes en los tweets generados?
También te puede interesarKoala: un modelo de diálogo para la investigación académica6. ¿Cuáles fueron las tendencias diarias de los tweets con la duración de la recopilación de datos?
Recopilación de datos
Los datos se desecharon usando las consultas hashtags #timeless y #timelessalbum, usando la biblioteca Snscrape en python. Este proceso tomó aproximadamente 1 hora 48 minutos para ambos hashtags. Antes de hacer esto, me aseguré de instalar e importar las bibliotecas necesarias para evitar errores. Los requisitos previos a continuación;
# import important librariesimport warnings
warnings.filterwarnings('ignore')
También te puede interesarPipelines para inferencias performativas con Hugging Face 🤗import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from tqdm.notebook import tqdm
from collections import Counter
#import snscrape.modules.twitter as sntwitter
import nltk
from nltk.corpus import stopwords
nltk.download('stopwords')
nltk.download('wordnet')
from nltk.tokenize import word_tokenize
from nltk.stem import WordNetLemmatizer
nltk.download('punkt')
Después de recopilar los tweets, les agregué un solo marco de datos en el Fecha columna. Luego, verifiqué la presencia de datos duplicados y los eliminé para evitar posibilidades de análisis inexactos o sesgados. Más adelante, hice una copia de mi conjunto de datos que luego se descargó como un archivo csv en mi computadora personal.
Debido a las restricciones de Twitter y los cambios diarios de las API, mis códigos de raspado iniciales no pudieron pasar después de usarlos durante 7 días consecutivos. yo pregunte eso ‘Error 404’ fue el nuevo error para aquellos que querían raspar y puedes leer más al respecto aquí . Para mejorar este proyecto, utilicé dos cuadernos de Google colab; el primero que contiene el raspado y el segundo que contiene el resto de mi análisis.
Limpieza de datos
Habiendo creado el nuevo cuaderno, importé bibliotecas relevantes y leí el conjunto de datos. A continuación se muestra una vista previa rápida de nuestros datos
El marco de datos fusionado se compone de 90027 tweets (filas) y 17 columnas. A partir de la información del conjunto de datos a continuación, noté que la columna Fecha tenía un tipo de datos incorrecto. Además, examiné los datos para identificar problemas de calidad con ellos.
Para limpiar los datos, tomé en consideración lo siguiente; tipos de datos incorrectos y presencia de valores nulos, columnas irrelevantes, teniendo en cuenta también que los duplicados ya se habían eliminado como mencioné anteriormente.
eliminé el Sin nombre: 0 y Pista columnas porque eran irrelevantes en mi análisis. A partir de entonces, cambié el tipo de datos de la columna Fecha, reemplacé los valores nulos en la columna Ubicación a «No disponible».
Preprocesamiento de datos
Para esta etapa creé funciones regex para extraer los datos que necesitaba para mi análisis de los tweets, con respecto a las preguntas que planteé en punto 1 de Metodología de Procesos. Las funciones Regex se utilizan para hacer coincidir cadenas de texto, como caracteres particulares, palabras o patrones de caracteres, y extraerlos.
a) Extracción de las pistas de música más populares:
Primero eliminé los espacios entre los nombres de las pistas y creé una función para reemplazar todos los nombres de las pistas después de lo cual se aplicó al Pío columna. Esto se hizo para evitar problemas al extraer los datos necesarios. A partir de entonces, se creó una nueva columna utilizando el código que se muestra a continuación.
# Defining a function to replace track names as one word track name in a new column new_trackdef trackNames(timeless):
replacements = [("overdem", "overdem"),("feel", "feel"), ("in the garden", "inthegarden"),("god father", "godfather"),
("unavailable", "unavailable"), ("bop", "bop") , ("e pain me", "epainme"), ("away", "away"), ("precision", "precision"),
("kante", "kante"), ("na money", "namoney"), ("juju", "juju"), ("no competition","nocompetition"), ("picasso", "picasso"),
("forthe road", "fortheroad"), ("lcnd", "lcnd"), ("champion sound", "championsound")]
for pat, repl in replacements:
timeless = re.sub(pat, repl, timeless)
return timeless
df["new_track"] = df['Tweet'].apply(trackNames)
df.head(2)
Luego, creé funciones para contar cada instancia de las pistas en cada tweet y las almacené en un nuevo marco de datos ‘Tracks_df’ el código que se muestra a continuación.
# Store track in a list
track_list = df['ttrack'].tolist()# Iterating over all track names and split where there is more than one track instance
track = []
for item in track_list:
item = item.split()
for i in item:
track.append(i)
# Getting unique count of all tracks
counts = Counter(track)
track_df = pd.DataFrame.from_dict(counts, orient='index').reset_index()
track_df.columns = ['Track', 'Count']
track_df.sort_values(by='Count', ascending=False, inplace=True)
print("The Total Number of Unique Tracks is: ", track_df.shape[0])
track_df
b) Extrayendo las menciones de artistas destacados en el álbum Timeless:
Tal como lo hice anteriormente, eliminé los espacios entre los nombres con más de una palabra y reemplacé todos los nombres destacados usando una función regex después de lo cual se aplicó al Pío columna para crear una nueva columna. Cada instancia de las características mencionadas se contó, se almacenó en un nuevo marco de datos y se guardó como un archivo csv.
C) Extrayendo los hashtags más populares:
Al crear una función donde se aplicó REGEX, extraje los hashtags de la columna Tweet. Este resultado se guardó en un marco de datos y luego en un archivo csv para su posterior análisis.
# Defining a function to extract hashtags with REGEXdef getHashtags(tweet):
tweet = tweet.lower() #converts tweet to lower case
tweet = re.findall(r'\#\w+',tweet)
return " ".join(tweet)
# Getting Hashtags and storing in column 'hashtags'
df['hashtags'] = df['Tweet'].apply(getHashtags)
df.head(2)
d) Extrayendo las cuentas más etiquetadas
Para extraer las cuentas más etiquetadas, apliqué una función regex al Pío columna y luego imprimió las 10 etiquetas principales usando la función de corte. Me di cuenta de ‘@YouTube’ estaba entre los 10 principales, así que lo eliminé porque necesitaba cuentas de usuario originales de tweeters.
# getting the most tagged accounts in the tweets
mentions = df['Tweet'].str.extractall(r'(\@\w*)')[0].str.lower().value_counts()mentions = mentions[mentions.index != '@']
mentions = mentions[mentions.index != '@youtube'] # '@youtube' is removed because we need original twitter accounts
#to get the top 10 most mentioned accounts
mentions = mentions[:10].sort_values(ascending = True)
print(mentions)
Análisis exploratorio de datos y sentimiento
Para el análisis de sentimiento, los textos de la columna Tweet fueron preprocesados antes de realizar el análisis. Involucró la creación de diferentes funciones Regex para eliminar palabras vacías en inglés, emojis, caracteres repetidos, lematización para eliminar la puntuación y tokenización aplicada para dividir el tweet de texto en palabras. Hice esto en el primer cuaderno que se usó para raspar tweets, lo que explica por qué había texto_limpiado, Sentimiento y Polaridad columnas en mi marco de datos fusionado al comienzo de esta documentación.
- Análisis de los sentimientos
El análisis de sentimientos es el proceso de identificar y categorizar computacionalmente las opiniones expresadas en un texto, especialmente para determinar si la actitud del escritor hacia un tema, producto, etc. en particular. En este proyecto, traté de obtener una visión general del público en general. sentimientos de los tuiteros sobre el disco Timeless de Davido.
Usando la función TextBlob, pude obtener los puntajes de polaridad de los tweets. La polaridad se encuentra entre -1 y 1donde -1 define un negativo sentimiento y 1 define un positivo sentimiento, cuando la polaridad es 0 podemos decir que es neutral. Podemos ver una distribución visual de la polaridad de los sentimientos de los tweets a continuación, mostrando 60,3% de Neutro, 6,9% Negativo y 32,8% Sentimientos positivos.
2. Echando un vistazo a las pistas más populares de Twitter dentro de la duración de este período de recopilación de datos, el siguiente gráfico de barras muestra que Kante, sentir, lejos y Indisponible son las 4 pistas más mencionadas en Twitter.
Mientras aún realizaba análisis en python, exporté los datos a Microsoft Power BI para su posterior análisis y visualización.
3. #eterno que también es el nombre del álbum es el hashtag más utilizado con un conteo de 53K, seguido de #álbum atemporal.
4. Los artistas destacados más mencionados son Asake, favorito y Morravey.
5. Tweet por fecha: De la imagen a continuación, podemos ver que el álbum Timeless fue definitivamente un revuelo durante su lanzamiento el 1 de abril, mientras que tuvo un promedio de ~3k tweets durante los siguientes 4 días, y una disminución constante después (31 de marzo no fue incluido).
6. árbolversobot parece ser el usuario más activo a través del análisis en la imagen a continuación, sin embargo, después de verificar la originalidad y mantener el propósito de este proyecto, descubrí que era una cuenta de bot para Treeverse NFT, muchosofspot2 tampoco está relacionado con nuestro análisis. Por lo tanto, puedo decir que lo más activo en cuanto a Timeless Album y dentro de la duración de la recopilación de datos es RabsonLee.
creé un nube de palabras para saber las palabras más frecuentes en los tuits. Los datos utilizados aquí fueron los mismos que utilicé para realizar análisis de sentimiento (texto_limpiado columna); los datos se procesaron primero en términos de eliminación de palabras vacías, tokenización aplicada, lematización para eliminar la puntuación.
Por curiosidad, decidí revisar la publicación con más Me gusta en los hashtags originales que solía recopilar. ¿Esperabas esto?
Incluiré mi panel interactivo de Power BI para ilustrar mejor mis conocimientos aquí.
Perspectivas
Con base en este análisis que se llevó a cabo sobre los datos recopilados del 31 de marzo al 10 de abril;
- El álbum atemporal tenía 6,9% negativo, 60,3% Neutro y 32,8% Sentimientos positivos.
- Las 5 pistas más populares del álbum son Kante, Feel, Away, No disponible y Padrino.
- #eterno y #álbum atemporal son los 2 hashtags más populares, que también son los hashtags que usé para raspar los tweets.
- Asake es el artista más mencionado con 1858 menciones, seguido de favorito y Morravai.
- El cima los tweets fueron justo después de la fecha de lanzamiento 1 de abril de 2023.
- rabsonlee es el tuitero más activo relacionado con el álbum Timeless.
Limitaciones
La columna ‘cleaned_text’ que contiene el tweet limpio del principal Pío columna contenía 8777 valores nulos que no eliminé porque reduciría los tweets originales de mis datos. Sin embargo, esta columna se usó solo para el análisis de sentimientos y la visualización de nubes de palabras.
Además, este análisis solo cubre una pequeña porción del espacio muestral. Por lo tanto, es seguro abstenerse de sacar conclusiones sobre el álbum a partir de estas ideas. Sugeriría que se realice un análisis en otras plataformas de redes sociales y medios de transmisión durante un período de tiempo más amplio para adquirir una visión más profunda de este álbum.
Conclusión
A pesar de que los picos más altos del álbum ocurrieron en los primeros dos días, la cantidad de tweets por día disminuyó constantemente después de eso. Esto probablemente iba a suceder dado que Davido se mantuvo absolutamente alejado de las redes sociales durante casi 4 meses antes del lanzamiento del álbum el 31 de marzo. Es posible que los picos durante los primeros días se puedan atribuir a las expectativas tan esperadas de sus fans.
Además, según este análisis, este álbum acumuló un 60,3 % de sentimientos neutrales y un 32,8 % de sentimientos positivos. Lo más probable es que los tuiteros amen y aprecien más al artista (Davido) que a todos los temas del disco. Esto se demuestra aún más con las ideas de la melodía más popular del álbum y el artista destacado más citado, donde este último no tiene su canción incluida entre las 10 mejores canciones mencionadas del álbum.
En general, el álbum obtuvo una registro total de 469,67 millones de transmisiones en plataformas como Audiomack, Applemusic, Boomplay, Youtube, Spotify en su primer mes de lanzamiento.
¡Gracias por leer!
Enlaces relevantes
Para acceder a mis códigos en Github
Conóceme mejor: LinkedIn