Реалізація витягування фактів із тексту (Information Extraction)

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1566 послуг
Реалізація витягування фактів із тексту (Information Extraction)
Середній
~5 днів
Часті запитання

Напрямки AI-розробки

Етапи розробки AI-рішення

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1284
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1196
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    901
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1119
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    586
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    853

Реалізація видобування фактів з тексту (Information Extraction)

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

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

Повнофункціональна IE-система включає кілька пов'язаних завдань:

Named Entity Recognition → знаходить сутності (особи, організації, дати, суми)

Relation Extraction → визначає відносини між сутностями ("Іван працює в Газпромі")

Event Extraction → видобує події з учасниками, часом, місцем

Attribute Extraction → заповнює атрибути сутностей ("Газпром, виручка 10 трлн рублів, 2024 рік")

LLM-базоване видобування (сучасний підхід)

Для більшості завдань IE сьогодні LLM зі структурованим виводом — оптимальний вибір:

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% для новин та вільного тексту.