ПрименениеNER

Извлечение информации

Структурированные данные из текста

Проблема: Важные факты скрыты в неструктурированном тексте — письмах, документах, веб-страницах. Как автоматически вытащить нужные данные?

Решение: Детектив, ищущий улики

Извлечение информации (information extraction, IE) использует LLM для идентификации и извлечения конкретных данных из неструктурированного текста — из «грязных» абзацев в письмах, PDF, контрактах и веб-страницах — и превращает их в чистые, машиночитаемые записи. Например, из текста "Контракт между Acme Corp и Иваном Петровым от 15 января 2024 на $50,000..." модель выдаёт структурированный JSON: { сторона_а: "Acme Corp", сторона_б: "Иван Петров", дата: "2024-01-15", сумма: 50000 }. Две классические подзадачи — это распознавание именованных сущностей (помечаем фрагменты, которые являются сущностями: люди, организации, даты, суммы) и извлечение связей (relation extraction) — кто подписал что, кто где работает. Результат почти всегда нужен как структурированный вывод, который код ниже по конвейеру использует напрямую, без ручного перепечатывания.

Как это работает

На практике ты даёшь модели две вещи: явную схему вывода (output schema) — точные имена полей, типы и то, какие поля обязательны — и сам исходный текст. С сильной instruction-tuned моделью это часто работает zero-shot, но точность заметно растёт, когда ты добавляешь несколько few-shot примеров, покрывающих граничные случаи: отсутствующий телефон, два человека с одинаковым именем, сумму прописью вместо цифр. Современные API позволяют принудительно соблюдать схему прямо на этапе декодирования (JSON mode / constrained output), и это убирает целый класс ошибок парсинга, потому что ответ гарантированно валидный JSON нужной формы. По сравнению со старыми системами на правилах (регулярные выражения и написанные вручную паттерны) LLM обобщается на формулировки, которых раньше не видела, и учитывает контекст — но стоит дороже за документ и хуже предсказуема.

Подводные камни и разбор примера

Главный риск — галлюцинация (hallucination): когда поля нет в тексте, модель может выдумать правдоподобное значение вместо null. Лечится это так: (1) явно просим возвращать null для всего, что не указано, и (2) валидируем каждое извлечённое поле по исходному тексту, прежде чем ему доверять. Используй IE, когда данные повторяющиеся и их много (тысячи счетов, резюме, тикетов поддержки) и допустим небольшой процент ошибок с ручной проверкой спорных случаев. Конкретный пример: подаём модели строку из письма "Привет, перенесите мою встречу со вторника на следующую пятницу в 15:00, мой номер обращения #A-4471" со схемой { действие, старая_дата, новая_дата, время, номер }. Хороший промпт вернёт { действие: "перенести", старая_дата: "вторник", новая_дата: "следующая пятница", время: "15:00", номер: "A-4471" } — заметь, что относительные даты остались как в тексте: чтобы превратить «следующую пятницу» в конкретную дату календаря, нужен контекст, которого в самой строке нет.

Представьте это как детектива, ищущего улики:

  • 1. Определяем типы сущностей: Что извлекаем: людей, организации, даты, суммы, адреса
  • 2. Определяем схему вывода (JSON): Указываем точные имена полей, типы и структуру вложенности для вывода
  • 3. Даём примеры с граничными случаями: Показываем, как обрабатывать отсутствующие поля, неоднозначные сущности и многозначные поля
  • 4. ИИ извлекает сущности: Модель читает текст и заполняет JSON-схему найденными значениями
  • 5. Валидируем по источнику: Сверяем каждое извлечённое поле — помечаем как ПОДТВЕРЖДЕНО (найдено в тексте) или НЕ ПОДТВЕРЖДЕНО (выведено)

Где это используется?

  • Парсинг резюме: Извлечение навыков, опыта, контактов
  • Обработка счетов: Вытягивание сумм, дат, данных поставщиков
  • Медицинские записи: Поиск диагнозов, лекарств, дат
  • Анализ контрактов: Определение условий, сторон, обязательств

Интересный факт: LLM могут извлекать информацию из сложных связей! "Иван работает в Acme, которая была основана в 2010" — ИИ может понять, что компания Ивана была основана в 2010, хотя это явно не указано.

Попробуйте сами!

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

Бизнес-новостиСущность 1/5

Apple Inc. объявила, что CEO Тим Кук представит новый iPhone в штаб-квартире в Купертино 12 сентября 2024 года. Компания ожидает выручку в $90 миллиардов.

Какой тип сущности «Apple Inc.»?
ЧеловекОрганизацияМестоДатаДеньги
Key Insight
  • NER находит именованные сущности (Человек, Организация, Место, Дата, Деньги) в тексте.
  • Связи находит связи между сущностями: работает_в, находится_в, владеет.
  • LLMs делают это без обучения. Не нужны тренировочные данные — опишите, что извлекать.

Частые вопросы

Что такое Named Entity Recognition (NER)?

NER находит и классифицирует именованные сущности в тексте по категориям: персона, организация, место, дата, денежная сумма. LLM выполняют NER zero-shot, без обучающих данных.

Может ли LLM извлекать данные в JSON без fine-tuning?

Да. При хорошо структурированном промпте с описанием желаемой схемы LLM извлекает сущности и выдаёт валидный JSON. Используйте JSON mode или function calling для гарантии формата.

Как обрабатывать вложенные и перекрывающиеся сущности?

Применяйте иерархическое извлечение: сначала идентифицируйте сущности верхнего уровня, затем извлеките атрибуты каждой. Для перекрывающихся сущностей укажите правила приоритета в промпте.

В чём преимущество LLM перед rule-based извлечением?

LLM справляются с неоднозначностью, контекстом и новыми паттернами без написания правил. Они обобщаются на домены и языки. Rule-based системы быстрее и предсказуемее, но хрупкие при вариациях текста.

Попробуй сам

Интерактивное демо этой техники

Сравнение техник
Демо режим
Предзаписанные ответы
ЗадачаНачинающийАнализ

Извлеки ключевые сущности из новостной статьи

Без техники
Без техники
Промпт
Какие сущности упоминаются в тексте? "Компания Tesla под руководством Илона Маска объявила 15 марта 2025 года о строительстве нового завода в Берлине стоимостью 5 млрд евро. По словам министра экономики Германии Роберта Хабека, проект создаст 10 000 рабочих мест."
Ответ

В тексте упоминаются: Tesla, Илон Маск, Берлин, Роберт Хабек. Также говорится о строительстве завода и рабочих местах.

Токены:85/40
Время:420ms
Качество:
С Извлечение данных
С техникой
Промпт
Извлеки именованные сущности из текста и верни результат в JSON. Категории для извлечения: - PERSON: имя, роль/должность - ORG: название организации, тип - LOCATION: название, тип (город/страна) - DATE: дата, формат ISO - MONEY: сумма, валюта - NUMBER: значение, контекст Текст: "Компания Tesla под руководством Илона Маска объявила 15 марта 2025 года о строительстве нового завода в Берлине стоимостью 5 млрд евро. По словам министра экономики Германии Роберта Хабека, проект создаст 10 000 рабочих мест." Верни массив: [{entity, category, attributes}]. Не добавляй сущности, которых нет в тексте.
Ответ
[
  {"entity": "Илон Маск", "category": "PERSON", "attributes": {"role": "руководитель Tesla"}},
  {"entity": "Роберт Хабек", "category": "PERSON", "attributes": {"role": "министр экономики Германии"}},
  {"entity": "Tesla", "category": "ORG", "attributes": {"type": "автопроизводитель"}},
  {"entity": "Берлин", "category": "LOCATION", "attributes": {"type": "город", "country": "Германия"}},
  {"entity": "Германия", "category": "LOCATION", "attributes": {"type": "страна"}},
  {"entity": "15 марта 2025", "category": "DATE", "attributes": {"iso": "2025-03-15"}},
  {"entity": "5 млрд евро", "category": "MONEY", "attributes": {"amount": 5000000000, "currency": "EUR"}},
  {"entity": "10 000", "category": "NUMBER", "attributes": {"value": 10000, "context": "рабочие места"}}
]
👁️Перечисление категорий (PERSON, ORG, DATE...) задаёт таксономию для полного извлечения
🧠Атрибуты в каждой категории (роль, тип, ISO-формат) обеспечивают глубину извлечения
🔍Ограничение "не добавляй сущности, которых нет" предотвращает галлюцинации
Токены:165/220
Время:950ms
Качество:
Почему это работает

Определение категорий с атрибутами и выходного формата (JSON) превращает размытый список сущностей в структурированные данные, пригодные для дальнейшей обработки.

1 / 2

Квиз по уроку

1 из 3

1.Вам нужно извлечь названия товаров, цены и даты из писем поставщиков с непоследовательным форматированием. Какой подход с LLM наиболее надёжен?

Практика

Создайте бесплатный аккаунт для решения челленджей

5 челленджей с AI-проверкой для этого урока

Связанные уроки:Structured OutputClassification

Этот урок — часть структурированного курса по LLM.

Мой путь обучения