Выбор NER-модели: spaCy, GLiNER, Transformers или LLMs?
Автоматический перевод
Эта статья была автоматически переведена с оригинальной английской версии.
Распознавание именованных сущностей (NER) находит и размечает спаны текста — например, имена людей, компании и коды продуктов. Эта страница предназначена для инженеров, выбирающих подход к извлечению данных для производственной нагрузки. Она поможет начать сравнение с учетом вашей схемы, документов и эксплуатационных ограничений.
Используйте spaCy для стабильных меток и быстрых пайплайнов. Выбирайте GLiNER, если набор меток часто меняется. Протестируйте биэнкодер, если многие метки могут повторно использовать кэшированные эмбеддинги, или файн-тюненный классификатор токенов на основе Transformer, если у вас есть размеченные примеры. Протестируйте GLiNER2 для структурированных записей с полями, явно указанными в тексте. Используйте правила для фиксированных преобразований и протестируйте LLM, если поле требует логического вывода или нормализации с учетом контекста.
Выбирайте по требуемым меткам, языку, формату результата, размеченным данным и допустимой латентности.
Таблица выбора
| Потребность | С чего начать | Почему |
|---|---|---|
| Известные метки и деплой на CPU | Базовый вариант на основе spaCy | Предобученные пайплайны и правила дают базовый вариант; проверьте точность для языка и предметной области. |
| Новые метки без полноценного обучения | GLiNER | Извлечение с учетом меток хорошо работает, когда набор типов меняется. Начните с четких описаний типов, а не с одних названий. |
| Большой переиспользуемый набор меток | биэнкодер GLiNER | Позволяет заранее вычислять и кэшировать эмбеддинги меток, а не кодировать метки для каждого документа. |
| Сущности и отношения за один проход | кандидат GLiNER-Relex | Совместно извлекает типы сущностей и отношений. Сравните его с раздельными этапами на целевой схеме отношений. |
| Сущности, поля документа или классификация | GLiNER2 | Его интерфейс схемы позволяет извлекать поля записей наряду с сущностями и классификациями. Протестируйте его на требуемой схеме. |
| Вложенные или перекрывающиеся сущности | Декодер с поддержкой вложенности, включая GLiNER с flat_ner=False | Плоское декодирование подавляет перекрытия. Тестируйте вложенные спаны на аннотациях с ожидаемыми паттернами перекрытия. |
| Мультиязычное извлечение или работа с разными системами письма | GLiNER-X или базовый вариант на основе XLM-R | Тестируйте каждый целевой язык, предметную область и формулировки описаний типов. |
| Стабильные доменные метки с репрезентативными размеченными спанами | Классификатор токенов после файн-тюнинга или пайплайн spaCy | Создайте базовый вариант с обучением на размеченных данных, затем сравните F1 для точных спанов, латентность и стоимость на доменном датасете. |
| Поля, требующие логического вывода или нормализации с учетом контекста | LLM или гибридный кандидат | Проверяйте выведенные значения по доменной разметке. Structured outputs ограничивают форму ответа, но не гарантируют его корректность. |
| PII с высоким риском или регулируемый процесс | Presidio плюс кандидат GLiNER2-PII | Объединяйте вывод модели с детерминированными проверками, контролем скрытия данных и ревью. |
| Точные ID, известные термины или фиксированные правила нормализации | Правила и словари | Используйте сопоставление для фиксированных шаблонов и таблицы соответствий для известных псевдонимов; проверяйте пропущенные варианты и ложные совпадения. |
Как выбирать
Запишите типы сущностей и несколько размеченных примеров до выбора модели. Добавьте неоднозначные термины и спаны внутри других спанов, если этого требует задача.
Если метки стабильны, сначала протестируйте существующий пайплайн. Проведите файн-тюнинг классификатора токенов, если его ошибки в предметной области оправдывают обучение и есть репрезентативные размеченные примеры. Сравните его на отложенном доменном датасете. Он предсказывает метки токенов, не генерируя ответ токен за токеном.
Если метки часто меняются, протестируйте GLiNER или LLM-экстрактор. Напишите короткое описание для каждого неоднозначного типа. ZeroNER оценивает описания типов на типах сущностей, которые не встречались при обучении. Описания уточняют метку; для проверки типов, не встречавшихся при обучении, нужно также исключить эти типы из обучения.
Для вложенных сущностей проверьте, находит ли чекпоинт оба спана. В примере вложенных сущностей из руководства urchade/gliner_medium-v2.1 вернул New York University как организацию, но пропустил вложенную локацию New York, даже с flat_ner=False и порогом 0,05. Это наблюдение относится к данному чекпоинту и предложению. Разрешение перекрывающихся предсказаний не гарантирует, что модель обнаружит обе сущности.
Если вы переиспользуете большой набор меток, оцените биэнкодер перед совместным энкодером меток и текста. В статье о биэнкодере GLiNER сообщается примерно о 130-кратном росте throughput для gliner-bi-edge-v2.0 с кэшированными эмбеддингами меток по сравнению с gliner_small-v2.5 при 1 024 метках. Сравнение проводилось на одном GPU H100 и при размере батча 1; тесты скорости охватывали входы длиной 64, 256 и 512 токенов. Это показывает, почему повторное использование меток стоит протестировать, но не означает, что такой же прирост скорости будет на другой нагрузке.
Если документы охватывают несколько языков, проводите бенчмарк для каждого целевого языка и системы письма. OpenNER 1.0 показал, что ни одна модель не была лучшей для всех языков в наборе из 52 языков. Тестируйте описания типов и на английском, и на локализованных языках, поскольку текст метки является частью входа модели.
Для структурированных записей с полями, явно указанными в тексте, протестируйте GLiNER2. Используйте правила или таблицы соответствий для фиксированной нормализации, например для сопоставления известного псевдонима продукта с его ID. Протестируйте LLM или гибридный подход, если нужно вывести значение из контекста или разрешить неоднозначность упоминания. Оценивайте извлеченные значения и их подтверждение в источнике; сама по себе корректная схема не доказывает правильность значений.
LangExtract полезен, когда извлеченные с помощью LLM данные нужно сопоставить с исходными позициями в документе. NuExtract — вариант для мультимодального извлечения данных из документов на собственной инфраструктуре. Оба подхода по-прежнему требуют оценки на уровне полей для целевых документов.
Многие бизнес-задачи извлечения не сводятся к чистому NER. «Найти стороны договора, обязательства, дату вступления в силу, пункт о расторжении и применимое право» — это понимание документов с полями сущностей.
Для PII используйте PII-фреймворк, например Presidio, как интеграционный слой и слой скрытия данных. Рассматривайте GLiNER2-PII как кандидата на модель, а не как решение по комплаенсу. Измеряйте полноту на чувствительных форматах, языках и документах, которые будет обрабатывать система.
Пайплайн для продуктивной среды
Пайплайн извлечения для продуктивной среды часто добавляет вокруг модели дополнительные этапы:
- Извлечение кандидатов: spaCy, GLiNER, Transformer-модель, LLM, правила или их комбинация.
- Опциональная нормализация или связывание сущностей: сопоставление спанов с каноническими ID, кодами продуктов, пользователями, компаниями или записями в доменном словаре.
- Валидация и ревью: отклонение невозможных меток, проверка ограничений схемы, дедупликация спанов и передача неопределенных случаев на ревью.
Нормализация сопоставляет извлеченный текст со стабильным ID в ваших данных. Для спана «Apple» сначала определите, обозначает ли он компанию, фрукт, семейство продуктов или биржевой тикер. Затем сопоставьте это значение с соответствующим ID.
Чеклист оценки
Измеряйте больше, чем F1 на уровне сущностей:
F1 для точных спанов считает предсказание правильным, только если и спан, и метка совпадают с разметкой. Менее строгая метрика может принимать перекрывающиеся спаны, поэтому укажите правило сопоставления. Ни одна из этих метрик не проверяет, сопоставлено ли извлеченное имя с правильным ID в базе данных.
- F1 для точных спанов
- F1 при менее строгом сопоставлении спанов
- матрица ошибок меток
- обработка вложенных сущностей
- точность нормализации сущностей
- чувствительность к описаниям типов и языку меток
- срезы по языку, системе письма и формату документа
- ложноположительные результаты по меткам
- калибровка уверенности
- латентность и стоимость на документ
- доля исправлений человеком
Не смешивайте тестовый набор с проектированием схемы и настройкой порогов. Отчитывайтесь о количестве документов и упоминаний сущностей для каждой метки. Используйте доверительные интервалы на уровне документов, если повторяющиеся упоминания в одном документе иначе искусственно завышают уверенность.
Дополнительные материалы
- Руководство по NER 2026 охватывает энкодеры, LLMs и трехуровневую производственную архитектуру.
- Рассуждения с заданной схемой актуальны, когда NER превращается в структурированное извлечение.
Источники
- Документация GLiNER
- Статья о биэнкодере GLiNER — кэшированные эмбеддинги меток для больших наборов.
- Документация GLiNER2
- Статья о GLiNER-Relex — совместное извлечение сущностей и отношений.
- Статья о ZeroNER — строгая zero-shot-оценка с описаниями типов.
- Статья об OpenNER 1.0 — мультиязычная NER-оценка для нескольких онтологий.
- LangExtract — извлечение с помощью LLM с привязкой к источнику.
- NuExtract — мультимодальное извлечение на собственной инфраструктуре.
- Presidio — фреймворк для обнаружения и обезличивания PII.
- Статья о GLiNER2-PII — кандидат на мультиязычную PII-модель.
- Документация spaCy по именованным сущностям
- Руководство Hugging Face по классификации токенов
- Руководство OpenAI по structured outputs