No atual mundo repleto de dados, insights valiosos ficam frequentemente bloqueados em textos não estruturados, como anotações clínicas detalhadas, longos documentos jurídicos, threads de feedback de clientes e relatórios de notícias em evolução. Peneirar manualmente essas informações ou criar código sob medida para processar os dados é demorado e propenso a erros, e o uso de modelos de linguagem grandes (LLMs) modernos sem a devida atenção pode introduzir erros. E se você pudesse extrair as informações exatas de que precisa de forma programática e ainda garantir que as saídas fossem estruturadas e vinculadas de forma confiável às suas fontes?
Hoje, temos o prazer de apresentar o LangExtract, uma nova biblioteca do Python de código aberto projetada para capacitar os desenvolvedores a fazer exatamente isso. O LangExtract fornece uma interface leve para vários LLMs, como nossos modelos Gemini, para processar grandes volumes de texto não estruturado em informações estruturadas com base em instruções personalizadas, garantindo flexibilidade e rastreabilidade.
Seja para trabalhar com relatórios médicos, resumos financeiros ou qualquer outro domínio com uso intensivo de texto, o LangExtract oferece uma maneira flexível e poderosa de desbloquear os dados dentro desses materiais.
O LangExtract oferece uma combinação exclusiva de recursos que o tornam útil para a extração de informações:
Veja como extrair detalhes de personagens a partir de uma linha de Shakespeare.
Primeiro, instale a biblioteca:
Para obter instruções de configuração mais detalhadas, incluindo ambientes virtuais e configuração de chaves de API, consulte o README do projeto.
pip install langextract
Em seguida, defina a tarefa de extração. Forneça um prompt claro e um exemplo "few-shot" de alta qualidade para orientar o modelo.
import textwrap
import langextract as lx
# 1. Define a concise prompt
prompt = textwrap.dedent("""\
Extract characters, emotions, and relationships in order of appearance.
Use exact text for extractions. Do not paraphrase or overlap entities.
Provide meaningful attributes for each entity to add context.""")
# 2. Provide a high-quality example to guide the model
examples = [
lx.data.ExampleData(
text=(
"ROMEO. But soft! What light through yonder window breaks? It is"
" the east, and Juliet is the sun."
),
extractions=[
lx.data.Extraction(
extraction_class="character",
extraction_text="ROMEO",
attributes={"emotional_state": "wonder"},
),
lx.data.Extraction(
extraction_class="emotion",
extraction_text="But soft!",
attributes={"feeling": "gentle awe"},
),
lx.data.Extraction(
extraction_class="relationship",
extraction_text="Juliet is the sun",
attributes={"type": "metaphor"},
),
],
)
]
# 3. Run the extraction on your input text
input_text = (
"Lady Juliet gazed longingly at the stars, her heart aching for Romeo"
)
result = lx.extract(
text_or_documents=input_text,
prompt_description=prompt,
examples=examples,
model_id="gemini-2.5-pro",
)
O objeto result contém as entidades extraídas, que podem ser salvas em um arquivo JSONL. A partir daí, você pode gerar um arquivo HTML interativo para visualizar as anotações. Essa visualização é ótima para demonstrações ou para avaliação da qualidade da extração, economizando um tempo valioso. Ela funciona perfeitamente em ambientes como o Google Colab ou pode ser salva como um arquivo HTML autônomo, visível no navegador.
# Save the results to a JSONL file
lx.io.save_annotated_documents([result], output_name="extraction_results.jsonl")
# Generate the interactive visualization from the file
html_content = lx.visualize("extraction_results.jsonl")
with open("visualization.html", "w") as f:
f.write(html_content)
Os mesmos princípios acima se aplicam a domínios especializados, como medicina, finanças, engenharia ou direito. As ideias por trás do LangExtract foram aplicadas pela primeira vez à extração de informações médicas e podem ser eficazes no processamento de textos clínicos. Por exemplo, ele pode identificar medicamentos, dosagens e outros atributos de medicamentos e, em seguida, mapear as relações entre eles. Essa capacidade foi uma parte essencial da pesquisa que levou a esta biblioteca, sobre a qual você pode ler em nosso artigo sobre aceleração da extração de informações médicas.
A animação abaixo mostra o LangExtract processando um texto clínico para extrair entidades relacionadas a medicamentos e agrupá-las no medicamento de origem.
Para mostrar o poder do LangExtract em um campo especializado, desenvolvemos uma demonstração interativa para relatórios estruturados de radiologia chamada RadExtract na Hugging Face. Essa demonstração mostra como o LangExtract pode processar um relatório de radiologia em texto livre e converter automaticamente suas principais conclusões em um formato estruturado, destacando também as conclusões mais importantes. Essa abordagem é importante para a radiologia, onde a estruturação de relatórios aumenta a clareza, garante a integridade e melhora a interoperabilidade de dados para pesquisa e atendimento clínico.
Isenção de responsabilidade: O exemplo de extração de medicamentos e a demonstração de relatórios estruturados acima são apenas para fins ilustrativos da capacidade de linha de base do LangExtract. Ele não representa um produto acabado ou aprovado, não se destina a diagnosticar nenhuma doença ou condição nem a sugerir tratamentos e não deve ser usado para aconselhamento médico.
Mal podemos esperar para ver as maneiras inovadoras pelas quais os desenvolvedores usarão o LangExtract para desbloquear insights de textos. Mergulhe na documentação, explore os exemplos em nosso repositório do GitHub e comece a transformar seus dados não estruturados hoje mesmo.