Photo by Amador Loureiro on Unsplash

spaCy: Procesamiento de Lenguaje Natural, universalizado

Una probadita de esta herramienta novedosa y poderosa

Paola Ortega Saborío
3 min readNov 13, 2020

--

Nota de la autora: Este artículo da una pequeña introducción al mundo del procesamiento de lenguaje natural mediante una librería diseñada para ser intuitiva y versátil. Por lo tanto, se asumen conocimientos previos en dicha área (específicamente sobre tokenización). Si desean repasar, les recomiendo leer este artículo primero.

El procesamiento de lenguaje natural (Natural Language Processing, NLP) es un área con mucha historia y trayectoria. Sin embargo, ha sido durante estas últimas dos décadas que sus campos de aplicación se han expandido más, notablemente en campos de estudio como la categorización de contenido, análisis de sentimiento, resumen de documentos, entre otros. De hecho, ¿Qué sería de Google sin su máquina de búsqueda, Alexa sin su sistema de dictado, o Word sin su herramienta de revisión ortográfica?

Al tomar tanta fuerza, el NLP se ha convertido inevitablemente en un área interdisciplinaria; su investigación se ha logrado ir desapegando de las ciencias de computación puras y más bien le ha abierto las puertas a los lingüistas, analistas, e ingenierías.

Para poder facilitar la aplicación de los conceptos matemáticos fuertes que utiliza el NLP en programación, se han creado herramientas programáticas como PyTorch, TensorFlow y Theano. Sin embargo, estas herramientas requieren un conocimiento fuerte de aprendizaje de máquina y NLP para su máximo aprovechamiento, y la curva de aprendizaje puede ser bastante empinada sin importar el área de formación de uno.

Díganle hola a spaCy!

Existe una herramienta nueva en el campo de NLP que ofrece flexibilidad de idioma lingüístico, versatilidad de aplicaciones y niveles claros de abstracción, todo de una manera intuitiva y amigable con el que la usa: spaCy.

Desarrollado por Explosion, esta librería de Python funciona fundamentalmente como un analizador de sintaxis, con partes añadibles y removibles para el pre-procesamiento y post-procesamiento de texto. Este tiene un rango amplio de funcionalidades, y se puede utilizar tanto con modelos pre-entrenados disponibles en su página, así como con modelos creados por el usuario.

Actualmente, Explosion cuenta con modelos base en más de 15 idiomas, incluyendo español, inglés, francés, alemán y multi-idioma. Por cada idioma, existen entre 1 a 3 modelos listos para utilizar, cada uno habiendo sido entrenado con corpus (colecciones de textos) de diferentes tamaños. Esta versatilidad permite cargar y tener un modelo listo para utilizar en solo dos pasos:

Paso #1: Descargar el modelo en la terminal:

>> python -m spacy download en_core_web_sm

Paso #2: Importar spaCy y cargar modelo en Python

import spacynlp = spacy.load(“es_core_news_sm”)

Al cargar un modelo, existe una variedad de opciones para examinar un texto. spaCy permite hacer “part of speech tagging”, o etiquetado de parte del discurso. Dado una palabra, la herramienta es capaz de analizar cada token (o colección de caracteres entre dos espacios) y reconocer si es un verbo, sustantivo, adjetivo, etc. dependiendo de su ubicación con respecto a las demás palabras. Por ejemplo, siguiendo el bloque de código anterior, si se agrega:

doc = nlp("Somos científicas de datos.")
for token in doc:
print(token.text, token.pos_, token.dep_)

Se generaría este resultado al correr el código en la terminal:

>> python script.pySomos AUX cop
científicas NOUN ROOT
de ADP case
datos NOUN nmod
. PUNCT punct

Otro uso que se puede dar con spaCy es el reconocimiento de entidad nombrada (Named Entity Recognition, NER). Este se utiliza para poder diferenciar una palabra comúnmente utilizada de una marca, producto o cualquier nombre reservado. Por ejemplo, esta funcionalidad podría distinguir y predecir si “apple” es, bajo cierto contexto, una manzana en inglés (apple) o la marca de tecnología (Apple). Estas son solo dos de las muchas funcionalidades que ofrece spaCy.

En fin, para aprender más sobre esta librería, ingrese a la documentación en su página web. Este tiene muchos ejemplos de cómo se puede utilizar, tanto en prosa como en código. Además, el canal de YouTube de Explosion ofrece demostraciones generales y específicas con spaCy, que se pueden seguir al pie de la letra (recomendado: el tutorial para entrenar un clasificador de insultos utilizando comentarios de Reddit).

Referencias

Explosion. (2020). spaCy · Industrial-strength Natural Language Processing in Python. spaCy. https://spacy.io

Foote, K. D. (2019, 17 junio). A Brief History of Natural Language Processing (NLP). DATAVERSITY. https://www.dataversity.net/a-brief-history-of-natural-language-processing-nlp/

--

--