Limpieza de Datos de Reseñas con Expresiones Regulares

Clase 3 de 16Curso de NLP con Python

Resumen

El procesamiento de texto es una habilidad fundamental en el análisis de datos, especialmente cuando trabajamos con reseñas de usuarios. La limpieza adecuada de textos no solo mejora la calidad de nuestros análisis, sino que también optimiza recursos computacionales al enfocarnos únicamente en la información relevante. Las expresiones regulares (Regex) son herramientas poderosas que nos permiten manipular texto de manera eficiente, identificando patrones específicos que queremos conservar o eliminar.

¿Cómo preparar un dataset de reseñas para su análisis?

Antes de realizar cualquier análisis de contenido en reseñas, es crucial realizar un preprocesamiento adecuado. Este paso inicial nos ayuda a destacar el contenido relevante y reducir costos computacionales al eliminar información innecesaria.

Para comenzar, debemos seleccionar las columnas que realmente necesitamos. En este caso, nos enfocaremos en:

  • La columna "review body" (contenido de la reseña)
  • La columna "start" (puntuación)

Es recomendable trabajar con una copia del dataframe original para mantener los datos originales intactos:

filter_data = df.copy()

Después, podemos verificar las primeras filas para entender la estructura de nuestros datos:

filter_data[['review_body', 'start']].head(3)

Verificación de valores nulos

Un paso fundamental es comprobar si existen valores nulos en nuestro dataset:

filter_data.isnull().sum()

Si no encontramos valores nulos, podemos proceder directamente a la limpieza del texto. En caso contrario, deberíamos implementar estrategias para manejar estos valores faltantes.

¿Cómo utilizar Regex para limpiar textos de reseñas?

Las expresiones regulares (Regex) son secuencias de caracteres que definen patrones de búsqueda. Gracias a ellas, podemos describir, identificar y manipular cadenas de texto de manera eficiente. Son especialmente útiles para encontrar patrones como arrobas, URLs o etiquetas HTML.

Para implementar la limpieza, necesitamos importar las bibliotecas adecuadas:

import re
import string

Luego, creamos una función que aplique todas las transformaciones necesarias:

def clean(text):
    # Convertir a minúsculas
    text = text.lower()
    
    # Eliminar texto entre corchetes
    text = re.sub(r'\[.*?\]', '', text)
    
    # Eliminar URLs
    text = re.sub(r'https?://\S+|www\.\S+', '', text)
    
    # Eliminar etiquetas HTML
    text = re.sub(r'<.*?>', '', text)
    
    # Eliminar signos de puntuación
    text = re.sub(r'[{}]'.format(string.punctuation), '', text)
    
    # Eliminar saltos de línea
    text = re.sub(r'\n', '', text)
    
    # Eliminar palabras que contienen números
    text = re.sub(r'\w*\d\w*', '', text)
    
    # Eliminar emojis o caracteres especiales
    text = re.sub(r'[^\x00-\x7F]+', '', text)
    
    # Eliminar espacios en blanco al inicio y final
    text = text.strip()
    
    return text

Aplicación de la función de limpieza

Una vez definida nuestra función, la aplicamos a la columna que contiene las reseñas:

filter_data['clean_review'] = filter_data['review_body'].apply(clean)

Este proceso puede tomar algunos segundos dependiendo del tamaño del dataset. En el ejemplo, tardó aproximadamente 8 segundos.

¿Qué transformaciones específicas realizamos en el texto?

Nuestra función de limpieza realiza varias transformaciones importantes:

  1. Conversión a minúsculas: Estandariza todo el texto para facilitar el análisis.
  2. Eliminación de texto entre corchetes: Remueve contenido que suele ser metadatos o aclaraciones.
  3. Eliminación de URLs: Las direcciones web raramente aportan al sentimiento o tema de la reseña.
  4. Eliminación de etiquetas HTML: Limpia el texto de marcado que puede estar presente en reseñas copiadas de sitios web.
  5. Eliminación de signos de puntuación: Simplifica el texto para análisis posteriores.
  6. Eliminación de saltos de línea: Normaliza el formato del texto.
  7. Eliminación de palabras con números: Remueve referencias a usuarios o códigos que no aportan al contenido semántico.
  8. Eliminación de emojis y caracteres especiales: Nos centramos en el contenido textual puro.
  9. Eliminación de espacios en blanco: Limpia el formato para un texto más consistente.

Al comparar la reseña original con la limpia, podemos observar diferencias significativas como la conversión a minúsculas y la eliminación de signos de puntuación, lo que pone en evidencia lo más relevante de cada comentario.

El preprocesamiento de texto es un paso fundamental que no debe subestimarse en cualquier proyecto de análisis de datos textuales. Con estas técnicas, estarás preparado para extraer información valiosa de tus datasets de reseñas y obtener insights más precisos y relevantes.

¿Has utilizado expresiones regulares en tus proyectos de análisis de datos? Comparte tus experiencias y dudas en la sección de comentarios.