Procesamiento y Limpieza de Datos para IA con Word2Vec y Gensim

Clase 6 de 26Curso de Embeddings y Bases de Datos Vectoriales para NLP

Resumen

¿Cómo se realiza la limpieza y preprocesamiento de un corpus?

La limpieza de un corpus es un paso crucial al trabajar con modelos de inteligencia artificial basados en el procesamiento del lenguaje natural (NLP). Los corpora que utilizamos para reentrenar nuestros modelos no siempre están listos para ser procesados directamente. Por lo tanto, es esencial llevar a cabo unas cuantas etapas de preprocesamiento para mejorar la calidad de nuestros datos y, en última instancia, el rendimiento del modelo.

¿Qué incluye la función cleanText?

Para limpiar y preprocesar el corpus, se utiliza la función cleanText, que opera sobre baches de datos, denominados sentenceBatch. A continuación, se describen los pasos llevados a cabo por la función:

  1. Convertir a minúsculas: Se inicia convirtiendo todo el texto a minúsculas para estandarizar el conjunto de datos.

  2. Eliminar URLs: Utilizando expresiones regulares, se eliminan las URLs, ya que estas no contribuyen al entendimiento del lenguaje y varían constantemente.

import re

# Quitando URLs del texto
texto = re.sub(r'http\S+|www\S+|https\S+', '', texto)
  1. Quitar menciones y hashtags: De igual forma que con las URLs, se eliminan las menciones de redes sociales y hashtags.
# Quitando menciones (@usuario) y hashtags (#etiqueta)
texto = re.sub(r'@\w+|#\w+', '', texto)
  1. Eliminar signos de puntuación: Se utilizan herramientas de la librería Hensing como StripPunctation.

  2. Eliminar números y palabras cortas: Se utilizan herramientas como StripNumeric y StripShort para eliminar todos los números y las palabras demasiado cortas, que suelen ser poco significativas.

¿Cómo se manejan las stopwords y tokens?

El manejo de stopwords y la tokenización son pasos críticos en el preprocesamiento:

  • Eliminar stopwords: Estos son términos que, al ser demasiado comunes, pueden degradar el rendimiento del modelo.
from nltk.corpus import stopwords

# Definiendo las stopwords en español
stopwords_esp = set(stopwords.words('spanish'))

# Filtrando stopwords
filtratext = [word for word in tokens if word not in stopwords_esp]
  • Tokenizar el texto: Permite descomponer una oración completa en una lista de palabras individuales.
from nltk.tokenize import word_tokenize

# Tokenizar el texto
tokens = word_tokenize(texto)

¿Cómo se aplica el preprocesamiento al dataset?

Finalmente, la función cleanText se aplica al dataset completo:

  • Mapeo sobre el dataset: Utilizando la propiedad map de un dataset tipo JoggingFace, se aplica la función sobre el corpus en proceso batch, que optimiza el tiempo de ejecución.
# Aplicando cleanText al dataset
subset = subset.map(cleanText, batched=True)

El resultado es un corpus limpio, listo para ser utilizado en modelos de entrenamiento de Word Embeddings. Las oraciones ahora están tokenizadas por palabras, y se han eliminado elementos innecesarios como números, hipervínculos y stopwords.

¿Por qué es importante un preprocesamiento de calidad en NLP?

El preprocesamiento de calidad es un requisito esencial para el éxito en tareas de NLP con inteligencia artificial. Un corpus bien preparado asegura que el modelo pueda interpretar y aprender el lenguaje de manera eficaz y precisa. Aunque hemos trabajado con un millón de oraciones, los modelos más avanzados requieren de millones o incluso billones de oraciones para su entrenamiento. Hacerlo eficiente y eficaz es uno de los grandes retos en el campo del NLP.