Estructura de Texto con LLM: Sencillo

LangExtract: Estructuración de Texto Optimizada con LLMs

LangExtract es una biblioteca de código abierto para Python de vanguardia que permite a los usuarios extraer información estructurada de texto no estructurado con una facilidad y precisión sin precedentes. Aprovechando el poder de los Modelos de Lenguaje Grandes (LLMs), esta herramienta está diseñada para procesar diversos formatos de texto, desde notas clínicas e informes hasta obras literarias, y organizar detalles clave en un esquema consistente y utilizable.

¿Por qué elegir LangExtract?

LangExtract destaca por su conjunto único de características:

  • Precisa Vinculación a la Fuente: Cada dato extraído se mapea meticulosamente a su ubicación exacta en el texto original. Esto permite una fácil verificación y resaltado visual dentro del documento fuente, garantizando la trazabilidad.
  • Salidas Estructuradas Confiables: Mediante el uso de ejemplos "few-shot" y generación controlada en modelos compatibles como Google Gemini, LangExtract impone un esquema de salida consistente, lo que conduce a resultados estructurados robustos y predecibles.
  • Optimizado para Documentos Largos: La biblioteca aborda el desafío de extraer información de textos extensos a través de una estrategia eficiente que implica la división del texto en fragmentos (chunking), procesamiento paralelo y múltiples pasadas de extracción, mejorando significativamente la recuperación.
  • Visualización Interactiva: LangExtract genera archivos HTML interactivos y autocontenidos, lo que facilita la visualización y revisión de miles de entidades extraídas dentro de su contexto textual original.
  • Soporte Flexible para LLMs: Ya sea que prefiera LLMs basados en la nube como Gemini o modelos locales de código abierto a través de Ollama, LangExtract ofrece una amplia compatibilidad y se puede extender a otras API de terceros.
  • Adaptable a Cualquier Dominio: Defina tareas de extracción para cualquier campo utilizando solo unos pocos ejemplos, eliminando la necesidad de ajuste fino del modelo (fine-tuning).

Primeros Pasos con LangExtract

La instalación es sencilla a través de pip:

pip install langextract

Para modelos basados en la nube, generalmente se requiere la configuración de una clave API. LangExtract admite la configuración de la clave API a través de variables de entorno o un archivo .env para una gestión segura. Las opciones incluyen modelos Gemini a través de AI Studio o Vertex AI, y modelos de OpenAI.

El uso básico implica definir su tarea de extracción con un "prompt" y proporcionar ejemplos:

import langextract as lx
import textwrap

# Definir la tarea de extracción
prompt = textwrap.dedent("""
Extrae personajes, emociones y relaciones en orden de aparición.
Utiliza el texto exacto para las extracciones. No parafrasees ni solapes entidades.
Proporciona atributos significativos para cada entidad para añadir contexto."""
)

# Proporcionar ejemplos de guía
examples = [
    lx.data.ExampleData(
        text="ROMEO. Pero, ¡alto! ¿Qué luz rompe a través de la ventana de allá? Es el este, y Julieta es el sol.",
        extractions=[
            lx.data.Extraction(extraction_class="character", extraction_text="ROMEO", attributes={"emotional_state": "wonder"}),
            lx.data.Extraction(extraction_class="emotion", extraction_text="¡alto!", attributes={"feeling": "gentle awe"}),
            lx.data.Extraction(extraction_class="relationship", extraction_text="Juliet is the sun", attributes={"type": "metaphor"})
        ]
    )
]

# Texto de entrada
input_text = "Lady Juliet miró las estrellas con anhelo, con el corazón doliéndole por Romeo"

# Ejecutar la extracción
result = lx.extract(
    text_or_documents=input_text,
    prompt_description=prompt,
    examples=examples,
    model_id="gemini-2.5-flash",
)

# Guardar resultados y visualizar
lx.io.save_annotated_documents([result], output_name="extraction_results.jsonl")
html_content = lx.visualize("extraction_results.jsonl")
with open("visualization.html", "w") as f: f.write(html_content)

Este proceso genera un archivo HTML interactivo, que permite una fácil revisión y análisis de las entidades extraídas.

Capacidades Avanzadas

LangExtract sobresale con documentos más largos, admitiendo el procesamiento directo desde URLs (por ejemplo, Project Gutenberg) y ofreciendo parámetros como extraction_passes y max_workers para optimizar el rendimiento y la recuperación. La biblioteca también presenta aplicaciones especializadas como Extracción de Medicamentos y RadExtract, una demostración para estructurar informes de radiología disponible en Hugging Face Spaces.

Contribuye al proyecto a través de su repositorio de GitHub y explora los ejemplos detallados para un uso avanzado y conocimientos sobre sus potentes capacidades para el procesamiento del lenguaje natural y las tareas de estructuración de datos.

Artículo original: Ver original

Compartir este artículo