Выбор NER-модели: spaCy, GLiNER, Transformers или LLMs?
Автоматический перевод
Эта статья была автоматически переведена с оригинальной английской версии.
Распознавание именованных сущностей (NER) находит и размечает спаны текста — например, имена людей, компании и коды продуктов. Эта страница предназначена для инженеров, выбирающих подход к извлечению данных для производственной нагрузки. Она поможет начать сравнение с учетом вашей схемы, документов и эксплуатационных ограничений.
Используйте spaCy для стабильных меток и быстрых пайплайнов. Выбирайте GLiNER, если набор меток часто меняется. Протестируйте биэнкодер, если многие метки могут повторно использовать кэшированные эмбеддинги, или файн-тюненный классификатор токенов на основе Transformer, если у вас есть размеченные примеры. Используйте структурированное извлечение на базе 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 оценивает описания типов на типах сущностей, которые не встречались при обучении. Описания уточняют метку; для проверки типов, не встречавшихся при обучении нужно также исключить эти типы из обучения.
Если вы переиспользуете большой набор меток, оцените биэнкодер перед совместным энкодером меток и текста. В статье о биэнкодере GLiNER сообщается примерно о 130-кратном росте throughput для gliner-bi-edge-v2.0 с кэшированными эмбеддингами меток по сравнению с gliner_small-v2.5 при 1 024 метках. Сравнение проводилось на одном GPU H100 и при размере батча 1; тесты скорости охватывали входы длиной 64, 256 и 512 токенов. Это показывает, почему повторное использование меток стоит протестировать, но не означает, что такой же прирост скорости будет на другой нагрузке.
Если документы охватывают несколько языков, проводите бенчмарк для каждого целевого языка и системы письма. OpenNER 1.0 показал, что ни одна модель не была лучшей для всех языков в наборе из 52 языков. Тестируйте описания типов и на английском, и на локализованных языках, поскольку текст метки является частью входа модели.
Если на выходе должна быть структурированная запись, а не спаны, используйте LLM со structured outputs или гибридный пайплайн. LangExtract полезен, когда каждое извлечение нужно сопоставить с исходной позицией в документе. 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