Google AI выпускает LangExtract: открытую библиотеку Python для извлечения структурированных данных из неструктурированных текстовых документов

В современном мире, управляемом данными, ценные сведения часто скрыты в неструктурированном тексте — будь то клинические записи, длинные юридические договоры или отзывы клиентов. Извлечение значимой, отслеживаемой информации из этих документов является сложной технической и практической задачей. Новая открытая библиотека Python от Google AI, LangExtract, предназначена для решения этой проблемы напрямую, используя большие языковые модели (LLMs) вроде Gemini для обеспечения мощного автоматизированного извлечения с отслеживаемостью и прозрачностью.

Ключевые инновации LangExtract

1. Декларативное и отслеживаемое извлечение

LangExtract позволяет пользователям определять пользовательские задачи извлечения с помощью инструкций на естественном языке и высококачественных примеров с малым количеством данных. Это даёт разработчикам и аналитикам возможность точно указывать, какие сущности, отношения или факты извлекать и в какой структуре. Важно, что каждая извлечённая часть информации привязана непосредственно к исходному тексту, что позволяет проверять, проводить аудит и обеспечивать сквозную отслеживаемость.

2. Доменная универсальность

Библиотека работает не только в технических демонстрациях, но и в критически важных реальных областях, включая здравоохранение (клинические записи, медицинские отчёты), финансы (резюме, документы о рисках), право (контракты), исследовательскую литературу и даже искусство (анализ произведений Шекспира).

Примеры использования включают автоматическое извлечение лекарств, дозировок и сведений о введении препаратов из клинических документов, а также отношений и эмоций из пьес или литературы.

3. Применение схем с помощью LLMs

LangExtract, работающий на базе Gemini и совместимый с другими LLMs, позволяет применять пользовательские схемы вывода (например, JSON), чтобы результаты были не только точными, но и сразу же пригодными для использования в последующих базах данных, аналитике или конвейерах искусственного интеллекта.

Это устраняет традиционные слабые места LLMs, связанные с галлюцинациями и смещением схемы, привязывая результаты как к инструкциям пользователя, так и к исходному тексту.

4. Масштабируемость и визуализация

* Обработка больших объёмов: LangExtract эффективно обрабатывает длинные документы, разбивая их на части, параллельно обрабатывая результаты.
* Интерактивная визуализация: разработчики могут создавать интерактивные HTML-отчёты, просматривая каждую извлечённую сущность в контексте, выделяя её местоположение в исходном документе.
* Простая интеграция: работает в Google Colab, Jupyter или как автономные HTML-файлы, поддерживая быструю обратную связь для разработчиков и исследователей.

5. Установка и использование

LangExtract легко устанавливается с помощью pip:

`pip install langextract`

Пример рабочего процесса (извлечение информации о персонажах из произведений Шекспира):

“`python
import langextract as lx
import textwrap

# 1. Определите запрос
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. Приведите высококачественный пример
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(extractionclass=”character”, extractiontext=”ROMEO”, attributes={“emotional_state”: “wonder”}),
lx.data.Extraction(extractionclass=”emotion”, extractiontext=”But soft!”, attributes={“feeling”: “gentle awe”}),
lx.data.Extraction(extractionclass=”relationship”, extractiontext=”Juliet is the sun”, attributes={“type”: “metaphor”}),
],
)
]

# 3. Извлеките из нового текста
input_text = “Lady Juliet gazed longingly at the stars, her heart aching for Romeo”

result = lx.extract(
textordocuments=input_text,
prompt_description=prompt,
examples=examples,
model_id=”gemini-2.5-pro”
)

# 4. Сохраните и визуализируйте результаты
lx.io.saveannotateddocuments([result], outputname=”extractionresults.jsonl”)
htmlcontent = lx.visualize(“extractionresults.jsonl”)
with open(“visualization.html”, “w”) as f:
f.write(html_content)
“`

Это приводит к структурированным, привязанным к источнику выводам в формате JSON, а также к интерактивной HTML-визуализации для удобного просмотра и демонстрации.

Специализированные и реальные приложения

* Медицина: извлекает лекарства, дозировки, время введения и связывает их с исходными предложениями.
* Финансы и право: автоматически извлекает соответствующие положения, термины или риски из плотных юридических или финансовых текстов.
* Исследования и интеллектуальный анализ данных: упрощает извлечение данных из тысяч научных статей.

Команда даже предоставляет демонстрацию под названием RadExtract для структурирования радиологических отчётов, выделяя не только извлечённую информацию, но и точное место, где она появилась в исходном вводе.

Сравнение с традиционными подходами

| Характеристика | Традиционные подходы | Подход LangExtract |
| — | — | — |
| Согласованность схемы | Часто ручная/ошибка | Обеспечивается с помощью инструкций и примеров с малым количеством данных |
| Отслеживаемость результатов | Минимальная | Все выходные данные связаны с входным текстом |
| Масштабирование до длинных текстов | Оконный, с потерями | Разбиение на части + параллельное извлечение, затем агрегация |
| Визуализация | Пользовательская, обычно отсутствует | Встроенная, интерактивная HTML-отчёты |
| Развёртывание | Жёсткое, специфичное для модели | Gemini-first, открыто для других LLMs и на местах |

В заключение

LangExtract открывает новую эру извлечения структурированных, действенных данных из текста, предоставляя:
* Декларативное, объяснимое извлечение.
* Отслеживаемые результаты, подкреплённые исходным контекстом.
* Мгновенную визуализацию для быстрой итерации.
* Лёгкую интеграцию в любой рабочий процесс Python.

Ознакомьтесь с [GitHub Page](https://github.com/) и [Technical Blog](https://www.marktechpost.com/). Не стесняйтесь проверять наши [GitHub Page](https://github.com/) для руководств, кодов и ноутбуков. Также подписывайтесь на нас в [Twitter](https://twitter.com/) и присоединяйтесь к нашему [ML SubReddit](https://www.reddit.com/).

1. Какие проблемы решает библиотека LangExtract и для каких сфер она может быть полезна?

Библиотека LangExtract решает проблему извлечения структурированных данных из неструктурированных текстовых документов. Она может быть полезна в различных сферах, таких как здравоохранение (клинические записи, медицинские отчёты), финансы (резюме, документы о рисках), право (контракты), исследовательская литература и даже искусство (анализ произведений Шекспира).

2. Какие ключевые инновации предлагает LangExtract для извлечения данных?

Ключевые инновации LangExtract включают:
* Декларативное и отслеживаемое извлечение, позволяющее пользователям определять пользовательские задачи извлечения с помощью инструкций на естественном языке и высококачественных примеров с малым количеством данных.
* Доменная универсальность, позволяющая работать в различных областях.
* Применение схем с помощью LLMs, позволяющее применять пользовательские схемы вывода (например, JSON), чтобы результаты были не только точными, но и сразу же пригодными для использования в последующих базах данных, аналитике или конвейерах искусственного интеллекта.
* Масштабируемость и визуализация, позволяющие эффективно обрабатывать длинные документы и создавать интерактивные HTML-отчёты.

3. Как LangExtract обеспечивает отслеживаемость результатов?

LangExtract обеспечивает отслеживаемость результатов путём привязки каждой извлечённой части информации непосредственно к исходному тексту. Это позволяет проверять, проводить аудит и обеспечивать сквозную отслеживаемость.

4. Какие преимущества предлагает LangExtract по сравнению с традиционными подходами к извлечению данных?

Преимущества LangExtract по сравнению с традиционными подходами включают:
* Согласованность схемы, обеспечиваемая с помощью инструкций и примеров с малым количеством данных.
* Отслеживаемость результатов, все выходные данные связаны с входным текстом.
* Масштабирование до длинных текстов, разбиение на части и параллельное извлечение, затем агрегация.
* Визуализация, встроенная и интерактивная HTML-отчёты.
* Развёртывание, лёгкое интегрирование в любой рабочий процесс Python.

Источник