Естественные языки сложны. А когда на горизонте появляется контекст, они становятся ещё сложнее. Возьмём для примера фамилию Линкольн. Некоторые сразу подумают о шестнадцатом президенте США, выдающейся исторической фигуре. Однако для других это производитель автомобилей с тем же названием. Одно простое слово имеет разные значения.

Мы, люди, без проблем различаем значения и категории. Это свидетельствует о нашем интуитивном понимании окружающего мира. Но когда дело касается компьютеров, эта, казалось бы, простая задача превращается в неоднозначную проблему. Подобные трудности подчёркивают необходимость надёжного распознавания именованных сущностей (named entity recognition, NER) — механизма, при помощи которого мы учим машины понимать различные лингвистические нюансы.

В этой статье мы расскажем о том, что такое NER, о его принципах работы и о том, как оно используется в реальной жизни. Также в ней мы прольём свет на различные методики NER и способы реализации модели NER.

Что такое Named Entity Recognition (NER)?


Named entity recognition (NER) — это область обработки естественных языков (natural language processing, NLP), занимающаяся идентификацией и классификацией специфических примеров данных из текстового содержимого. NER работает с характерными деталями текста — именованными сущностями : отдельными словами, фразами или последовательностями слов, идентифицируя и категоризируя их в заранее выбранные группы. Эти категории охватывают разнообразный диапазон представленных в тексте объектов, в том числе имена людей, географические объекты, названия организаций, даты, событий и даже отдельные количественные значения, например, деньги и проценты.

Ключевые концепции NER


Именованные сущности — не единственная концепция, которую нужно понять в мире NER. Чтобы лучше разобрать тему, необходимо раскрыть множество других терминов.

Разметка частей речи (POS tagging). Это процесс присвоения словам в тексте меток, соответствующих их части речи, например, «прилагательное», «глагол» или «существительное».

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

Группирование (chunking). Это методика NLP, группирующая отдельные слова или фразы в «блоки» (chunk) на основании их синтаксических ролей, создавая осмысленные кластеры, например, глагольные и именные конструкции.

Эмбеддинги слов (word embeddings). Это описания слов в виде плотных векторов, передающие их синтаксические значения. Эмбеддинги слов преобразуют слова или фразы в числовые векторы фиксированного размера, что упрощает их обработку моделями машинного обучения. Популярными инструментами для генерации таких эмбеддингов являются Word2Vec и GloVe, они помогают понимать контекст и взаимосвязи слов в тексте.

Пример NER


Рассмотрим предложение: «Mary from the HR department said that The Ritz London was a great hotel option to stay in London».


NER, выполненное для предложения при помощи displaCy Named Entity Visualizer.

В этом предложении:

  • «Mary» помечена как PERSON (человек), показывая, что это сущность, обозначающая имя человека.
  • «The Ritz» помечен как ORG, что обозначает Organization (организация). Это значит, что этот фрагмент распознан как сущность, относящаяся к компаниям, агентствам, учреждениям и так далее.
  • «London» классифицирован как GPE, что расшифровывается как Geopolitical entity (геополитическая сущность). GPE описывают страны, города, штаты и любые другие регионы с определёнными границами и управлением.

По сути, если ваша цель — ответить на вопросы кто, где, что и когда по тексту, то нужно использовать методику NER.

NER для структурирования неструктурированных данных


NER играет важнейшую роль в преобразовании неструктурированного текста в структурированные данные. Оно систематически идентифицирует и категоризирует такие ключевые элементы, как имена, места, даты и другие термины внутри текста. Благодаря этому NER преобразует огромные объёмы текстового содержимого в упорядоченные датасеты, подготовленные к дальнейшему анализу. Например, NER способно быстро извлекать названия компаний, курсы акций и экономические метрики из новостной статьи, превращая пространные тексты в сжатые сводки.

Основные сценарии использования NER


Распознавание именованных сущностей влечёт за собой прогресс в различных отраслях, позволяя совершенствовать процессы и делать более точные выводы. Ниже мы перечислим одни из самых важных областей его применения.

Извлечение информации


Извлечение информации (information retrieval) — это процесс получения информации (часто из крупных датасетов), которая релевантна определённому запросу или потребности.

Для примера рассмотрим сферу поисковых движков, где NER используется для повышения точности результатов поиска. Например, если исследователь вводит в базу данных или поисковый движок «Инновации батарей Tesla в 2023», то NER определяет, что «Tesla» — это компания, а «2023» — это конкретный год. Это гарантирует, что полученные результаты будут напрямую связаны с прогрессом Tesla в разработке батарей в 2023 году и не будут включать в себя несвязанные с этим статьи о Tesla или общих инновациях в разработке аккумуляторов.

Рекомендации контента


Системы рекомендаций (recommender system) предлагают релевантный для пользователей контент на основании их поведения, предпочтений и истории взаимодействия.

Современные платформы контента, от новостных веб-сайтов до потоковых сервисов наподобие Netflix, применяют NER для тонкой настройки своих алгоритмов рекомендаций. Допустим, пользователь прочитал множество статей о тенденциях в экологически сбалансированном использовании транспортных средств. NER идентифицирует «экологически сбалансированное использование транспортных средств» как отдельную тему, приказывая движку рекомендаций предлагать больше статей или документальных фильмов по этой нише, предоставляя пользователю настроенный под него контент.

Автоматизированный ввод данных


Роботизированная автоматизация процессов (Robotic Process Automation, RPA) — это система компьютерных программ, воссоздающих человеческие действия для выполнения повседневных бизнес-задач. Хотя эти программы не связаны с аппаратными роботами, они работают подобно обычным «белым воротничкам».

В корпоративной экосистеме автоматизированный ввод данных, дополненный NER, совершил революцию в рабочих процессах. Возьмём для примера логистическую компанию, ежедневно работающую с тысячами накладных. Система RPA, оснащённая NER, может сканировать эти документы, выявляя такие сущности, как «отправитель», «грузополучатель» и «наименование перевозчика». После их распознавания система может извлекать и вводить эти данных в управляющее ПО компании для упрощения доступа и упорядочивания.

Улучшение качества анализа эмоционального настроя


Анализ эмоционального настроя (sentiment analysis) — это методика, позволяющая при помощи статистики, NLP и машинного обучения распознавать и извлекать из текста субъективный контекст. К нему могут относиться эмоции, мнения и оценки автора относительно какой-то темы, события или действий компании.

В сочетании с NER анализ эмоционального настроя обеспечивает компаниям детальное понимание отзывов клиентов. И этот процесс может быть очень глубоким. Рассмотрим следующий пример отзыва на отель: «Номер просторный, с потрясающим видом из окна, но выбор на шведском столе был довольно ограниченным». При помощи NER инструменты анализа эмоционального настроя способны определить, что положительная оценка относится к «номеру» и «виду из окна», а негативная — к «шведскому столу». Подобные детальные наблюдения позволяют отелям совершенствовать конкретные аспекты и оценивать впечатления постояльцев.

Как работает NER


Принципиально NER основано на двух основных этапах:

  1. идентификации сущностей в тексте и
  2. категоризации этих сущностей на уникальные группы.



Два этапа процесса NER, выполняемые с фрагментом из книги «В дороге» Джека Керуака.

Давайте рассмотрим каждый из этапов подробнее.

Распознавание сущностей


Распознавание сущностей, часто называемое распознаванием упоминаний (mention detection) или идентификацией именованных сущностей (named entity identification) — это первоначальный и фундаментальный этап процесса NER. Он заключается в систематическом сканировании и выявлении блоков текста, которые потенциально могут представлять значимые сущности.

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

Извлечение признаков. Простого разбиения текста недостаточно. Следующая задача заключается в понимании значения этих токенов. Именно тут вступает в дело извлечение признаков (feature extraction).

Оно заключается в анализе свойств токенов, например:

  • морфологических признаков, касающихся формы слов, например, их начальных форм или префиксов;
  • синтаксических признаков, выделяющих структуру и взаимосвязь слов в предложениях;
  • семантических признаков, передающих внутренний смысл слов и иногда для понимания роли токена касающихся более широких знаний о мире или контекста.

Последующим этапом процесса NER является классификация сущностей.

Классификация сущностей


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

Классификация сущностей — это процесс со множеством нюансов, ему нужно точное понимание контекста, в котором встречаются сущности. В этой классификации используются лингвистические, статистические, а иногда и предметные знания. Например, «Apple» в сфере технологий может относиться к технологической компании, а в кулинарном контексте — к фрукту.

Ещё один пример: «Summer played amazing basketball»; здесь слово «Summer» будет классифицировано как человек из-за контекстуальной подсказки, создаваемой словом «basketball». Однако без наличия таких подсказок «Summer» также может означать время года. Такие неоднозначности в естественном языке часто требуют лингвистического анализа или сложных моделей NER, на обширных датасетах обученных различать возможные значения.

Способы реализации NER


За годы своего существования NER существенно эволюционировало, для решения его задач было выработано множество подходов. Ниже мы расскажем о распространённых методиках NER.

Методика NER, основанная на правилах


При идентификации и классификации именованных сущностей основанные на правилах методики NER применяют наборы заранее определённых правил или паттернов.

Эти правила часто выводятся из лингвистических наблюдений и кодифицируются в систему при помощи следующих техник:

Регулярные выражения. Это сопоставление паттернов для выявления сущностей на основании известных структур, например, телефонных номеров или адресов электронной почты.

Поиск в словарях. Использование заранее заданных списков или баз данных именованных сущностей для поиска совпадений в тексте. Допустим, у системы есть словарь, содержащий имена известных авторов, например, «Джейн Остин», «Эрнест Хемингуэй» и «Джордж Оруэлл». Когда она встречает предложение «Недавно я прочитал рассказ Джорджа Оруэлла», то благодаря списку поиска быстро распознаёт в «Джордж Оруэлл» именованную сущность, относящуюся к автору.

Правила на основе паттернов. Использование для извлечения сущностей определённых лингвистических структур. Слово с заглавной буквы посередине предложения может свидетельствовать об имени собственном. Например, в предложении «Если вы когда-нибудь поедете в Лондон, то обязательно посетите Британский музей, чтобы погрузиться в мир искусства и истории» слово «Лондон» с заглавной буквы намекает, что это имя собственное, являющееся местом.

Зачем использовать эту методику? Методика на основе правил лучше всего работает, когда дело касается конкретных предметных областей, где сущности соответствуют чётким и постоянным паттернам. Такие методики могут быть эффективны и просты, если вы точно знаете, что ищете и если паттерны меняются нечасто.

Методика NER на основе машинного обучения


В мире традиционных методик машинного обучения для NER модели обучаются на данных, в которых сущности размечены. Например, в предложении «Париж — столица Франции» слова «Париж» и «Франции» могут быть размечены как GPE.

В такой методике активно применяется инжиниринг признаков, при котором для повышения точности модели конкретные атрибуты и информация о данных извлекаются вручную.

Примеры распространённых признаков:

  • характеристики слов — такие подробности, как регистр слов (с заглавной буквы, в нижнем или в верхнем регистре), префиксы и суффиксы;
  • контекст — окружающие слова, как предыдущие, так и последующие, дающие дополнительную информацию;
  • синтаксическая информация — метки частей речи, проливающие свет на функцию слова в предложении, например, существительное, глагол, прилагательное и так далее;
  • паттерны слов — форма паттерна слова, особенно при распознавании конкретных форматов, например, дат или регистрационных номеров автомобилей;
  • морфологические подробности — информация, извлекаемая из начальной формы слова, или его морфологические нюансы.

После подготовки признаков модель обучается на этих дополненных данных. При этом используются такие алгоритмы, как Support Vector Machines (SVM), Decision Trees и Conditional Random Fields (CRF). После обучения модель может прогнозировать или размечать сущности в сырых, неразмеченных данных.

Зачем использовать эту методику? Методику на основе машинного обучения следует применять, когда сущности имеют разные типы и не всегда следуют постоянному паттерну. Если у вас есть доступ к аннотированным данным, то вы сможете обучить модель, способную хорошо обобщать выводы на разнообразных паттернах сущностей.

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

Методика NER на основе глубокого обучения


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

Как сказано выше, существенное преимущество глубокого обучения перед традиционным машинным обучением — возможность автоматического изучения признаков в данных. Эта способность позволяет снизить зависимость от трудозатратного ручного инжиниринга признаков, применяемого в традиционных методиках.

Для подготовки моделей глубокого обучения, как и в традиционных методиках, необходимы аннотированные данные. Однако благодаря возможностям таких моделей по обработке огромных датасетов и их сложной структуре они часто обгоняют по точности своих конкурентов, особенно при наличии достаточного объёма обучающих данных.

В сфере NER популярны различные архитектуры сетей.

  • Рекурентные нейросети (Recurrent Neural Networks, RNN) и сети с долгой кратковременной памятью (Long Short-Term Memory, LSTM) усваивают последовательную информацию, делая её подходящей для обработки текстовых данных с контекстом.
  • Архитектуры трансформеров, в том числе GPT и подобные ему, изменили ситуацию в мире NLP, в том числе и NER. Их способность одновременно уделять внимание различным частям входных данных позволяет глубже понимать контекст.

Что касается GPT и распознавания сущностей, хотя модели наподобие ChatGPT успешно справляются со многими задачами, они являются частью широкого спектра инструментов для NER. Однако для задач чистого распознавания сущностей в некоторых случаях могут быть предпочтительны другие специализированные модели.

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

Как реализовать NER


Для NER существует огромный спектр инструментов и библиотек. Однако необходимо знать о пересекающихся стратегиях, усиливающих их потенциал: трансферном и активном обучении. Трансферное обучение заключается в адаптации предварительно обученной модели наподобие GPT-4 или RoBERTa под конкретную задачу NER. Применение предварительно обученных архитектур позволяет экономить на вычислительных затратах и часто приводит к повышению точности. В свою очередь, активное обучение итеративно повторно обучает модель на сложных примерах, повышая её эффективность и скорость сходимости.

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

Инструменты и библиотеки для создания модели NER


В этом разделе мы вкратце рассмотрим несколько примеров инструментов и библиотек, подходящих для задач NER. Это лишь малая часть из доступных инструментов, поэтому если вы решили создать собственную модель NER, то мы рекомендуем провести собственные исследования.

spaCy — это бесплатная опенсорсная библиотека на Python для задач NLP. У неё есть такие функции, как NER, разметка частей речи, парсинг зависимостей и векторы слов. EntityRecognizer — это компонент spaCy для распознавания именованных сущностей с чётким и определённым их упоминанием. Однако его архитектура может быть неоптимальной для задач, в которых определения сущностей неоднозначны или когда ключевая информация находится посередине сущностей.

NLTK (Natural Language Toolkit) — это платформа для создания программ на Python, работающих с данными естественных языков. Хотя эта платформа в основном известна своими возможностями в анализе лингвистических данных, её также можно использовать для NER.

Stanford NLP имеет большой спектр инструментов для обработки естественного языка. Одна из его выдающихся функций — это RegexNER, интерфейс на основе правил, специально разработанный для NER при помощи регулярных выражений. Хотя ядро Stanford NLP написано на Java, в нём есть обёртка для Python, что позволяет использовать его возможности разработчикам на Python.

NeuroNER — это программа, разработанная специально для распознавания именованных сущностей при помощи нейросетей.


Как работает NeuroNER

NeuroNER позволяет создавать или изменять аннотации в новом или имеющемся корпусе, обеспечивая адаптированные и точные результаты распознавания сущностей.

DeepPavlov — это опенсорсная библиотека для разговорного AI, основанного на библиотеках ML наподобие TensorFlow и Keras; в ней есть коллекция предварительно обученных моделей NER, подходящих для глубокого обучения.

BRAT (Brat Rapid Annotation Tool) — это веб-решение, позволяющее аннотировать текст, размечать сущности и их сложные взаимосвязи.

API для NER


Ещё один аспект, который должны учитывать разработчики — это применение интерфейсов программирования приложений (API). Они предоставляют удобный способ использования возможностей NER без необходимости погружения в дебри обучения моделей и бэкендов.

Google Cloud NLP — это облачный продукт Google для задач обработки естественного языка, включающий в себя мощную систему распознавания именованных сущностей и классификации сущностей в тексте.


Демо NLP API

Сервис обработки естественного языка Amazon AWS Comprehend для исследования текста, выявления сущностей и многого другого использует машинное обучение. Согласно официальным ресурсам, Amazon Comprehend использует NLP для извлечения важных выводов о содержимом документов. Он определяет сущности, ключевые фразы, язык, эмоциональный настрой и другие превалирующие элементы документов.

IBM Watson NLU — это компонент большого набора программ IBM AI с функциями распознавания сущностей. Watson Natural Language Understanding, исследующий неструктурированные текстовые данные, применяет глубокое обучение для расшифровки смысла и извлечения метаданных. Благодаря аналитике текста он может выявлять категории, классификации, сущности, ключевые слова, эмоциональный настрой, чувства, взаимосвязи, что позволяет пользователям глубже понимать и анализировать их данные.

OpenAI GPT-4 API предлагает разработчикам доступ к одной из самых совершенных языковых моделей. Хотя его основная сильная сторона заключается в генерации текста, напоминающего написанный человеком, при помощи структурированных определённым образом запросов его можно использовать и для таких задач, как распознавание именованных сущностей. Это особенно полезно, когда требования заключаются не только в выявлении сущностей, но и в понимании контекста, извлечении выводов или в ответе на связанные с текстом вопросы. Гибкость модели GPT-4 делает её удобным кандидатом на выполнение различных задач NLP, включая и NER.

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

Понравилась статья? Еще больше контента на темы разметки, Data Mining и ML вы можете найти в нашем Telegram канале “Где данные, Лебовски?”


  • Как подготовиться к сбору данных, чтобы не провалиться в процессе?
  • Как работать с синтетическими данными в 2024 году?
  • В чем специфика работы с ML проектами? И как разметить 1500 пузырьков руды на одном фото и не сойти с ума?

Обо всем этом читайте в “Где данные, Лебовски?”

Комментарии (0)