SpaCy NLP avanzado: procesamiento del lenguaje natural

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción a SpaCy

SpaCy es una biblioteca de vanguardia para el procesamiento del lenguaje natural (Natural Language Processing, NLP), diseñada específicamente para su uso en producción. Creada por el equipo de Explosion AI, esta biblioteca se ha convertido en el estándar de facto para soluciones NLP industriales gracias a su alto rendimiento, precisión y facilidad de uso.

Principales ventajas de SpaCy

Arquitectura y rendimiento

SpaCy está construida en el lenguaje de programación Cython, lo que garantiza una velocidad excepcional en el procesamiento de datos textuales. La biblioteca utiliza algoritmos y estructuras de datos optimizados que permiten procesar millones de tokens por minuto en hardware estándar.

Soporte multilingüe

La biblioteca admite más de 20 idiomas, incluyendo español, inglés, chino, japonés, árabe y muchos otros. Cada idioma cuenta con modelos preentrenados especializados, optimizados para las características lingüísticas específicas.

Modelos listos para usar

SpaCy ofrece modelos preentrenados de diferentes tamaños (small, medium, large), lo que permite elegir el equilibrio óptimo entre velocidad y precisión para cada tarea.

Instalación y configuración de SpaCy

Instalación de la biblioteca base

pip install spacy

Descarga de modelos de idioma

Para inglés:

python -m spacy download en_core_web_sm
python -m spacy download en_core_web_md
python -m spacy download en_core_web_lg

Para español:

python -m spacy download es_core_news_sm
python -m spacy download es_core_news_md
python -m spacy download es_core_news_lg

Conexión e inicialización

import spacy

# Cargar modelo
nlp = spacy.load("es_core_news_sm")

# Procesar texto
doc = nlp("Apple está considerando comprar una startup en el Reino Unido.")

Componentes principales del pipeline de SpaCy

Tokenización

SpaCy divide automáticamente el texto en tokens, teniendo en cuenta las características del idioma, los signos de puntuación y los caracteres especiales:

doc = nlp("No te preocupes, ¡está funcionando!")
for token in doc:
    print(token.text, token.is_alpha, token.is_punct, token.like_num)

Análisis morfológico

Cada token contiene información morfológica detallada:

for token in doc:
    print(f"Palabra: {token.text}")
    print(f"Lema: {token.lemma_}")
    print(f"Parte de la oración: {token.pos_}")
    print(f"Etiqueta: {token.tag_}")
    print(f"Características morfológicas: {token.morph}")

Análisis sintáctico

SpaCy construye un árbol de dependencias para cada oración:

for token in doc:
    print(f"{token.text} <- {token.dep_} <- {token.head.text}")
    print(f"Hijos: {[child.text for child in token.children]}")

Lematización y stemming

Lematización en SpaCy

SpaCy proporciona lematización de alta calidad directamente:

doc = nlp("Los gatos están corriendo y saltando")
for token in doc:
    print(f"{token.text} -> {token.lemma_}")

Alternativas para stemming

Aunque SpaCy no incluye stemming directamente, se puede integrar con otras bibliotecas:

from nltk.stem import PorterStemmer
stemmer = PorterStemmer()

def add_stemming(doc):
    for token in doc:
        token._.stem = stemmer.stem(token.text)
    return doc

# Agregar como atributo personalizado
spacy.tokens.Token.set_extension("stem", default=None)

Reconocimiento de partes de la oración

Etiquetas POS universales

SpaCy utiliza un sistema universal

Recommendations