Estructura de Texto con LLM: Sencillo
Descubre LangExtract, una potente biblioteca de Python diseñada para transformar texto no estructurado en datos estructurados utilizando Modelos de Lenguaje Grandes (LLMs). Esta herramienta ofrece una contextualización precisa de la información extraída, visualizaciones interactivas y un soporte flexible para LLMs, incluyendo Gemini y Ollama. Ya sea que estés trabajando con notas clínicas, informes o literatura, LangExtract simplifica las tareas complejas de extracción de datos, permitiendo obtener resultados fiables con solo unos pocos ejemplos. Aprende a instalar, configurar claves API y aprovechar sus capacidades para tus proyectos, incluyendo el manejo de documentos largos y la visualización de las entidades extraídas en un formato HTML fácil de entender.
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.