Навчання NER-моделі: Named Entity Recognition під ключ

Модель упевнено знаходить сутності в тестових прикладах, але плутається в реальних листах і заявках: формулювання надто різні, а даних для розмітки мало. Ми навчаємо модель розпізнавання сутностей під ключ — від аудиту корпусу й розмітки до передачі робочого рішення. На виході — вилучення даних, придатне для автоматизації опрацювання звернень, плюс регламенти супроводу.
Часті запитання

Чому NER-модель помиляється на реальних даних

На демо NER-модель впевнено знаходить компанії та персон — здається, задачу вирішено.

На реальному потоці з листів, чатів, сканів і вивантажень облікових систем розпізнавання сутностей просідає, причому непомітно: порівняти результат нема з чим, а очима помилки в тисячі рядків не виловити.

Перша причина — розмита схема міток. Коли «організація», «підрозділ» і «продукт» звалені в один клас, а вкладені сутності описані однією міткою, модель бачить суперечливі приклади й вгадує компроміс: межі сутностей пливуть.

Схему перезбирають до старту навчання — плоскі мітки, явні правила вкладеності, окремий клас під кожну сутність, яка реально потрібна у звітності.

Друга — якість розмітки тексту. Якщо два анотатори по-різному ставлять межі, а спірні випадки вирішуються «на відчуття», модель навчається на шумі.

Розмітка в Label Studio з подвійним проходом і розбором розбіжностей дає вимірюваний відсоток збігу — корпус нижче порога в навчання не йде.

Третя — рідкісні класи сутностей. При перекосі корпусу рідкісна мітка не набирає прикладів, і помиляється модель найчастіше саме на ній.

Окремо б'є зміна форматів: нове джерело приносить інший регістр, шум розпізнавання сканів, таблиці — розподіл вхідних текстів зміщується від навчального.

І головне — відсутність контролю на відкладеній вибірці. Метрики на навчальному наборі нічого не кажуть про поведінку на свіжих даних.

Контроль на відкладеній вибірці з нових надходжень, що не перетинається з навчанням, дає чесну оцінку й дозволяє порівнювати версії між собою — без нього будь-яке «покращення» неперевірне.

Розбираємо, як це закривається: від схеми міток та інструкції для анотаторів до регламенту повторних перевірок на нових даних.

Що дає вилучення сутностей: вимірювані ефекти

Вилучення сутностей окупається не абстрактною автоматизацією, а трьома конкретними зрушеннями в процесі обробки документів.

Частка ручної перевірки

Модель розмічає сутності за типами — організації, персони, дати, суми, реквізити, номери договорів. Оператор переглядає лише поля, де впевненість моделі нижча за поріг, виставлений під ваш процес, а не читає документ повністю. Частка ручної перевірки падає з повного прочитання до вибіркового.

Поріг налаштовуємо за матрицею помилок: там, де хибне спрацювання дорожче за пропуск, він вищий. Так увага перевіряльників іде на спірні випадки, а не розмазується рівномірно по потоку.

Час обробки документа

Документ приймається, розмічається й іде в облікову систему без ручного перенесення полів. Перший прогін по архіву йде пакетно, далі — інкрементально, у міру надходження файлів, тому черга не накопичується.

Для сканів і таблиць додається приведення до тексту, і цей час вважаємо окремо — чесніше, ніж обіцяти єдиний строк на всі типи вхідних даних.

Клас відмов, який перестає виникати

Ручне перенесення полів дає переплутані реквізити, втрачені номери, дати в неправильному форматі. Це не друкарські помилки, а розбіжності між документами й обліком, які спливають на звірці.

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

Підходи до розмітки та навчання: порівняння режимів

Режим навчання обирають не за смаком, а за станом даних: чи є готовий корпус, скільки типів сутностей потрібно розрізняти й наскільки вони рідкісні. Перший крок — зафіксувати цільову метрику на відкладеній вибірці, інакше порівнювати варіанти буде нічим.

Розмітку власними силами має сенс заводити, коли предметна область закрита й експертиза живе всередині команди. Головний ризик тут — узгодженість: на рідкісних сутностях розмітники розходяться, і модель навчається на суперечливих прикладах.

Доучування готової системи дає перший робочий результат найшвидше, але переймає чужу схему класів і її стелю якості.

Чотири режими та їхні межі

Варіант Коли підходить Обмеження
Розмітка власними силами Вузька область, експерти в штаті, обсяги невеликі Розбіжності між розмітниками, строки розтягуються, інструкцію складно утримувати стабільною
Розмітка силами підрядника Потрібен обсяг у стислі строки, схема сутностей уже описана Потребує приймання на контрольній вибірці й постійного контролю якості
Доучування готової системи Даних мало, схема сутностей близька до типової Чужа схема класів, рідкісні сутності розрізняються гірше, стеля метрики нижча
Навчання з нуля Своя схема сутностей, область далека від загальних корпусів, дані накопичуються Потрібен обсяг розмічених прикладів, довше до першого результату

На практиці режими комбінують: стартують з доучування, щоб закрити задачу, і паралельно накопичують власну розмітку для навчання з нуля. Розбираємо, яка схема окупається у вашому випадку.

Етапи навчання NER-моделі: від аудиту даних до здачі

Аудиторію технічної частини зазвичай цікавить не «навчили модель», а за якими контрольними точками видно, що вона витримає робочі тексти.

Тому етапи навчання моделі ми прив'язуємо до вимірюваних артефактів: корпус, схема сутностей, узгодженість розмітки, метрики на відкладеній вибірці.

Як іде робота

  1. Аудит корпусу текстів. Дивимося реальні документи, рахуємо частку шуму, дублів і мовних вкраплень. На виході — відповідь, чи вистачає даних і що доведеться дорозмічати.
  2. Схема сутностей. Фіксуємо список типів, правила меж і вкладеності, поведінку на перетинах. Узгоджуємо з вами до розмітки: змінювати схему на середині дорожче за все.
  3. Розмітка й контроль узгодженості. Кілька анотаторів розмічають фрагмент із перекриттям, розбіжності розбираються на спірних прикладах. Поріг збігу задаємо заздалегідь.
  4. Навчання й налаштування порогів. Модель навчається на розміченій частині, окремо калібрується впевненість спрацювань, щоб у результат не потрапляв шум.
  5. Перевірка на відкладеній вибірці. Рахуємо повноту й точність за кожним типом сутності, а не однією усередненою цифрою. Помилки розбираємо за класами й повертаємо в розмітку.
  6. Інтеграція. Віддаємо модель окремим сервісом зі зрозумілим інтерфейсом, підключаємо до вашого пошуку або обробки документів, стежимо за часом відповіді.
  7. Передача. Схема сутностей, інструкція для розмітників, скрипти перенавчання й порядок дорозмітки нових прикладів — у вас на руках.

Що передаємо на руки: артефакти та регламенти

Модель старішає швидше, ніж змінюється предметна область: з'являються нові типи сутностей, змінюється формат вхідних даних, накопичуються виправлення розмітників.

Тому разом з навченою системою передаємо все, що потрібно для її самостійного супроводу — щоб доучування й приймання не залежали від нашої доступності.

  • Навчена система — ваги моделі, сервіс видачі передбачень, конфігурація порогів спрацювання й середовище із зафіксованими залежностями.
  • Схема сутностей — перелік типів із правилами меж, вкладеності та пріоритетів при перетині.
  • Інструкція з розмітки — звід правил для анотаторів із розбором спірних випадків і прикладами «так правильно / так ні».
  • Набір перевірних прикладів — відкладена вибірка з еталонною розміткою для приймального прогону й контролю після доучування.
  • Регламент поповнення та перенавчання — періодичність, критерії запуску й частка виправлень, після якої навчання обов'язкове.
  • Скрипти оцінки — розрахунок точності й повноти за кожним типом сутностей із розбором помилок за класами.
  • Документація з розгортання — склад компонентів, параметри середовища, порядок оновлення й відкат на попередню версію.

На прийманні ви проганяєте контрольні приклади самі й звіряєте результат з еталоном. Передача закрита, коли метрики збіглися й ваша команда повторила прогін без нашої допомоги.

Кейс: розбір вхідних звернень із вилученням даних

Сервісна компанія приймала звернення поштою, через форму на сайті й у месенджерах — потік близько 4 000 на місяць.

Дані для заявки (номер договору, адреса об'єкта, тип послуги, бажана дата) оператори витягували з тексту руками: копіювали, звіряли з базою, переносили в облікову систему.

До впровадження

На ручний розбір ішло 6 із 10 звернень — усі, де не було готової форми з полями. У середньому на один лист витрачалося 8 хвилин, у пікові тижні черга сягала 2–3 годин, а частина заявок губилася в листуванні.

Зростання потоку закривали новими операторами, і якість при цьому просідала: те саме поле різні співробітники трактували по-різному, через що upstream-системи отримували розбіжності в довідниках.

Що змінили й що вийшло

Зібрали корпус із 12 000 реальних звернень і розмітили сутності в Label Studio: п'ять типів полів плюс окремий клас для суперечливих згадок.

На цій розмітці навчили NER-модель і обгорнули її в сервіс вилучення — текст надходить із черги, модель повертає поля разом зі ступенем упевненості, а поріг відсікання налаштований так, що за низької впевненості звернення йде оператору з підсвічуванням спірних місць.

Після впровадження частка ручного розбору впала з 62% до 17%, середній час обробки — з 8 хвилин до 40 секунд. Точність вилучення ключових полів тримається на 0,93 за F1, а решта 17% — це переважно складені звернення із вкладеними таблицями й сканами.

Нові типи полів додавали перерозміткою кількох тисяч прикладів, без переписування логіки приймання заявок.

Чим доучування відрізняється від навчання з нуля?

Доучування — це оновлення ваг готової моделі, уже натренованої на великих корпусах мови: ми знімаємо вихідний шар під ваш набір класів сутностей і доучуємо його на вашій розмітці.

Розмічати потрібно лише те, чого немає у відкритих даних, — внутрішні номенклатури, рідкісні формулювання, галузеву лексику. Для моделі розпізнавання сутностей зазвичай це кілька тисяч коротких фрагментів у BIO-розмітці, і перша робоча версія з'являється за тижні.

Навчання з нуля потрібне, коли домен далекий від звичайної мови, своїх класів багато, а готових рішень під них немає.

Тоді додається підготовка на нерозміченому корпусі, збір словників і розмітка з нуля за інструкцією: обсяг розмічених даних зростає на порядок, а строки проєкту вимірюються кварталами.

Відкриті бібліотеки на кшталт spaCy дають точку старту, але не замінюють вашу розмітку й перевірку якості за кожною сутністю окремо.

Варіант Коли підходить Обмеження
Доучування готової моделі Типові сутності, є сотні-тисячі розмічених прикладів Потрібна перевірка на розбіжність із попереднім корпусом
Доучування плюс правила та словники Точність на довідниках, артикулах, ідентифікаторах Правила доводиться супроводжувати вручну
Навчання з нуля Унікальний домен і власні класи Повний цикл розмітки, довго до першої метрики

Що це означає для строків: доучування — короткий цикл розмітки й дві-три ітерації навчання, навчання з нуля — окремий проєкт із підготовкою даних.

І в тому, і в іншому випадку ми спочатку дивимося ваш корпус і оцінюємо, скільки прикладів справді потрібно, а не називаємо обсяг наосліп.

Технічні сумніви перед стартом проєкту

Перед стартом проєкту майже завжди спливають ті самі питання: чи вистачить даних, що робити без готової розмітки, як вимірювати якість і хто відповідає за результат. Нижче — короткі відповіді на них, щоб зняти сумніви до оцінки.

У нас мало даних — цього вистачить для NER-моделі?

Обсяг рахується не в рядках, а в числі згадок сутностей: для набору з 5–10 типів зазвичай достатньо кількох тисяч розмічених згадок на клас.

Якщо матеріалу менше, підключаємо доучування на відкритих корпусах, аугментацію й активне навчання — модель сама вказує приклади, які дадуть максимум приросту. Достатність перевіряємо за кривою навчання на пробній вибірці ще до старту.

Розмітки немає зовсім — це блокер?

Ні, але починаємо не з моделі, а зі схеми сутностей: описуємо типи, межі та спірні випадки в інструкції для розмітників. Потім розмічаємо пробну вибірку й замірюємо згоду між людьми — якщо вона низька, правимо інструкцію, а не нейромережу. Основний корпус розмічаємо ітераціями, паралельно навчаючи й перевіряючи модель.

Як зрозуміємо, що якість достатня?

Метрики precision, recall і F1 рахуємо за кожним типом сутності окремо: загальна оцінка маскує провал на рідкісному класі, який у документі трапляється найчастіше. Цільові значення фіксуємо письмово до навчання й перевіряємо на відкладеній вибірці, яку модель не бачила. Додатково проганяємо випадкові приклади з вашого живого потоку.

Хто відповідає за результат?

Відповідальність ділиться прозоро: ми — за розмітку, навчання, заміри й відтворюваність результату, замовник — за доступ до даних і експертизу в предметній області. Якщо цільові метрики на наявних даних недосяжні, говоримо про це до початку основного етапу, а не після здачі. Умови приймання й спосіб повторної перевірки якості описуємо заздалегідь.

Обговоримо задачу й повернемося з оцінкою

Щоб повернутися з оцінкою та планом робіт, а не із загальними строками, нам потрібен контекст задачі. NER-модель навчається на ваших текстах і вашій схемі сутностей, тому вхідні дані для оцінки — це передусім корпус і точний перелік того, що модель має вилучати.

Що надіслати для старту розбору:

  • 300–500 типових документів або записів у вихідному вигляді, включно з незручними випадками: скани, таблиці, короткі повідомлення;
  • перелік типів сутностей із прикладами значень і межами — де закінчується організація й починається підрозділ;
  • 20–30 спірних прикладів, на яких ручний розбір або пошук за правилами помиляється;
  • опис поточного процесу: хто і як вилучає сутності зараз і скільки часу це займає;
  • вимоги до якості: які типи сутностей критичні, що допустимо пропустити, а що ні;
  • обмеження щодо середовища: закритий контур без зовнішніх запитів або хмара, які мови й кодування трапляються;
  • формат видачі: JSON, таблиця, вивантаження у вашу облікову систему.

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

Повертаємося з планом за етапами — збір і розмітка, навчання й підбір порога впевненості, замір точності та повноти на відкладеній вибірці, впровадження й моніторинг після запуску. План спирається на ваш реальний корпус, тому строки й метрики приймання в ньому перевіряні.

Опишіть задачу — повернемося з оцінкою та планом робіт.

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

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

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1141