Aivaro
  • Оглавление
  • Вопросы
  • Практика
  • Вики
  • Материалы сообщества
  • Тесты
  • Поиск
✈Telegram @ai_varo
RUEN中文
…
Оглавление/Вопросы/#904

Какие типы NER существуют (BIO, BIOES, span-based)? В чем проблема вложенных сущностей (nested NER)?

Краткий тезис

NER (Named Entity Recognition) — задача извлечения именованных сущностей из текста. Существует три основных подхода к разметке: токен-уровневые схемы BIO и BIOES, а также span-based (предсказание интервалов). Основная проблема классических схем — невозможность корректно представить вложенные сущности (nested NER), когда одна сущность полностью содержится внутри другой, например, «Московский государственный университет имени М.В. Ломоносова» (организация) содержит «М.В. Ломоносов» (персона). Для решения этой проблемы применяют layered NER, гиперграфы и multi-label подходы.

----|-------| | Apple | B-ORG | | Inc. | I-ORG | | купила | O | | стартап | O |

1.2 Схема BIOES (Begin, Inside, Outside, End, Single)

Добавляет метки:

  • E-XXX — конец сущности
  • S-XXX — одиночная сущность (длина 1 токен)

Пример для «Иван купил iPhone»:

ТокенBIOBIOES
ИванB-PERS-PER
купилOO
iPhoneB-PRODS-PROD

1.3 Сравнение BIO vs BIOES

КритерийBIOBIOES
Количество меток2N+14N+1
Точность границНижеВыше (явный E)
Сложность обученияНижеВыше
ИспользованиеКлассические CRFСовременные трансформеры

1.4 Ограничения

  • Не поддерживают вложенные сущности
  • Требуют строгой последовательности B → I → I → ... → I
  • Проблема с длинными сущностями (разрыв контекста)

2. Span-based: предсказание интервалов

2.1 Идея

Вместо разметки токенов модель предсказывает интервалы (start, end) для каждой сущности. Каждый интервал — это непрерывный отрезок текста.

2.2 Архитектура

  1. Encoder (BERT, RoBERTa) → эмбеддинги токенов
  2. Span representation: конкатенация эмбеддингов start и end токенов + ширина спана
  3. Классификатор: для каждого кандидата (все возможные интервалы) предсказать тип сущности или «None»

2.3 Пример работы

Текст: «Президент США Джо Байден посетил ООН»

  • Кандидаты: [0,1] «Президент», [2,3] «США», [4,5] «Джо Байден», [6,6] «посетил», [7,7] «ООН»
  • Модель выбирает: [2,3] → LOC, [4,5] → PER, [7,7] → ORG

2.4 Преимущества

  • Естественная поддержка вложенных сущностей (интервалы могут пересекаться)
  • Не зависит от порядка токенов
  • Легче обрабатывать длинные сущности

2.5 Недостатки

  • Квадратичная сложность по длине текста (O(n²) кандидатов)
  • Требует фильтрации кандидатов (pruning)
  • Сложнее обучать из-за большого числа отрицательных примеров

3. Nested NER: «Московский государственный университет»

3.1 Определение проблемы

Вложенные сущности — это сущности, которые полностью содержатся внутри другой сущности. Пример:

  • «Московский государственный университет имени М.В. Ломоносова» → ORG
  • «М.В. Ломоносов» → PER (вложена в ORG)

3.2 Почему BIO/BIOES не работают

Схема BIO предполагает, что каждый токен принадлежит ровно одной сущности. При вложенности токен «Ломоносова» должен быть одновременно I-ORG и E-PER — что невозможно.

3.3 Примеры из русского языка

ТекстВнешняя сущностьВложенная сущность
«роман «Война и мир»»WORK (роман)WORK («Война и мир»)
«улица Льва Толстого»LOC (улица)PER (Лев Толстой)
«компания «Рога и копыта»»ORGWORK (название)

3.4 Частотность

По данным исследований (Ringland et al., 2019), до 30% сущностей в реальных текстах могут быть вложенными, особенно в юридических, медицинских и научных текстах.


4. Как решают: layered NER, гиперграфы

4.1 Layered NER (многослойный NER)

Идея: последовательное применение NER с разными уровнями вложенности.

  1. Первый слой: извлекает внешние сущности (ORG, LOC)
  2. Второй слой: внутри найденных интервалов ищет вложенные сущности (PER, WORK)
  3. Третий слой: ищет сущности третьего уровня вложенности

Архитектура:

  • Каждый слой — отдельная модель NER (BIO или span-based)
  • Выход предыдущего слоя → маска для следующего
  • Можно использовать общий encoder + layer-specific heads

Плюсы:

  • Простота реализации
  • Хорошая интерпретируемость
  • Масштабируется до N уровней

Минусы:

  • Ошибки накапливаются (error propagation)
  • Не поддерживает пересекающиеся сущности (например, A внутри B и B внутри A)
  • Фиксированная глубина вложенности

4.2 Гиперграфы (Hypergraph NER)

Идея: представление всех возможных сущностей и их отношений в виде гиперграфа, где узлы — токены, а гиперребра — сущности.

Математическая модель:

  • Гиперграф G = (V, E), где V — токены, E — сущности
  • Каждое ребро e ∈ E — это подмножество V (интервал)
  • Ребра могут пересекаться (вложенность)
  • Задача: найти все ребра и их типы

Архитектура:

  1. Encoder: BERT → эмбеддинги токенов
  2. Hypergraph construction: генерация всех возможных интервалов (кандидатов)
  3. Hypergraph neural network: GNN, которая учитывает пересечения ребер
  4. Классификация: для каждого ребра предсказать тип

Плюсы:

  • Полная поддержка вложенности и пересечений
  • Теоретически обоснована
  • Гибкость

Минусы:

  • Высокая вычислительная сложность
  • Сложность обучения
  • Редко используется на практике

4.3 Multi-label NER

Идея: каждый токен может иметь несколько меток одновременно.

  • Токен «Ломоносова» → [I-ORG, E-PER]
  • Используется multi-label классификация (sigmoid вместо softmax)

Плюсы:

  • Простая реализация на основе BIO
  • Не требует сложных архитектур

Минусы:

  • Не решает проблему границ (нужно дополнительно определять, где начинается вложенная сущность)
  • Требует постобработки

4.4 Сравнение подходов

ПодходПоддержка вложенностиСложностьТочностьСкорость
BIO/BIOESНетНизкаяСредняяВысокая
Span-basedДаСредняяВысокаяСредняя
Layered NERДа (ограниченно)СредняяВысокаяСредняя
ГиперграфыДа (полная)ВысокаяОчень высокаяНизкая
Multi-labelЧастичноНизкаяСредняяВысокая

5. Пет-проект для закрепления

Задача: Реализовать сравнение BIO и span-based подходов для задачи NER на русском тексте с вложенными сущностями.

Инструменты:

  • Python 3.10+
  • transformers (BERT multilingual)
  • spaCy для базового NER
  • datasets (Russian NER datasets: RuNNE, BSNLP)
  • PyTorch для реализации span-based модели

Шаги:

  1. Подготовка данных:

    • Загрузить датасет RuNNE (Russian Nested Named Entities)
    • Разделить на train/val/test
    • Преобразовать в BIO и span форматы
  2. Реализация BIO модели:

    • Fine-tune BERT с CRF-слоем
    • Использовать стандартную кросс-энтропию
  3. Реализация span-based модели:

    • Использовать BERT как encoder
    • Реализовать генерацию кандидатов (все интервалы до max_span_length=10)
    • Обучить классификатор с negative sampling
  4. Оценка:

    • Метрики: precision, recall, F1 (micro и macro)
    • Отдельно для вложенных и плоских сущностей
    • Визуализация ошибок
  5. Анализ:

    • Сравнить время инференса
    • Построить confusion matrix для типов сущностей
    • Выявить типичные ошибки каждого подхода

Ожидаемый результат:

  • Рабочий Jupyter notebook с двумя моделями
  • Таблица сравнения метрик
  • Вывод: span-based подход показывает F1 на 5-10% выше на вложенных сущностях, но в 2-3 раза медленнее
  • Рекомендации: для production использовать BIO + layered NER, для исследовательских задач — span-based

Связь с другими вопросами

ВопросТема
903Обзор подходов к NER
905CRF как метод последовательной разметки

Навигация

  • Предыдущий: 903
  • Следующий: 905
  • Индекс: 00. Индекс разборов