Распознавание именованных сущностей (NER) в неструктурированном тексте имеет множество применений. Компании иногда обмениваются документами (например, контрактами) с личной информацией. Может случиться так, что личная информация, содержащаяся в этих документах, должна быть анонимной. Также может случиться так, что личная информация должна быть анонимной, прежде чем она будет доступна сотрудникам определенного уровня. Другой вариант использования - оценка действий, выполняемых объектами над большими текстами. NER можно использовать для решения этих и многих других случаев, когда личность человека должна быть идентифицирована в больших пакетах документов.

Этот пост будет оценивать Spacy API и Stanford Named Entity Recogniser (Finkel et al 2005) на предмет анонимности на английском языке.

Текст, использованный для проведения тестов на анонимность, был вдохновлен английской командой Fifa Wolrd Cup 1986 года и выглядит следующим образом:

«Гэри Уинстон Линекер был отличным футболистом.
Гэри Уинстон Линекер был нападающим.
Гэри Уинстон Линекер родился в Англии.
Гэри Уинстон Линекер женат на Даниэль Букс.
Вместе играли Гэри Линекер, Канни Сэнсом и Питер Шилтон.
Защитники:
Гэри Стивенс,
Кенни Сэнсом,
Терри Батчер,
Полузащитники:
- Брайан Робсон;
- Рэй Уилкинс;
- Крис Уоддл ».

В этих текстах были затронуты некоторые аспекты:

  • Необычное написание имен (например, «gary», «gary», «GARY»).
  • Написание имен без каких-либо символов, чтобы разделить их (как в случае со списком защитников)

API Spacy

Модели en и en_core_web_md были использованы для обнаружения имен в тексте выше. Последняя, ​​огромная модель на 1Гб. Правильные оценки составляли 0,47 и 0,79 соответственно.

Ни одна из моделей не распознала струны GARY WINSTON LINEKER, Gary Winston Lineker, GARY WINSTON LINEKER. Этот факт показывает нам, что функция распознавания именованных сущностей (NER) в моделях Spacy чувствительна к регистру. Классификатор ожидает, что имена будут написаны с первой буквой в верхнем регистре, а остальные в нижнем регистре. Из этого следует извлечь важный урок. Предварительная обработка текста в нижнем регистре не может выполняться до распознавания именованных сущностей в этих моделях.

Еще одним заметным фактом было то, что изменение символа маркера с - на • резко изменило результаты. Имена в списке защитников были правильно распознаны после обновления символа маркера. Показатель успешности для обеих моделей подскочил до 0,79. Единственными нераспознанными именами были те, которые не следовали регистру собственных имен.

Стэнфордские классификаторы

Stanford NER - это Java-реализация распознавателя именованных сущностей (https://nlp.stanford.edu/software/CRF-NER.shtml). Однако для этого программного обеспечения существует оболочка Python (StanfordNERTagger), реализованная в модуле NLTK.

Использовались три разных классификатора:

  • 3 класс: Местоположение, Человек, Организация
  • 4 класс: Местоположение, Человек, Организация, Разное
  • 7 класс: Местоположение, Человек, Организация, Деньги, Процент, Дата, Время

В этой оценке оценивалась только сущность Person.

Стэнфордские классификаторы требуют от нас дополнительной работы. Они помечают имена людей, но не идентифицируют несколько последовательных помеченных имен как одно лицо. Чтобы проиллюстрировать, что я имею в виду, они узнали Питера и Шилтона как имена людей, но не признали Питера Шилтона как единое целое. Чтобы преодолеть это ограничение, я использовал наивный подход, который заключался в рассмотрении последовательных имен как имен сущностей. Более продвинутый подход, такой как использование тегов частей речи, мог бы быть использован с лучшими результатами.

Показатели попадания были 0,71, 0,64 и 0,64 для классификаторов 3, 4 и 7 классов соответственно для текста выше. Самой большой проблемой снова стал список защитников. Поскольку у них нет разделителя, наивный подход, используемый для поиска отдельных объектов, вернул для этого списка 'G ary Stevens Kenny Sansom Terry Butcher'. Если используется разделитель, процент попаданий для классификатора 3 класса увеличивается до 0,93. Единственная строка, не признанная личностями, - это «гэри уинстон лайнкер».

Код и результаты экспериментов Stanford NER можно найти здесь.

Заключение

И Spacy, и Stanford NER модели могут использоваться для распознавания именованных сущностей в неструктурированных документах, достигая достаточно хороших результатов. Первый имеет то преимущество, что автоматически распознает сущности по токенам лиц. Последний является более гибким, поскольку позволяет различать имена, набранные нестандартными способами (не следуя шаблону регистра для имен собственных).

Однако было удивительно, что обе модели полагаются на регистр букв для идентификации именованных сущностей. Понижение регистра текста для обработки обычно является одной из начальных задач обработки естественного языка (NLP). Эта задача предварительной обработки должна выполняться после задачи NER, поскольку выполнение нижнего регистра ранее разрушило бы распознавание названного объекта.