Conversión de números a texto y stopwords en Python

| Última modificación: 12 de abril de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

En este artículo veremos cómo hacer conversión de números a texto y stopwords en Python. Todo esto forma parte del proceso de preprocesado de datos en NLP que podemos realizar para nuestros modelos de machine learning.

Conversión de números a texto y stopwords en Python

Convertir números a texto

Tenemos un módulo que se llama num2words de Python, cuya funcionalidad consiste en permitirnos convertir un número a texto. Veamos un ejemplo:

#Conversión de números a texto y stopwords en Python
#conversión de los números
from num2words import num2words
#Conversión de números a texto y stopwords en Python
#convertir numeros a letras python
num2words (2)

‘two’

También podemos cambiar algunas propiedades del comando, como la lengua en la que se mostrará el resultado. En este caso, veremos cómo queda el resultado en español:

#Conversión de números a texto y stopwords en Python
num2words (2, lang = 'es', ordinal = False)

‘dos’

Asimismo, podemos determinar que este número sea cardinal u ordinal. Veamos cómo quedaría si le pusiéramos ordinal true a la conversión de números:

#Conversión de números a texto y stopwords en Python
num2words (2, lang = 'es', ordinal = True)

‘segundo’

Ahora, para la frase “Hoy es 8 de febrero de 2021”, aplicamos el num2words.

Si analizamos el código, tenemos que:

  • La primera parte del código, el ‘ ‘, quiere decir que los resultados van a estar unidos por espacios. Esto quiere decir que, a diferencia de las condiciones que hemos trabajado anteriormente (poníamos un signo + después de la condición para que los caracteres cambiados no se conviertan en espacios, sino que todos los resultados se unan en uno solo), en este caso sí necesitamos que los espacios queden. Lo único que estamos cambiando es el tipo de palabra, que antes era un número y pasará a convertirse en un string.
  • Posteriormente aplicamos un join.
  • Después abrimos una list con todas las condiciones que requerimos que cumpla nuestro comando.
  • Una vez hecho esto, se inicia un bucle for, que consiste en: por cada palabra en el string ‘Hoy es 8 de febrero de 2021’, hacemos un split por espacios, así nos quedamos con todas las palabras.
  • Por medio de la función word.isdigit () podemos determinar si una palabra es un número o no en Python. Si no es un dígito, es la palabra, esto es, el string común y corriente; si es un número, le hacemos una conversión con num2words al español (con el parámetro lang) y determinamos si estos números convertidos serán true o false.
#Conversión de números a texto y stopwords en Python
'  '.join ([word if not word.isdigit () else num2words (word, lang = 'es', ordinal = False) for word in 'Hoy es 8 de febrero de 2021'.split ('  ')])

Veamos cuál es el resultado de estos comandos:

‘Hoy es ocho de febrero de dos mil veintiuno’

Stopwords

Las stopwords son palabras que, en principio, no tienen ningún significado o que aportan muy poca información. Suelen ser palabras muy frecuentes como, por ejemplo, las preposiciones.

En NLP se suele trabajar con vocabularios enormes, por lo que interesa filtrar aquellas palabras que menos información aportan.

Ahora viene la pregunta problemática: ¿cómo sabemos qué palabras aportan información?, ¿qué significa que estas palabras aporten información?

#Conversión de números a texto y stopwords en Python
from stop_words import get_stop_words
#Conversión de números a texto y stopwords en Python
sw_list = get_stop_words ('es')
#Conversión de números a texto y stopwords en Python
print (sw_list)
Conversión de números a texto y Stopwords en Python

¿Esto qué significa para el procesamiento del lenguaje cuando vamos a hacer un sistema de NLP? Las stopwords, generalmente, nos suelen aportar valor al contexto, dependiendo del tipo de problema que tengamos.

Ahora vamos a hacer un filtrado. Cada palabra de la frase que teníamos no la añadimos a la lista en caso de que pertenezca a la lista de stopwords:

#Conversión de números a texto y stopwords en Python
sentence_no_sw = '  '.join ([word for word in sentence.split () if word not in sw_list])
print ('Frase completa:\n{}\n'.format (sentence))
print ('Frase sin stopwords:\n{}\n'.format (sentence_no_sw))

Frase completa:

Esta vez, y lo juro ante el sagrado Necronomicón de Lovecraft, pienso hablar de la película en sí…

Frase sin stopwords:

Esta vez, juro sagrado Necronomicón Lovecraft, pienso hablar película sí…

¿Quieres seguir avanzando?

Para poder acceder a las opciones laborales del Big Data, una de las áreas en el mundo de la industria tech mejor pagadas y con más demanda, tenemos para ti el Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp. Con esta formación de gran calidad adquirirás los conocimientos necesarios para conseguir el trabajo de tus sueños en pocos meses. ¡No esperes más para impulsar tu carrera y pide información ahora!

Sandra Navarro

Business Intelligence & Big Data Advisor & Coordinadora del Bootcamp en Data Science, Big Data & Machine Learning.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

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