Normalización de texto con spaCy

Autor: | Última modificación: 12 de abril de 2024 | Tiempo de Lectura: 2 minutos
Temas en este post: ,

Algunos de nuestros reconocimientos:

Premios KeepCoding

A continuación veremos cómo hacer normalización de texto con spaCy. Tenemos un texto que tiene espacios de más y algunas cosillas que debemos pulir. Lo llevaremos a cabo con la librería spaCy.

Normalización de texto con spaCy

#Normalización de texto con spaCy
text = '    Mi      nombre es Fran y vivo en Madrid.   Hoy es 31 de enero de 2022    '
#Normalización de texto con spaCy
#Separar por espacios
text.split ('  ')

Aquí podemos hacer la separación. Separamos por espacios y el resultado es:

Normalización de texto con spaCy

Otra de las grandes funciones de spaCy es que tenemos stopwords específicas para cada lengua:

#Normalización de texto con spaCy
#Eliminar stop words
from spacy.lang.es.stop_words import STOP_WORDS

print (list (STOP_WORDS) [:20])

De modo que ya no tenemos que crear un diccionario exclusivamente para estas palabras, sino que podemos definirlo por idioma (español, alemán, francés, etc.).

En nuestro caso, sacamos las 20 primeras stopwords de la lista en spaCy de Python:

Normalización de texto con spaCy

Ahora lo que haremos es aplicar la limpieza de stopwords. Hacemos una list comprehension, luego hacemos una iteración, un bucle en donde extraemos una palabra del texto, la pasamos a minúsculas y dividimos por espacios.

Entonces, lo que hacemos en esta lista de palabras en minúscula y separadas es comprobar si la palabra no está en las stopwords que ha definido spaCy. Si no está, la añadimos:

#Normalización de texto con spaCy
ex_text_1 = 'Soy una frase de ejemplo de la cual vamos a eliminar los stopwords'
[word for word in ex_text_1.lower ().split () if word not in STOP_WORDS]

Este sería el resultado:

[‘frase’, ‘a’, ‘eliminar’, ‘stopwords’]

Con esto evitamos un montón de posible ruido en la frase. Aun así, vemos que se mantiene el contexto.

Ahora abramos debate: ¿crees que es necesario filtrar las stopwords?

Lo que sucede es que spaCy nos da una lista entera de stopwords, pero si lo consideras necesario, puedes quitar de la lista las que quieras o las que pienses que puedes necesitar en tu análisis textual. En este caso, tendríamos que hacer el filtrado manualmente.

Veamos cuántas stopwords tiene la librería de spaCy en español:

len (list (STOP_WORDS))

551

Vamos a tomar la siguiente frase a modo de ejemplo:

#Normalización de texto con spaCy
ex_text_2 = 'No me gusta esta canción'
'  '.join ([word for word in ex_text_2.lower ().split () if word not in STOP_WORDS])

‘ gusta canción ‘

En este caso, lo que obtenemos es una frase con un significado completamente contrario al anterior. De ahí la necesidad de depurar correctamente las stopwords.

¿Quieres seguir avanzando?

Para poder acceder a las opciones laborales del Big Data, una de las áreas en el mundo de la industria TIC mejor pagadas, tenemos para ti el Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp. En esta formación intensiva e íntegra te encontrarás con la guía de grandes profesionales en el sector, quienes te acompañarán a través de los conocimientos teóricos y prácticos necesarios para conseguir el trabajo de tus sueños en pocos meses. ¡No esperes más para impulsar tu futuro profesional y pide más información ahora!

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado