Preprocesado de texto para NLP en Python

| Última modificación: 7 de noviembre de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

En este artículo vamos a ver cómo podemos hacer preprocesado de texto para NLP en Python. No es una tarea demasiado complicada, ya que solo necesitarás un nivel básico del lenguaje de programación. Además, si tienes conocimientos en lingüística, ¡mucho mejor!

Preprocesado de texto para NLP en Python

Pasos iniciales

! wget https://transfer.sh/J4o169/requirements.txt
! pip install -r requirements.txt
#Preprocesado de texto para NLP
! wget https://transfer.sh/KWNxRn/datasets.zip
! wget https://transfer.sh/XoRKUW/utils.py
Preprocesado de texto para NLP
! unzip datasets.zip
from utils import load_cinema_reviews

Si nos fijamos, tenemos distintos wget, que descargan los ficheros del repositorio que se han subido previamente. En este caso específic,o nos estamos descargando el requirements del repositorio. Podemos ir ejecutando las celdas una a una para ir instalando las dependencias, mientras nos descargamos también la carpeta de datasets y el fichero de utilidades.

Cuando tengamos instaladas todas las dependencias, podemos bajarnos el dataset y el fichero de utilidades. Posteriormente, descomprimimos los datasets. Una vez descomprimidos, podremos observar que tenemos la carpeta datasets con todos los datasets disponibles en el repositorio:

Preprocesado de texto para NLP en Python

Ahora, del fichero de utilidades vamos a importar la función load_cinema_reviews, que nos permitirá cargarnos del dataset una cantidad de datos sobre reviews de películas.

Lectura de datos

#Preprocesado de texto para NLP
#path al directorio donde tenemos los datasets con las reviews
#¡Descomprimir antes!
datasets_path = './datasets'
corpus_cine_folder = 'corpusCine'

Lo primero que haremos en el preprocesado de texto para NLP es escribir el directorio en el que estará el dataset. En este caso estará en corpusCine.

Ejecutamos, cargamos los datos y, una vez cargados, verificamos qué tamaño tiene el dataset con el comando len:

#Preprocesado de texto para NLP
reviews_dict = load_cinema_reviews (datasets_path, corpus_cine_folder)
print (len (reviews_dict))

3878

Este es el número de reviews que el dataset posee. Aquí lo que tenemos es un diccionario que tiene todas las reviews del dataset que hemos cogido. Por ejemplo, si queremos el décimo ítem del diccionario, tendríamos que escribir lo siguiente:

reviews_dict.get (10)

{‘author’: ‘Javier Moreno’,

‘reviews_text’: ‘No. Esta vez no voy a usar una película como pretexto para exponer mis ideas o pensamientos más dementes/racionales…’

‘sentiment’: ‘4’,

‘summary’: ‘Interesante adaptación de la novela de Rowling’,

‘title’: ‘Harry poter y el caliz de fuego’}

Esto nos dice, por tanto, quién es el autor y cuál es el texto de la review o reseña. Luego, encontramos una etiqueta denominada sentiment, en la que tiene una calificación de 4. Debajo viene el summary o resumen, y por último, el título de la película.

Clase string

Lo primero con lo que trabajaremos será con la clase string, una clase nativa de Python que incorpora utilidades para procesado de texto para NLP.

Python tiene una serie de métodos integrados que es posible usar en strings. Veamos:

  • capitalize ()
  • casefold ()
  • center ()
  • endswith ()
  • find ()
  • index ()
  • lower ()
  • replace ()
  • strip ()
  • title ()

Entre muchos otros que puedes consultar aquí: Python String Methods.

Tokenización

Lo que haremos ahora es quedarnos solo con el texto de la review, esto es, de la reseña de la película. Vamos a hacer print de las primeras 1000:

#Preprocesado de texto para NLP
review = reviews_dict.get (10).get (review_text')
print (review [:1000])

Cuando dentro de una lista tenemos dos puntos, esto indica que:

  • Si está por la izquierda, señala que tomará desde el primer elemento hasta el elemento que se le marque; en este caso es 1000 → [:1000].
  • Si está por la derecha, coge del número señalado hasta n elementos → [1000:].

Ejecutamos y el resultado es:

No. Esta vez no voy a usar una película como pretexto para exponer mis ideas o pensamientos más dementes/racionales/insensatos. Esta vez, y lo juro ante el sagrado Necronomicón de Lovecraft, pienso hablar de la película en sí…

Esta sería la review de los 1000 primeros caracteres.

Frases

Para sacar las frases de toda la review se haría del siguiente modo:

#Preprocesado de texto para NLP
sentences = review.split (' . ')
print (sentences [:5])

Le diremos que el carácter por el que queremos que nos separe es los puntos.

Tokens

También podemos utilizar la función strip para limpiar los caracteres vacíos:

#Preprocesado de texto para NLP
sentence.strip ()

Para poder acceder a las opciones laborales del Big Data, una de las áreas en el mundo de la industria tech mejor pagadas, tenemos para ti el Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp. Con esta formación intensiva e íntegra de gran calidad adquirirás 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 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