DATA4
Автор статьи: Александр крайнов

Понимание естественного языка

Понимание естественного языка всегда было одной из основных задач искусственного интеллекта. Считается, что истоки этого направления информатики берут начало в 1950 году со статьи Алана Тьюринга [1], в которой предложен знаменитый тест, адаптированный из салонной игры. В ИТ-сфере используется ряд методов и подходов, разработанных для решения задачи NLU.

Программы-собеседники

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

Со времени Элизы разработан ряд программ, поведению диалога на естественном языке. Одной из самых известных стала ALICE, которая выиграла подряд несколько премий Лебнера — соревнования по прохождению Теста Тьюринга. В России в 2000-х годах была популярна программа ChatMaster[2], созданная Дмитрием Журавлевым, и благодаря которой автор этих строк попал в область ИИ.
Рис. 1. Пример диалога с программой ChatMaster.
Несмотря на ухищрения, такие как учет контекста или использования переменных окружения, в большинстве таких программ применяется простой принцип: входная фраза пользователя анализируется и разбирается по словам, затем в базе диалогов программы ищутся похожие предложения, после чего выдается реплика, соответствующая найденному предложению. Автор ALICE даже разработал специальный язык разметки на основе XML — AIML, с помощью которого задаются паттерны и реплики на них[3].

Чат-боты

Виртуальные собеседники нашли применение в бизнесе в виде чат-ботов — программ, помогающих клиентам магазинов и сетей в выборе услуг и товаров, и обеспечивающих удобство использования сервисов. Благодаря таким программам пользователь может быстро найти интересующий раздел сайта, купить товар или оставить сообщение. Индустрия чат-ботов насколько сильно развилась за последние годы, что даже крупнейшие корпорации создали свои (или приобрели) фреймворки для разработки собеседников: к слову, значительная часть таких программ разрабатывается сейчас на основе DialogFlow (ранее Api.ai) компании Google [4] или Microsoft Bot Framework[5].

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

Как правило, виртуальные собеседники, равно как и чат-боты, используют поверхностные (shallow) методы обработки текстов. Главная задача алгоритма — обнаружение фактов или ключевых слов, которые используются в последующем диалоге. Если такие факты обнаружены с некоторой долей вероятности, то остальная часть текста диалога, как правило, игнорируется. Этого достаточно для бизнес-задач, особенно тогда, когда нужна статистическая обработка массива текстовых документов.

Наиболее распространенной "поверхностной" моделью текста является "мешок слов" (bag of words). В этой модели текст представляется как множество слов — без учёта позиции слов по отношению друг к другу: например, предложение "Я не сильно люблю рисовать" будет представлено как {"люблю", "не", "рисовать", "сильно", "я"}.

В тех областях, где требуется полноценный анализ текста и учёт тонких смысловых оттенков (например, в задачах определения авторства), подобное "расточительство" недопустимо. Глубокие (deep) методы обработки языка, базирующиеся на фундаментальных подходах к анализу текстов, относятся больше к области компьютерной лингвистики (computational linguistics). Как правило, тексты при таком подходе проходят конвейер из анализаторов [6]:

1) Графематический (обработка символов)

2) Лексический (выявление слов)

3) Морфологический (анализ форм слов)

4) Синтаксический (оценка взаимного расположения слов и роли)

5) Семантический (выявления смысла слов и связей друг с другом)

6) Прагматический (понимание смысла текста и пользы для читателя)

Результат такого конвейера — сложные структуры: деревья парсинга и семантические графы отношений между словами. Глубокие методы также опираются на тезаурусы языка — словари с указанием семантической роли слов, синонимов, антонимов, гиперонимов и т. д. Синтаксический парсер учитывает особенности того или иного языка. По этой причине перенести анализатор с одного языка на другой затруднительно.
Рис. 2. Пример поиска слова в автоматически созданном тезаурусе
Подпишись на рассылку новостей о AI
Только полезные материалы о машинном обучении и искусственном интеллекте. Мы уважительно относимся к нашим читателям и рассылаем письма не чаше 1 раза в неделю!
Векторизация слов

Сложность глубоких методов анализа не позволяет использовать их в областях, требовательных к производительности, то есть в большинстве бизнес-приложений. Поэтому, когда в 2013 году Томаш Миколов, работавший в то время в Google, представил новый метод представления смысла слов и текстов, исследователи сразу взяли предложенный метод за основу. Речь идет о Word2Vec, который можно было бы назвать гибридным подходом к обработке языка [7].

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

В Word2Vec размерность искусственно ограничена и составляет несколько сотен измерений. Самым важным и замечательным побочным эффектом при этом является то, что при обучении эти измерения начинают соответствовать качествам (смыслам или синтаксическим параметрам) слова[8]. Например, одно измерение будет отображать пол, а другое — падеж. Таким образом, в Word2Vec если взять вектор "король", прибавить вектор "девочка" и вычесть вектор "мальчик" то получим "королева" [9].

Рис. 3. Пример 2D-проекции векторов Word2Vec. Одинаковые качества слов имеют одинаковую направленность (http://www.samyzaf.com/ML/nlp/nlp.html).
Word2Vec нашел применение во областях, где требуется быстрая обработка языка. Эта модель также совмещается с глубокими нейронными сетями, в частности, с долговременно-кратковременной памятью (LSTM), и используется для машинного перевода и генерации текстов.

Итоги

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


Читайте наши статьи:

Капсульные нейронные сети

Нейронные сети, фундаментальные принципы работы и топология

Применение речевой аналитики в бизнесе



Литература

  1. Алан М. Тьюринг. Может ли машина мыслить? / Алан М. Тьюринг, перевод Ю. А. Данилова, М.: Государственное издательство физико-математической литературы, 1960.
  2. Дмитрий Журавлёв. Руководство собеседника программы ChatMaster.
  3. ИзучаемAIML // Хабрахабр.
  4. Семён Белоглазов. Обучаемый Telegram чат-бот с ИИ в 30 строчек кода на Python // Хабрахабр.
  5. Денис Фролов. Всепротокольный бот на PHP за 10 минут, или как Microsoft Bot Framework и Azure Functions облегчают нам жизнь // Хабрахабр.
  6. Автоматическая Обработка Текста — Технологии.
  7. Mikolov T. [et al.]. Distributed Representations of Words and Phrases and their Compositionality // arXiv:1310.4546 [cs, stat]. 2013.
  8. Сергей Пономарёв. Word2Vec в примерах. Хабрахабр.
  9. King + Girl — Boy = Queen // Embedding Viewer.

DATA4

Сделаем будущее настоящим!
Связаться с нами
Напишите контактные данные, чтобы мы связались с вами.