Реализация извлечения фактов из текста (Information Extraction)

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1 услугВсе 1566 услуг
Реализация извлечения фактов из текста (Information Extraction)
Средняя
~5 рабочих дней
Часто задаваемые вопросы
Направления AI-разработки
Этапы разработки AI-решения
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1218
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    853
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1047
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    825

Реализация извлечения фактов из текста (Information Extraction)

Information Extraction (IE) — автоматическое извлечение структурированной информации из неструктурированного текста. Цель: превратить свободный текст в заполненные поля базы данных.

Компоненты системы IE

Полноценная IE-система включает несколько взаимосвязанных задач:

Named Entity Recognition → находит сущности (персоны, организации, даты, суммы)

Relation Extraction → определяет отношения между сущностями («Иван работает в Газпроме»)

Event Extraction → извлекает события с участниками, временем, местом

Attribute Extraction → заполняет атрибуты сущностей («Газпром, выручка 10 трлн руб, 2024 год»)

LLM-based извлечение (современный подход)

Для большинства задач IE сегодня LLM с structured output — оптимальный выбор:

from pydantic import BaseModel
from openai import OpenAI

class CompanyInfo(BaseModel):
    name: str
    revenue: float | None
    revenue_year: int | None
    ceo: str | None
    headquarters: str | None
    employees_count: int | None

client = OpenAI()
response = client.beta.chat.completions.parse(
    model="gpt-4o-mini",
    messages=[{
        "role": "user",
        "content": f"Извлеки информацию о компании из текста:\n{text}"
    }],
    response_format=CompanyInfo,
)
result = response.choices[0].message.parsed

Классический pipeline (для высокой нагрузки)

Для систем с > 1000 документов/час и требованием к latency < 100ms:

  1. spaCy / natasha для базового NER (персоны, орг, локации, даты)
  2. Dependency parsing для извлечения простых отношений (субъект-глагол-объект)
  3. Pattern matching (spaCy Matcher) для структурированных паттернов («цена X рублей», «ставка X%»)
  4. Нормализация — приведение к каноническому виду (даты → ISO, суммы → float + валюта)

Работа с табличными данными в тексте

Тексты часто содержат таблицы в PDF/HTML. Стратегия:

  • PDF: Camelot или pdfplumber для извлечения таблиц
  • HTML: BeautifulSoup + pandas read_html
  • Изображения таблиц: Azure Document Intelligence или Table Transformer (Microsoft)

Оценка качества

Метрики для IE:

  • Precision/Recall/F1 по типам сущностей
  • Relation-level F1 (правильная пара сущностей + правильный тип отношения)
  • Slot-filling accuracy (процент корректно заполненных полей)

Типичные результаты: 90–95% F1 для чётко структурированных текстов (финансовые отчёты, договоры), 75–85% для новостей и свободного текста.