Сведение задачи NER к задаче классификации

Несмотря на то что сущности часто бывают многословными, обычно задача NER сводится к задаче классификации на уровне токенов, т. е. каждый токен относится к одному из нескольких возможных классов. Есть несколько стандартных способов сделать это, но самый общий из них называется BIOES-схемой. Схема заключается в том, чтобы к метке сущности (например, PER для персон или ORG для организаций) добавить некоторый префикс, который обозначает позицию токена в спане сущности. Более подробно:

B – от слова beginning – первый токен в спане сущности, который состоит из больше чем 1 слова.
I – от словам inside – это то, что находится в середине.
E – от слова ending, это последний токен сущности, которая состоит больше чем из 1 элемента.
S – single. Мы добавляем этот префикс, если сущность состоит из одного слова.

Таким образом, к каждому типу сущности добавляем один из 4 возможных префиксов. Если токен не относится ни к какой сущности, он помечается специальной меткой, обычно имеющей обозначение OUT или O.

Приведем пример. Пусть у нас есть текст “Карл Фридрих Иероним фон Мюнхгаузен родился в Боденвердере”. Здесь есть одна многословная сущность — персона “Карл Фридрих Иероним фон Мюнгхаузен” и одна однословная — локация “Боденвердере”.



Таким образом, BIOES — это способ отобразить проекции спанов или аннотаций на уровень токенов.

Понятно, что по такой разметке мы однозначно можем установить границы всех аннотаций сущностей. Действительно, про каждый токен мы знаем, верно ли, что сущность начинается с этого токена или заканчивается на нем, а значит, закончить ли аннотацию сущности на данном токене, или расширять ее на следующие токены.

Подавляющее большинство исследователей использует этот способ (или его вариации с меньшим количеством меток — BIOE или BIO), но у него есть несколько существенных недостатков. Главный из них заключается в том, что схема не позволяет работать с вложенными или пересекающимися сущностями. Например, сущность “МГУ имени М.В. Ломоносова” — это одна организация. Но Ломоносов сам по себе – это персона, и это тоже было бы неплохо задать в разметке. С помощью описанного выше способа разметки мы никогда не сможем передать оба эти факта одновременно (потому что у одного токена можем сделать только одну пометку). Соответственно, токен “Ломоносова” может быть либо частью аннотации организации, либо частью аннотации персоны, но никогда не тем и другим одновременно.

Другой пример вложенных сущностей: “Кафедра математической логики и теории алгоритмов механико-математического факультета МГУ”. Здесь в идеале хотелось бы выделять 3 вложенных организации, но приведенный выше способ разметки позволяет выделить либо 3 непересекающиеся сущности, либо одну сущность, имеющую аннотацией весь приведенный фрагмент.

Кроме стандартного способа свести задачу к классификации на уровне токенов, есть и стандартный формат данных, в котором удобно хранить разметку для задачи NER (а также для многих других задач NLP). Этот формат называется CoNLL-U.

Основная идея формата такая: храним данные в виде таблицы, где одна строка соответствует одному токену, а колонки — конкретному типу признаков токена (в т. ч. признаком является и само слово — словоформа). В узком смысле формат CoNLL-U задает, какие именно типы признаков (т. е. колонки) включаются в таблицу — всего 10 типов признаков на каждый токен. Но исследователи обычно рассматривают формат шире и включают те типы признаков, которые нужны для конкретной задачи и метода ее решения.