Introducción

Stanza es una biblioteca de PLN de código abierto de la Universidad de Stanford, basada en redes neuronales modernas. Permite el análisis lingüístico exhaustivo de textos en más de 70 idiomas. El objetivo de Stanza es proporcionar un sistema de canalización completo que abarque todos los pasos de procesamiento habituales: tokenización, etiquetado de categorías gramaticales (POS), lematización, análisis sintáctico (dependencias y constituyentes) y reconocimiento de entidades nombradas (NER).

Stanza es adecuada tanto para fines de investigación como para aplicaciones productivas, por ejemplo en clasificación de texto, extracción de información o en el preprocesamiento de textos para Retrieval Augmented Generation (RAG). Los modelos están preentrenados, pero también pueden afinarse. Internamente, Stanza se basa en el framework PyTorch.

Una canalización en el procesamiento del lenguaje (PLN) se refiere a una secuencia definida de pasos de procesamiento con los que se analiza y estructura un texto. Cada paso toma la salida del anterior como entrada y la enriquece con información lingüística adicional. El objetivo es generar gradualmente una representación lingüística más profunda a partir de texto en bruto, que pueda utilizarse para otras aplicaciones, p. ej., clasificación de texto, extracción de información o respuesta a preguntas.

Pasos de una canalización típica de Stanza

La canalización estándar de Stanza consta de los siguientes módulos (también llamados „procesadores“), que funcionan en este orden:

  1. Tokenización (tokenize)

  2. Reconocimiento de expresiones de varias palabras (mwt)

  3. Etiquetado de categorías gramaticales (pos)

  4. Lematización (lemma)

  5. Análisis de dependencias sintácticas (depparse)

  6. Análisis de constituyentes (constituency) - Solo para inglés

  7. Reconocimiento de entidades nombradas (ner)

  8. Análisis de sentimientos (sentiment) - Solo para inglés

1. Tokenización

La tokenización es el primer paso en el procesamiento de un texto por una canalización de PLN. En este proceso, el texto de entrada se divide en unidades individuales. Estas unidades se llaman tokens. Un token puede ser una palabra, un número, un signo de puntuación o un símbolo. La tokenización define dónde comienza y dónde termina un token. Esto es importante porque todos los pasos de procesamiento posteriores utilizan estas unidades.

Stanza utiliza modelos específicos de idioma para la tokenización. Estos modelos están entrenados con datos reales del lenguaje y tienen en cuenta las particularidades de cada idioma. En inglés, por ejemplo, Stanza reconoce que “U.S.A.” es un único token y no tres. También maneja correctamente abreviaturas, formatos de números y emojis.

Lo que Stanza proporciona en este paso:

  • Una división del texto en oraciones

  • Una lista de tokens por oración

  • Para cada token, se almacenan la posición de inicio y fin en el texto original

2. Reconocimiento de expresiones de varias palabras (MWT)

El reconocimiento de expresiones de varias palabras, o Multi Word Token Expansion, es un paso opcional en la canalización de Stanza. Solo se activa para ciertos idiomas en los que un solo token puede consistir en varias palabras. Esto incluye principalmente idiomas morfológicamente complejos como el árabe o el francés. En idiomas como el alemán o el inglés, este paso está desactivado por defecto, ya que las palabras ya se escriben por separado.

Cuando la componente MWT está activada, un token que contiene varias palabras se descompone en sus partes. Se conserva la estructura del token original, pero se crean palabras adicionales. Estas palabras son las unidades reales con las que trabajan los módulos posteriores como POS o lematización.

3. Etiquetado de categorías gramaticales (Part-of-Speech Tagging / POS)

El etiquetado de categorías gramaticales es un paso central en el procesamiento de lenguaje natural. En él se asigna a cada palabra una categoría gramatical. Ejemplos de tales categorías son sustantivo, verbo, adjetivo, adverbio, artículo o preposición. Esta información es necesaria para casi todos los pasos posteriores, ya que hace visibles las estructuras gramaticales.

Stanza utiliza modelos neuronales para llevar a cabo esta categorización automáticamente. A cada palabra se le asigna tanto una categoría universal (UPOS) como una categoría específica del idioma (XPOS). Además, se recogen rasgos morfológicos como género, número, caso, tiempo o forma verbal.

UPOS significa “Universal Part of Speech”. Es una clasificación de palabras en categorías básicas como sustantivo, verbo, adjetivo o artículo. Este sistema es igual para todos los idiomas. Un verbo en alemán y un verbo en inglés reciben ambos la etiqueta VERB.

XPOS es la categoría gramatical según las convenciones de un idioma determinado. En Stanza se define de manera distinta para cada idioma. Para inglés, por ejemplo:

  • NN representa un sustantivo en singular

  • VBZ representa un verbo en tercera persona del singular en presente

  • JJ representa un adjetivo

XPOS es, por tanto, una descripción más detallada de la categoría gramatical según el uso en la lengua correspondiente.

4. Lematización

La lematización es el proceso por el cual una palabra se reduce a su forma base, llamada lema. El objetivo es agrupar diferentes formas gramaticales de una palabra bajo una única forma. Esto es importante para comparar o procesar palabras independientemente de su tiempo, persona o número.

Ejemplos:

  • “went” se convierte en “go”

  • “dogs” se convierte en “dog”

Stanza utiliza un modelo de lematización que tiene en cuenta el contexto de la palabra. De esta forma, también puede tratar correctamente palabras con múltiples significados.

5. Análisis de dependencias sintácticas

El análisis de dependencias sintácticas examina la estructura gramatical de una oración. En él se determina, para cada palabra, de qué otra palabra depende y qué función cumple. El resultado es un árbol dirigido en el que cada palabra depende de una palabra principal. Las conexiones se llaman arcos y llevan etiquetas gramaticales como sujeto, objeto o modificador.

Stanza utiliza un modelo neuronal que genera las llamadas Universal Dependencies. Esta estructura muestra cómo se relacionan las palabras en la oración. Cada palabra tiene un “head” (palabra de la que depende) y una relación con ese head.

Relaciones de dependencia importantes

  • nsubj: sujeto nominal

  • obj: objeto directo

  • obl: complemento adverbial

  • root: raíz de la oración, normalmente el verbo principal

  • det: determinante

  • amod: adjetivo como modificador de un sustantivo

  • case: preposición o marcador de caso

  • punct: signo de puntuación

6. Análisis de constituyentes - Solo para inglés

El análisis de constituyentes examina de qué partes se compone una oración y cómo se anidan entre sí. Se identifica qué palabras forman conjuntamente una unidad, como un sujeto o un objeto. Estas unidades se llaman frases, por ejemplo frase nominal o frase verbal.

El análisis muestra la estructura de la oración en forma de árbol. Cada oración se divide en grupos cada vez mayores, por ejemplo: primero palabras sueltas, luego frases y luego la oración completa.

Stanza utiliza para ello un conjunto de reglas en inglés denominado Penn Treebank. Funciona bien para textos en inglés. Para textos en alemán, el análisis de constituyentes no está disponible actualmente en Stanza. Esta función es especialmente útil para oraciones en inglés. Para alemán, es necesario usar además la biblioteca Berkeley Neural Parser (Benepar).

7. Reconocimiento de entidades nombradas (Named Entity Recognition)

El reconocimiento de entidades nombradas es un paso en el procesamiento de PLN en el que se identifican palabras o grupos de palabras que representan objetos de interés. Estas unidades se llaman entidades y pueden referirse, por ejemplo, a personas, lugares, organizaciones, fechas u cantidades monetarias.

Stanza reconoce entidades automáticamente sobre la base de un modelo neuronal entrenado. Cada entidad detectada se asigna a un tipo fijo. El modelo tiene en cuenta el contexto y puede capturar correctamente entidades compuestas como “New York City” o “United Nations”.

Tipos de entidad en Stanza

  • PERSON: nombre o apellido de una persona

  • GPE: entidad geopolítica como país o ciudad

  • ORG: organización como empresa o institución

  • DATE: fecha

  • TIME: hora

  • MONEY: cantidad monetaria

  • LOC: ubicación geográfica sin función política

  • PRODUCT: objeto o producto

8. Análisis de sentimientos (Sentiment Analysis) - Solo para inglés

El análisis de sentimientos evalúa si el contenido de una oración es más bien positivo, neutral o negativo. El modelo examina no palabras individuales, sino la oración completa en su contexto. Así puede, por ejemplo, reconocer que formulaciones irónicas o atenuantes hacen que una afirmación en principio positiva aparezca como neutral o incluso negativa.

Stanza ofrece actualmente el análisis de sentimientos solo para textos en inglés. Se basa en un modelo neuronal entrenado con el corpus SSTplus. El modelo es capaz de analizar cualquier estructura de oración y asignarla a una de tres categorías.

Niveles de clasificación

  • 0: negativo

  • 1: neutral

  • 2: positivo

Ejemplo de código

Salida

Análisis de archivo PDF

El problema con la salida anterior es que el texto del PDF se pasó a la canalización de Stanza de forma íntegra y sin la preprocesamiento adecuado. Como resultado, Stanza reconoce y procesa no solo las oraciones de contenido real, sino también restos de diseño y formato del documento, como encabezados, números de página, títulos individuales, notas al pie o viñetas, como oraciones independientes. Esto provoca que en la salida aparezcan numerosos fragmentos inconexos o incluso carentes de significado como oraciones separadas. Además, oraciones coherentes se ven interrumpidas por saltos de línea duros, tan comunes en PDFs, y se analizan como unidades separadas. La consecuencia es que el análisis lingüístico no refleja la verdadera estructura de las oraciones, sino que está dominado por el diseño y las particularidades técnicas del PDF. Para obtener un análisis significativo y preciso, es necesario limpiar estos artefactos antes de pasar el texto a la canalización de Stanza, unir correctamente palabras separadas por saltos de línea y segmentar el texto en oraciones completas y gramaticalmente coherentes. Solo así es posible lograr con Stanza un análisis lingüístico semánticamente relevante y útil para pasos de procesamiento posteriores.

Extracción y preprocesamiento lingüístico con DeepSeek & Stanza

Una mirada atenta a la salida del paso 7, el reconocimiento de entidades nombradas (NER), puede generar algo de confusión. Aunque entidades como OPITZ CONSULTING y STACKIT se reconocen correctamente como organizaciones (ORG), faltan asignaciones esperadas, por ejemplo para la fecha “1. März 2024” o para nombres de producto como “STACKIT Cloud”.

La razón no está en un error del script, sino en el modelo de idioma que Stanza utiliza por defecto para alemán. Como indica el registro al iniciar el script, se emplea el paquete germeval2014. Este modelo se entrenó con datos del “GermEval 2014 Shared Task” y solo conoce los cuatro tipos de entidad que se centraron en esa competición: PER (persona), LOC (lugar), ORG (organización) y OTH (otro).

Categorías como DATE (fecha), MONEY (cantidad monetaria) o PRODUCT (producto) simplemente no están contempladas en este modelo específico. Por tanto, solo puede reconocer lo que conoce. Esta es una lección importante al trabajar con modelos de IA prefabricados: su capacidad y su “conocimiento” siempre están limitados por los datos y el objetivo de su entrenamiento original.

Pipeline híbrida: mejora del reconocimiento de entidades nombradas (NER)

El script original se ha desarrollado hasta convertirse en una canalización de procesamiento robusta y modular. Los cambios más importantes son:

  • Sustitución del componente NER: el paso decisivo fue eliminar el reconocimiento de entidades nombradas estándar de Stanza, basado en el antiguo modelo germeval2014. En su lugar, ahora se utiliza un modelo moderno basado en la biblioteca Hugging Face transformers. Este nuevo modelo (domischwimmbeck/bert-base-german-cased-fine-tuned-ner) no solo reconoce más tipos de entidad, sino que normalmente ofrece mayor precisión.

  • Introducción de una canalización híbrida: en lugar de confiar en una única biblioteca, el script combina ahora las fortalezas de dos herramientas especializadas.

Nueva salida de entidades nombradas

En Hugging Face están disponibles más modelos NER:
https://huggingface.co/models?library=pytorch&language=de&sort=likes

SpaCy en lugar de Stanza

En la nueva versión del script se ha reemplazado todo el análisis lingüístico básico que antes realizaba la biblioteca Stanza por la biblioteca spaCy. spaCy es una librería muy popular y optimizada para la velocidad, que se emplea con frecuencia en aplicaciones productivas. Mientras que Stanza es conocida por su alta precisión académica, spaCy ofrece un excelente equilibrio entre rendimiento y precisión, y proporciona resultados de análisis que a menudo se consideran especialmente intuitivos para el procesamiento posterior en proyectos de software. La lógica central de la canalización híbrida – la combinación de un análisis básico con un modelo NER especializado – permanece idéntica.
Los siguientes pasos de análisis ya no los realiza Stanza, sino spaCy:

  • Tokenización: división de las oraciones en palabras individuales (tokens)

  • Etiquetado gramatical (POS-Tagging): asignación de una categoría gramatical a cada palabra (p. ej. sustantivo, verbo, adjetivo)

  • Lematización: reducción de cada palabra a su forma base (p. ej. “ging” → “gehen”)

  • Análisis de dependencias: análisis de la estructura sintáctica de la oración, es decir, qué palabras dependen gramaticalmente unas de otras