En este artículo analizaremos un pipeline con NLTK, donde veremos en acción algunas de las funcionalidades que ofrece esta plataforma.
Antes, en cambio, recordemos que un pipeline es una herramienta que se utiliza como mecanismo de comunicación entre distintos procesos empresariales. De modo que, en este caso, usaremos un pipeline con NLTK para mostrar los procesos que pueden estar implicados en dicha plataforma.
Pipeline con NLTK
Ya hemos visto cómo hacer un pipeline de preprocesamiento en NLP, por ello, en este artículo veremos, más específicamente, cómo hacer un pipeline con NLTK. Utilizaremos, el método de regex, el RegexpTokenizer; así como stopwords y el lematizador.
En primera instancia, suprimiremos los acentos. Luego, para cada palabra que tenemos en el texto haremos una verificación: si no está entre las stopwords, le aplicaremos en nuestra lematización y, posteriormente, la pasaremos a minúsculas y le quitaremos los espacios anteriores y siguientes.
Acto seguido, verificamos si la palabra es un dígito. De ser así, lo convertimos a palabras, ya que es mucho más simple trabajar con texto que con otros tipos de datos, como los números.
#Pipeline con NLTK
import unicodedata
from num2words import num2words
from nltk import RegexpTokenizer
from nltk.corpus import stopwords
from nltk.stem import WordNetLemmatizer
def nltk_cleaner (text, tokenizer, sw_list, lemmatizer):
clean_text = list ()
#Eliminar acentos, etc
text = unicodedata.normalize ('NFKD', text).encode ('ascii', 'ignore').decode ('utf-8', 'ignore')
#Separar palabras eliminando signos de puntuación
for word in tokenizer.tokenize (text):
#Eliminar stopwords
for word not in sw_list:
#Eliminar espacios sobrantes, convertir a minúsculas y lematizar
clean_word = lemmatizer.lemmatize (word).lower ().strip ()
#Convertir dígitos a palabras
if clean_word.isdigit ():
clean_word = num2words (clean_word, lang = 'es')
clean_text.append (clean_word)
return ' '.join (clean_text)
Una vez importado el método, verificamos algunas cosas:
- El tokenizador que utilizaremos será el RegexpTokenizer, un tokenizador basado en regex que solo coja los textos con base en la regla propuesta entre paréntesis.
- El lematizador que usaremos será el de WordNetLemmatizer, que es el que está en otros diccionarios de Python.
#Pipeline con NLTK
tokenizer = RegexpTokenizer (r '\w+')
sw_list = stopwords.words ('spanish')
lemmatizer = WordNetLemmatizer ()
#Pipeline con NLTK
nltk_cleaner (review, tokenizer, sw_list, lemmatizer)
Aquí tenemos el texto preprocesado gracias a una librería muy usada dentro del mundo del procesamiento del lenguaje.
Una recomendación es que si estás haciendo pruebas para un modelo o algo muy básico, puedes hacer uso de NLTK. No obstante, si lo que necesitas es hacer algo muy complejo y robusto empleando un pipeline, lo que mejor te vendrá es utilizar spaCy, ya que, además de traer algunas de las principales funcionalidades preconstruidas, es mucho más simple de personalizar. Esto último, por supuesto, lo hace más versátil.
Ahora que hemos visto cómo funciona un pipeline con NLTK, podemos seguir avanzando en nuestro proceso formativo. Para acceder a las opciones laborales del Big Data, una de las áreas con mejores salarios y mayor demanda, tenemos para ti el Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp. Con esta formación intensiva adquirirás los conocimientos teóricos y prácticos imprescindibles para abrirte paso en el mundillo en pocos meses. ¡Da el paso definitivo para impulsar tu carrera y entra ahora para pedir más información!