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.