En el mundo actual, lleno de datos, los textos no estructurados, como notas clínicas detalladas, documentos legales largos, hilos de comentarios de los clientes e informes de noticias en evolución, guardan información valiosa. Examinar manualmente esta información o crear un código a medida para procesar los datos requiere mucho tiempo y es un proceso que suele tener errores, y el uso inconsciente de modelos modernos de lenguaje grande (LLM) puede introducir errores. ¿Qué pasaría si pudieras extraer programáticamente la información exacta que necesitas y, al mismo tiempo, asegurarte de que los resultados estén estructurados y vinculados de manera confiable a su fuente?
Hoy, nos complace presentar LangExtract, una nueva biblioteca de Python de código abierto diseñada para permitir a los desarrolladores hacer precisamente eso. LangExtract proporciona una interfaz ligera para varios LLM, como nuestros modelos Gemini, para procesar grandes volúmenes de texto no estructurado en información estructurada basada en sus instrucciones personalizadas, lo que garantiza tanto la flexibilidad como la trazabilidad.
Ya sea que estés trabajando con informes médicos, resúmenes financieros o cualquier otro dominio de texto pesado, LangExtract ofrece una forma flexible y poderosa de aprovechar los datos que hay dentro de ese texto.
LangExtract ofrece una combinación única de capacidades que la hacen útil para la extracción de información:
A continuación, te mostramos cómo extraer detalles de los personajes de una línea de Shakespeare.
Primero, instala la biblioteca:
Para obtener instrucciones de configuración más detalladas, incluidos entornos virtuales y configuración de claves API, consulta el proyecto README.
pip install langextract
Luego, define tu tarea de extracción. Proporciona una indicación clara y un ejemplo conciso de alta calidad para guiar el modelo.
importar textwrap
importar langextract as lx
# 1. Definir una indicación precisa
prompt = textwrap.dedent("""\
Extraer caracteres, emociones y relaciones en orden de aparición.
Usar texto exacto para extracciones. No parafrasear ni superponer entidades.
Proporcionar atributos significativos para cada entidad para agregar contexto.""")
# 2. Proporcionar un ejemplo de alta calidad para guiar el modelo
examples = [
lx.data.ExampleData(
text=(
"ROMEO. Pero, ¡alto! ¿Qué luz alumbra esa ventana? Es"
" el oriente, 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="Pero, ¡alto!",
attributes={"feeling": "gentle awe"},
),
lx.data.Extraction(
extraction_class="relationship",
extraction_text="Julieta es el sol",
attributes={"type": "metaphor"},
),
],
)
]
# 3. Ejecutar extracción en texto de entrada
input_text = (
"Lady Julieta contemplaba las estrellas con anhelo, con el corazón dolido por Romeo"
)
result = lx.extract(
text_or_documents=input_text,
prompt_description=prompt,
examples=examples,
model_id="gemini-2.5-pro",
)
El objeto result contiene las entidades extraídas, que se pueden guardar en un archivo JSONL. A partir de ahí, puedes generar un archivo HTML interactivo para ver las anotaciones. Esta visualización es ideal para demostraciones o para evaluar la calidad de la extracción, ya que te ahorra un tiempo valioso. Funciona a la perfección en entornos como Google Colab o se puede guardar como un archivo HTML independiente que se puede ver desde tu navegador.
# Guardar los resultados en un archivo JSONL
lx.io.save_annotated_documents([result], output_name="extraction_results.jsonl")
# Genera la visualización interactiva desde el archivo
html_content = lx.visualize("extraction_results.jsonl")
con open("visualization.html", "w") como f:
f.write(html_content)
Los mismos principios anteriores se aplican a dominios especializados como medicina, finanzas, ingeniería o derecho. Las ideas detrás de LangExtract se aplicaron por primera vez a la extracción de información médica y pueden ser eficaces para procesar textos clínicos. Por ejemplo, puede identificar medicamentos, dosis y otros atributos de medicamentos, y luego asignar relaciones entre ellos. Esta capacidad fue una parte fundamental de la investigación que condujo a esta biblioteca, que puedes leer en nuestro documento sobre la aceleración de la extracción de información médica.
La siguiente animación muestra a LangExtract procesando un texto clínico para extraer entidades relacionadas con medicación y agruparlas en la medicación de origen.
A fin de mostrar el poder de LangExtract en un campo especializado, desarrollamos una demostración interactiva para informes de radiología estructurada llamada RadExtract en Hugging Face. Esta demostración muestra cómo LangExtract puede procesar un informe de radiología de texto libre y convertir automáticamente sus hallazgos clave en un formato estructurado, destacando también los hallazgos importantes. Este enfoque es importante en radiología, donde la estructuración de informes aumenta la claridad, garantiza la integridad y mejora la interoperabilidad de los datos para la investigación y la atención clínica.
Declinación de garantías: El ejemplo de extracción de medicamentos y la demostración de informes estructurados anteriores son solo para fines ilustrativos de la capacidad de referencia de LangExtract. No representan un producto terminado o aprobado, no están destinados a diagnosticar o sugerir el tratamiento de ninguna enfermedad o afección, y no deben usarse para asesoramiento médico.
Nos entusiasma ver las formas innovadoras en que los desarrolladores usarán LangExtract para obtener información a partir del texto. Sumérgete en la documentación, explora los ejemplos en nuestro repositorio de GitHub y comienza a transformar tus datos no estructurados hoy mismo.