Análisis de Reseñas de Amazon con Google Colab y Visualización de Datos

Clase 2 de 16Curso de NLP con Python

Resumen

La visualización de datos es una herramienta poderosa para entender la percepción de los clientes sobre nuestros productos. Las nubes de palabras, en particular, ofrecen una representación visual inmediata de los términos más frecuentes en las reseñas, permitiéndonos identificar rápidamente tendencias y sentimientos. En este artículo, exploraremos cómo construir una nube de palabras a partir de reseñas de Amazon en español, utilizando herramientas de análisis de datos en Python.

¿Cómo crear una nube de palabras a partir de reseñas de clientes?

Para comenzar nuestro análisis de reseñas de Amazon, utilizaremos Google Colab, una plataforma que nos permite ejecutar código Python en la nube. En esta primera parte, trabajaremos con CPU, aunque en fases posteriores podríamos requerir GPU para optimizar el entrenamiento y reducir latencias.

El proceso comienza con la carga y exploración del dataset. Seguiremos estos pasos:

  1. Cargar el archivo comprimido (.rar) que contiene nuestros datos.
  2. Descomprimir el archivo utilizando el comando de consola !unrar.
  3. Leer el archivo CSV resultante utilizando pandas.
  4. Explorar las características principales del dataset.
# Importar librerías necesarias
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# Descomprimir el archivo
!unrar e archivo.rar

# Cargar el dataset
df = pd.read_csv('review_dataframe_completo.csv')

# Visualizar las primeras filas
df.head(3)

¿Qué información contiene nuestro dataset de reseñas?

El dataset que estamos utilizando contiene reseñas de productos de Amazon en español, con las siguientes columnas:

  • ID: Identificador único del usuario que realizó la reseña
  • Producto: Identificador del producto evaluado
  • Reviewer: Nombre del revisor
  • Stars: Puntuación asignada (de 1 a 5 estrellas)
  • Body: Texto completo de la reseña
  • Título: Título de la reseña
  • Lenguaje: Idioma de la reseña (español en este caso)
  • Categoría: Tipo de producto (electrodomésticos, juguetes, etc.)

Podemos explorar tanto las primeras filas como las últimas para tener una idea del contenido:

# Primeras 3 filas
df.head(3)

# Últimas 3 filas
df.tail(3)

En los ejemplos que vemos, hay reseñas de televisores con comentarios como "nada bueno, se me fue la pantalla" o "horrible, nos tuvimos que comprar otra. Dinero tirado a la basura", así como productos de otras categorías como "juguetes" o "dispositivos inalámbricos" con comentarios más positivos como "me ha encantado la diadema".

¿Cómo analizar la distribución de las puntuaciones y categorías?

Para entender mejor nuestros datos, es importante visualizar la distribución de las puntuaciones y las categorías de productos. Esto nos dará una visión general de la satisfacción de los clientes y los tipos de productos más revisados.

Distribución de puntuaciones

Podemos crear un gráfico de barras para visualizar la distribución de las estrellas:

plt.figure(figsize=(8, 4))
sns.countplot(x='stars', data=df)
plt.title('Distribución de puntuaciones')
plt.xlabel('Estrellas')
plt.ylabel('Cantidad')
plt.show()

El resultado muestra que tenemos aproximadamente 40,000 productos con una estrella, otros 40,000 con dos estrellas, y así sucesivamente. Esto indica que nuestro dataset está balanceado, lo cual es ideal para el análisis ya que no hay un sesgo hacia puntuaciones altas o bajas.

Distribución de categorías

También podemos analizar la distribución de las categorías de productos:

# Contar las categorías
category_counts = df['categoría'].value_counts()

# Tomar las 9 categorías más frecuentes y agrupar el resto como "Otros"
top_categories = category_counts.iloc[:9].index
df['category_grouped'] = df['categoría'].apply(lambda x: x if x in top_categories else 'Otros')

# Visualizar
plt.figure(figsize=(10, 6))
sns.countplot(x='category_grouped', data=df, palette='skyblue')
plt.title('Distribución de productos: Top 9 más Otros')
plt.xlabel('Categorías')
plt.ylabel('Cantidad')
plt.xticks(rotation=45)
plt.show()

En esta visualización, podemos observar que las categorías más frecuentes incluyen "home", "inalámbricos" y "juguetes", mientras que la categoría "otros" contiene aproximadamente 80,000 productos, lo que indica una gran diversidad en nuestro dataset.

¿Qué sigue en nuestro análisis?

Hasta ahora, hemos logrado cargar y explorar nuestro dataset de reseñas de Amazon. Conocemos la estructura de los datos, la distribución de las puntuaciones y las categorías principales de productos. Este es el primer paso fundamental para construir nuestra nube de palabras.

En la siguiente fase, profundizaremos en el contenido de las reseñas, analizando el texto para identificar patrones, sentimientos y palabras clave que nos ayudarán a entender mejor la percepción de los clientes sobre los productos.

La exploración de datos es solo el comienzo de nuestro viaje analítico. Con estos fundamentos, estaremos preparados para aplicar técnicas más avanzadas de procesamiento de lenguaje natural que nos permitirán extraer insights valiosos de las opiniones de los clientes.

¿Has utilizado nubes de palabras para analizar feedback de clientes? Comparte tus experiencias y resultados en la sección de comentarios.