Limpieza de Datos de Reseñas con Expresiones Regulares
Clase 3 de 16 • Curso 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:
- Conversión a minúsculas: Estandariza todo el texto para facilitar el análisis.
- Eliminación de texto entre corchetes: Remueve contenido que suele ser metadatos o aclaraciones.
- Eliminación de URLs: Las direcciones web raramente aportan al sentimiento o tema de la reseña.
- Eliminación de etiquetas HTML: Limpia el texto de marcado que puede estar presente en reseñas copiadas de sitios web.
- Eliminación de signos de puntuación: Simplifica el texto para análisis posteriores.
- Eliminación de saltos de línea: Normaliza el formato del texto.
- Eliminación de palabras con números: Remueve referencias a usuarios o códigos que no aportan al contenido semántico.
- Eliminación de emojis y caracteres especiales: Nos centramos en el contenido textual puro.
- 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.