Обложка статьи «Правильный NLP: как работают и что умеют системы обработки естественного языка»

Правильный NLP: как работают и что умеют системы обработки естественного языка

Ринат Максутов

Ринат Максутов, руководитель практики новых технологий компании Accenture в России

Согласно данным компании Research and Market объём мирового рынка обработки естественного языка увеличится с $10,2 млрд. в 2019 году до $26,4 млрд. К 2024 году при совокупном годовом темпе роста (CAGR) на 21,0% в течение прогнозируемого периода.

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

Какие задачи сегодня может решать NLP?

Машинный перевод текстов с одного языка на другой

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

Анализ текстов

Анализ текстов реализуется в трёх основных форматах: классификации, отражении содержания и анализе тональности.

Все задачи по классификации текстов (text classification) можно разделить на два типа:

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

Отражение содержания текста (text summarization) работает так: на вход NLP-система принимает текст большого размера, а на выходе отдаёт текст меньшего размера, отражающий содержание большого.

Например, от машины можно потребовать сгенерировать пересказ текста, заголовок или аннотацию. Чуть подробнее про генерацию текста можно почитать в материале «Генерируем заголовки фейковых новостей в стиле Ленты.ру» с подробным разбором способов, которыми можно обучить нейросети созданию осмысленных и забавных для человеческого восприятия заголовков.

Наконец, анализ тональности текста (sentiment analysis) позволяет находить в тексте мнения и выявлять их свойства. Какие именно свойства будут исследоваться, зависит от поставленной задачи. К примеру, целью анализа может быть сам автор — анализ тональности определяет типичный для него стиль, эмоциональную окраску текста и т. д.

Распознавание и синтез речи

Распознавание речи представляет собой процесс преобразования речевого сигнала в цифровую информацию, например в текст. Синтез речи работает в обратном направлении, формируя речевой сигнал по печатному тексту.

Синтез и распознавание речи применяются в самых разных областях, например, в работе голосовых ассистентов, IVR-систем и «умных домах».

Разработка диалоговых систем

Диалоговыми системами можно считать:

  • умные помощники (Яндекс.Алиса, Siri, Alexa);
  • чат-боты — текстовые системы, следующие сценариям диалога (бот «Связного», Facebook Messenger);
  • QA-системы.

Все они опираются на NLP-инструменты: распознавание речи, выделение смысла, контекста, определение намерения, а затем выстраивание диалога, исходя из вышеперечисленного (в идеале — путём синтеза речи).

Выделение сущностей и фактов

Ещё одна популярная задача NLP — извлечение именованных сущностей (Named-entity recognition, NER) из текста. Представим, что у есть сплошной текст о покупке-продаже активов, и необходимо выделить персон, а также даты и активы.

На фоне роста аналитических прогнозов, миллиардер Иван Петров выкупил контрольный пакет акций компании «Рога и Копыта» в 1999 году.

Задача NER — понять, что участок текста «1999 года» является датой, «Иван Петров» — персоной, а «пакет акций» — активом.

Без NER тяжело представить решение многих задач NLP, допустим, разрешения местоименной анафоры или построения вопросно-ответных систем. Если задать в поисковике вопрос «Кто играл роль Бэтмена в фильме “Темный рыцарь”», то ответ находится как раз с помощью выделения именованных сущностей: выделяем сущности (фильм, роль и т. п.), понимаем, что спрашивается, и дальше ищем ответ в базе данных.

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

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

Мы продемонстрировали возможность применения технологий ML и NLP для извлечения информации из текстового описания (и формирования профилей оборудования на её основе). Сформированные профили были сопоставлены с результатами ручного маппинга, взятого за эталон — достигнутая точность составила 97,3%. Подход позволяет существенно снизить затраты труда и времени, а также свести к минимуму риски, связанные с ошибками ручной обработки текстов.

Как обрабатывается естественный язык?

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

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

Конвейер NLP

Реализация любой сложной задачи обычно означает построение пайплайна (конвейера).

Суть этого подхода в том, чтобы разбить задачу на ряд последовательных подзадач и решать каждую из них отдельно. В построении пайплайна можно условно выделить две части: предобработку входных данных (обычно занимает больше всего времени) и построение модели. Основных этапов — семь.

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

2. Вычисление признаков каждого токена. Вычисляются контекстно-независимые признаки токена. Это набор признаков, не зависящих от соседних с токеном слов.

  • Один из самых часто использующихся признаков — часть речи.

  • Для языков со сложной морфологией (русский язык) также важны морфологические признаки: например, в каком падеже стоит существительное, какой род у прилагательного. Из этого можно сделать выводы о структуре предложения.
  • Морфология также нужна для приведения слов к начальной форме, с помощью которой мы можем уменьшить объём признакового пространства.

Например: I had a pony. I had two ponies.

Оба предложения содержат существительное «pony», но с разными окончаниями. Если тексты обрабатывает компьютер, он должен знать начальную форму каждого слова, чтобы понимать, что речь идёт об одной и той же концепции пони. Иначе токены «pony» и «ponies» будут восприняты как совершенно разные. В NLP этот процесс называется лемматизацией.

3. Определение значимости и фильтрация стоп-слов. В русском и английском языках очень много вспомогательных слов, например «and», «the», «a». При статистическом анализе текста эти токены создают много шума, так как появляются чаще, чем остальные. Поэтому их отмечают как стоп-слова и отсеивают.

4. Разрешение кореференции. В русском и английском языках очень много местоимений вроде he, she, it или ты, я, он и т. д. Это сокращения, которыми мы заменяем на письме настоящие имена и названия. Человек может проследить взаимосвязь этих слов от предложения к предложению, основываясь на контексте. Но NLP-модель не знает, что означают местоимения, ведь она рассматривает всего одно предложение за раз.

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

Это дерево парсинга демонстрирует, что главный субъект предложения — это существительное «London». Между ним и «capital» есть связь «be». Вот так мы узнали, что Лондон — это столица. Если бы мы проследовали дальше по веткам дерева (уже за границами схемы), то могли бы узнать, что «London is the capital of Great Britain».

6. Перевод обработанного текста в векторную форму. Данный шаг позволяет сформировать векторные представления слов. Таким образом, у слов, используемых в одном и том же контексте, похожие векторы.

7. Построение модели в зависимости от поставленной цели. Например, модель для классификации или генерации новых текстов.

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

Призы для программистов — нужно пройти опрос. Больше ответов — больше шансы