NLP — обработка естественного языка: цифровые помощники, навигаторы и защита от спама
NLP — это не только нейролингвистическое программирование, которое взяли на вооружение пикаперы. Под этой аббревиатурой также скрывается другое понятие, и без него было бы невозможно развитие многих современных технологий. Речь об обработке естественного языка (natural language processing, NLP) — области искусственного интеллекта, направленной на создание программ, которые могут понимать текст и произносимые слова так же, как люди, и реагировать на полученные данные, то есть отвечать на них собственными текстами или речью.
Этот подраздел информатики лежит в основе разговорного искусственного интеллекта и сочетает в себе вычислительную лингвистику — моделирование человеческого языка на основе правил и статистических методов — с моделями машинного и глубокого обучения. Вместе эти технологии позволяют алгоритмам обрабатывать человеческий язык в форме текста или голосовых данных и понимать его в соответствии с намерениями и настроениями говорящего или пишущего.
Примеры NLP: никаких фальшивых новостей
Даже если среди ваших собеседников нет продвинутого робота, наверняка вы регулярно взаимодействуете с технологиями NLP. На них основаны навигаторы с голосовым управлением, цифровые помощники, чат-боты и программы по переводу речи в текст — последние, к примеру, позволяют читать автоматическую расшифровку голосовой почты. Кроме того, благодаря методам natural language processing вы можете перемещаться по веб-сайтам, используя встроенную панель поиска либо выбирая предложенные теги или категории.
Сегодня обработка естественного языка переживает бум за счет доступа к огромному массиву данных и увеличения вычислительной мощности устройств. Это открывает возможности для создания полезных инструментов NLP в таких сферах, как здравоохранение, СМИ, финансы и прочих. В корпоративном мире технологии NLP тоже востребованы — для оптимизации бизнес-процессов и повышения производительности труда.
Области применения обработки естественного языка расширяются с каждым днем. Вот лишь несколько примеров.
- NLP помогает распознавать и прогнозировать заболевания. Так, сервис Amazon Comprehend Medical извлекает информацию о диагнозах, медицинских препаратах и результатах лечения из карт пациентов, отчетов о клинических испытаниях и других электронных медицинских записей и устанавливает взаимосвязи, скажем, между названием препарата и дозировкой.
- Системы обработки естественного языка позволяют компаниям узнавать, что в соцсетях или других источниках говорят об их услуге или продукте клиенты.
- Благодаря NLP появляются когнитивные помощники, которые работают как персонализированная поисковая система. Сначала они собирают о вас информацию, а потом напоминают вам то, что вы не можете вспомнить в нужный момент — будь то название песни или имя дальнего родственника.
- Такие компании, как Yahoo и Google, фильтруют и классифицируют ваши электронные письма с помощью NLP. Анализируя текст в сообщениях, проходящих через их серверы, они останавливают спам еще до того, как он попадет в ваш почтовый ящик.
- Группа по NLP в Массачусетском технологическом институте разработала новую систему для идентификации фальшивых новостей. Технология определяет, является ли источник точным или политически предвзятым и можно ли ему доверять.
- Alexa от Amazon и Siri от Apple — примеры интеллектуальных голосовых интерфейсов, которые используют NLP для ответов и реакций на голосовые запросы, например найти конкретный магазин, сообщить прогноз погоды, предложить лучший маршрут до офиса или включить дома свет.
- Трейдеры используют NLP для отслеживания новостей, отчетов компаний, комментариев о возможных слияниях — все это затем может быть включено в торговый алгоритм для получения прибыли.
Задачи NLP: распознать и устранить
Чтобы такие инструменты функционировали как надо, они должны правильно обрабатывать и понимать человеческий язык. Но он полон двусмысленностей, и это затрудняет создание программного обеспечения, которое в точности определяет предполагаемое значение текстовых или голосовых данных. Омонимы, омофоны, сарказм, идиомы, метафоры, грамматические ошибки и исключения из правил, вариации в структуре предложений — вот лишь некоторые из отклонений человеческого языка, на изучение которых у людей уходят годы. Но программисты должны сразу научить NLP-приложения их распознавать.
Задачи, которые приходится решать технологиям NLP, включают:
- распознавание речи. Это задача перевода голосовых данных в текст. Такая функция требуется любому приложению, которое выполняет голосовые команды или отвечает на устные вопросы. Задача осложняется, если люди говорят быстро, с невнятным произношением, акцентом и разной интонацией, неправильной грамматикой;
- определение части речевых тегов (грамматических тегов). Проще говоря, система должна понять, к какой части речи относится конкретное слово на основе его употребления и контекста. Например: «Она пила кофе каждое утро» и «Пила может работать без подзарядки два часа»;
- устранение неоднозначности смысла слова. Это выбор нужного значения из нескольких посредством семантического анализа. Например, слово «хвост» может означать и хвост животного, и заднюю часть поезда или конец очереди. Система должна найти тот вариант, который имеет наибольший смысл в данном контексте;
- распознавание именованных сущностей (named entity recognition, NER). Так, если в тексте встречаются имена собственные, то система должна выявить их и определить, к какому классу отнести, будь то имя человека, географическое название или наименование организации. Это могут быть и другие именованные сущности, например даты, валюты, денежные суммы;
- разрешение совместных ссылок. Если в тексте есть несколько разных отсылок к одному объекту, задача NLP — понять, что они связаны. Наиболее распространенный пример — определить объект, к которому относится местоимение («она» = «Мария»). Другой случай — выявить метафоры или идиомы в тексте: «медведь» иногда не животное, а крупный волосатый человек;
- анализ настроений. Это попытка извлечь из текста субъективные характеристики: эмоции, сарказм, замешательство, подозрительность и так далее;
- генерация естественного языка (natural language generation, NLG). Преобразование структурированной информации в голосовые данные. Иногда эта задача описывается как противоположная процессу преобразования речи в текст.
Методы NLP: посчитать, разрезать, обнаружить смыслы
Решить вышеописанные задачи позволяют различные методы NLP — Python или R (языки программирования) широко используются для их реализации. Но прежде чем углубляться в строки кода, важно понять концепции, которые лежат в основе этих методов обработки естественного языка.
Мешок слов
Алгоритмы машинного обучения не могут обрабатывать сырой текст, сначала его нужно перевести в наборы цифр (извлечь их него признаки). Мешок слов — это широко используемая модель извлечения признаков, она позволяет подсчитывать — сколько раз каждое слово употребляется во фрагменте текста. При этом грамматика, семантика и порядок слов игнорируются.
Но как определить «вес» часто употребляемых слов? Ведь слово может повторяться и потому, что оно значимо в контексте, и потому, что это, например, предлог. Решение есть: подсчитывается число вхождений каждого слова не только в конкретном документе, но и в похожих текстах. Такой подход называется «Частота термина — обратная частота документа» (term frequency — inverse document frequency, TF-IDF). Так, повторяющиеся в тексте слова «вознаграждаются», но также «штрафуются», если часто употребляются в коллекции схожих текстов, которую включают в алгоритм. Так системе NLP проще найти уникальные слова и оценить их важность в тексте.
Токенизация
Этот метод заключается в том, чтобы разбить текст на предложения и слова — то есть на части, называемые токенами. В этом процессе нужно отбросить определенные символы, такие как знаки препинания.
Казалось бы, разрезать текст — проще простого, если ориентироваться на точки при разбивке на предложения и на пробелы при разбивке на слова. Но и здесь есть свои нюансы. Как в случае с именами собственными (например, Нижний Новгород) или устойчивыми сочетаниями (вешать лапшу на уши), где пробел между словами может запутать систему. Или когда точка используется при сокращении (например, «проф. Преображенский») и следующие за ней слова следует рассматривать как часть того же токена. А биомедицинские тексты с огромным количеством дефисов, скобок и других знаков препинания — вообще темный лес!
Удаление стоп-слов
Чтобы освободить место в базе данных и сократить время обработки текста, из него удаляются неинформативные слова, которые не представляют ценности для NLP. Это местоимения, предлоги, артикли и так далее. Универсального списка стоп-слов нет. Можно выбрать их коллекцию заранее, расширить список позже или вообще создать с нуля.
К этому процессу тоже нужно подходить с умом. Ведь удаление некоторых стоп-слов может обернуться потерей релевантной информации и изменить контекст. Например, при анализе настроений мы можем сбить алгоритм с пути, если удалим стоп-слово «не».
Стемминг
Это процесс поиска основы слова путем удаления его аффиксов, то есть приставок или суффиксов, которые прикрепляются к корню слова. Проблема в том, что аффиксы могут создавать новые формы того же слова (как суффикс «е» в слове быстрее) или даже новые слова (как суффикс «ист» в слове гитарист). И важно понимать, что основа слова не всегда равна его корню.
В языках Python и R есть библиотеки, содержащие аффиксы и алгоритмы для стемминга. Их можно взять за основу и редактировать по своему усмотрению.
Зачем использовать стемминг, если у него есть такие «побочки»? Прежде всего, для исправления орфографических ошибок токенов. Стеммеры очень быстро выполняют простые операции со строкой. И если скорость и производительность важны в модели NLP, то стемминг — лучший вариант.
Лемматизация
Имеет цель свести слово к его основной форме и сгруппировать различные формы одного и того же слова. Например, глаголы в прошедшем времени меняются в настоящем («он шел» и «он идет»). Хотя это кажется тесно связанным с процессом выделения основы слова, лемматизация использует другой подход для поиска корневых форм.
Лемматизация преобразует слова в их начальную словарную форму (лемму), для чего требуются подробные словари, в которых алгоритм может искать слова и связывать их с соответствующими леммами.
Этот метод также принимает во внимание контекст, что позволяет, например, решить задачу устранения неоднозначности слова. То есть при лемматизации система различает значения идентичных слов в зависимости от контекстного окружения: за́мок (феодала) — замо́к дверной.
Однако поскольку для лемматизации требуется больше знаний о структуре языка, чем для стемминга, то для нее нужно и большей вычислительной мощности.
Тематическое моделирование
Этот метод основан на предположении, что каждый документ состоит из комбинации тем, а каждую тему определяет набор некоторых слов. Что это означает? Если мы обнаружим скрытые темы, то сможем полнее раскрыть смысл текстов. Как это сделать? Построить тематическую модель коллекции текстовых документов, которая даст системе понять, к каким темам относится каждый текст и какие слова образуют каждую тему.
По сути, тематическое моделирование — это метод обнаружения скрытых структур в наборах текстов или документов. Он чрезвычайно полезен для классификации текстов, построения рекомендательных систем (например, чтобы рекомендовать вам книги на основе прошлого выбора).
Эволюция от NLP к NLU
Когда обработка естественного языка выполнена с использованием различных методов, запускается следующий этап, на котором полученные смыслы собираются воедино, преобразовываются в структуру, понятную машине. И при этом учитываются не только лингвистические факторы, но и, скажем, последний разговор, близость говорящего к микрофону, персонализированный профиль.
Понимание естественного языка (natural language understanding, NLU) — это подполе NLP, которое набирает популярность из-за своего потенциала в когнитивных системах и приложениях искусственного интеллекта. Сложно понять, где проходит граница между NLP и NLU. Но, очевидно, последнее выходит за рамки структурного понимания языка. Алгоритмы NLU должны решать сложную проблему семантической интерпретации, то есть понимания устного или письменного текста со всеми тонкостями, контекстом и выводами, которые мы, люди, способны сделать.
Эволюция NLP в сторону NLU может иметь важное значение как в бизнесе, так и в повседневной жизни. Поскольку объемы неструктурированной информации продолжают расти в геометрической прогрессии, мы выиграем от неутомимой способности компьютеров помочь нам во всем этом разобраться.
Наталья ТРАВОВА