La librería spaCy de Python es una librería open source para NLP. Existe una librería similar a spaCy de Python, que se denomina NLTK. La principal diferencia entre ambas es que NLTK maneja un entorno más cómodo y es perfecta para principiantes, mientras que spaCy está más pensada para la productividad.
La filosofía de trabajo en spaCy de Python es que, si existen una serie de algoritmos que solucionan un problema, se debe dar solución al problema con un único algoritmo. Su funcionamiento se basa en la construcción de pipelines.
¿Qué es spaCy?
spacey python , junto a NLTK, es una de las librerías más utilizadas en el Natural Language Processing (NLP) o procesamiento de lenguajes naturales. SpaCy fue desarrollada por Matt Honnibal y se lanzó en el año 2015; maneja licencia MIT y se encuentra disponible en GitHub.
Características de spaCy de Python
Entre otras cosas, esta librería posee las siguientes características:
- Soporta más de 70 lenguajes.
- Contiene 80 pipelines traducidos a 24 lenguajes.
- Incluye BERT preentrenados. BERT es una arquitectura de deep learning basada en transformer y es de las más potentes que hay.
- Aprendizaje multitarea.
- Vectores de palabras entrenados previamente.
- Tokenización lingüística.
- Componentes que permiten el reconocimiento de entidades nombradas, etiquetado de partes de discurso, análisis de dependencia, segmentación de oraciones, clasificación de texto, lematización o análisis morfológico, entre otros.
- Tiene compatibilidad con modelos personalizados en PyTorchm Tensorflow y otros marcos.
SpaCy incluye modelos preentrenados dentro del propio módulo. Incluso se pueden descargar para poder hacer detección de entidades o extracción de tópicos (por poner algunos ejemplos) de manera más automática.
Librerías relacionadas con spaCy de Python
NLTK
NLTK ofrece algunas de las funcionalidades de spacy: Aunque inicialmente fue desarrollada para enseñar y hacer búsquedas, su gran estabilidad con el paso del tiempo le ha garantizado un gran número de usuarios en industrias de todo tipo.
Es la alternativa principal después de spacy python para tokenización y segmentación de oraciones. En comparación con spaCy, NLTK tiene una amplia gama de opciones más que spaCy. SpaCy, por su parte, está más enfocada en el rendimiento. A pesar de que ambas librerías tienen funcionalidades similares, la implementación de spaCy suele ser más rápida y precisa.
GENSIM
Gensim provee algoritmos no supervisados de modelado de texto. Aunque Gensim no es una dependencia de spaCy, la usamos para entrenar vectores de palabras.
Tensorflow/Keras
Es la librería de deep learning más popular. Provee una funcionalidad de extracción de características eficiente y potente que puede usarse en cualquier preprocesado de datos en deep learning.
¿Qué capacidades (modelos) lingüísticas nos ofrece spaCy de Python?
Algunas de las funcionalidades que nos ofrece la librería spaCy de Python son:
- POS Tagging.
- Dependency Parsing.
- Named entities.
- Tokenización.
- Segmentación de frases.
- Rule – based matching.
Es decir, de spaCy podremos sacar siempre que queramos tokens, pos tags, árboles de dependencia o entidades nombradas. Incluye también modelos de word embeddings, que ya hemos visto superficialmente en el blog.
Modelos de spaCy de Python
Los modelos preentrenados para diferentes idiomas y con diferentes corpus pueden descargarse de diferentes maneras, tanto descarga como con pip.
Pipelines en spaCy de Python
Veamos un ejemplo del funcionamiento de estos pipelines:
text = 'Mi nombre es Fran y vivo en Madrid. Hoy es lunes 31 de enero de 2022'
doc = nlp_es (text)
Este comando lo que hará es generar un modelo de spaCy equivalente al texto. Podemos hacer diversas cosas, como la tokenización:
#Para frases
for idx, sent in enumerate (doc.sents):
print (f' Frase {idx} {sent.text}')
Frase 0 Mi nombre es Fran y vivo en Madrid.
Frase 1 Hoy es lunes 31 de enero de 2022.
#Tokens
for idx, token in enumerate (doc):
print (f' Token {idx} {token.text}')
print ('{0:10} {1:10} {2:5}'.format ('Token', 'Shape', 'is_alpha'))
for token in doc:
print ('{0:10} {1:10} {2:5}'.format (token.text, token.shape_, str (token.is_alpha)))
Como hemos visto, existen muchas cosas que se pueden realizar con spaCy de Python. Aquí te hemos mostrado algunas, esperamos que hayan sido suficientes para que te intereses en el tema y sigas aprendiendo.
¿Quieres seguir avanzando?
Para poder acceder a las opciones laborales del Big Data, una de las áreas en el mundo tech mejor pagadas y con mayor demanda, tenemos para ti el Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp. Con esta formación intensiva e íntegra adquirirás todos los conocimientos teóricos y prácticos que necesitas para conseguir el trabajo de tus sueños en pocos meses. ¡No sigas esperando para impulsar tu carrera y pide ahora más información!