Что делает хороший разговор? Хорошая беседа - это такая беседа, при которой собеседник заинтересован в разговоре, возможно, задав несколько вопросов, завязав светскую беседу или пустую беседу.

Рассмотрим этот разговор:

Я: Привет, я Гаурав.
Джон: Привет, я Джон.
Я: Как дела?
Джон: У меня все хорошо. Вы?
Я: У меня тоже все хорошо. Итак, я слышал, вы являетесь экспертом в области машинного обучения. Итак, вы можете мне сказать, что это такое?
Джон: Хммм, машинное обучение - это машинное обучение. Это процесс, эм, способность компьютера учиться самостоятельно, предоставляя некоторые данные для обучения.
Я: Ах! Я понял. Вроде как ребенок учится, верно?
Джон: Да, в простейшей форме.

Я: А что такое DL?
Джон: Что ж, DL означает глубокое обучение. Это больше похоже на подмножество машинного обучения. В основном он использует алгоритмы, отчасти основанные на работе мозга. Вы бы слышали об искусственных нейронных сетях, не так ли?
Я: О да! Итак, искусственные нейронные сети, такие как сверточные нейронные сети и рекуррентные сети, являются частью DL?
Джон: Да, конечно.
Я: Теперь я понимаю . Спасибо за объяснение.
Джон: В любое время.

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

Разговорный ИИ может осуществлять человеческое взаимодействие с людьми с помощью обработки естественного языка (НЛП). Это усовершенствованные версии чат-ботов, которые могут обслуживать автоматические ответы или резервный ответ по умолчанию. Разговорные ИИ - это, по сути, умные чат-боты.

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

На вопрос «Как дела?» Бот отвечает «Замечательно! Спасибо за вопрос." Он даже благодарит вас за вопрос. В этом разговоре много поворотов, и вы можете просмотреть это на картинке. Хочу обратить ваше внимание на последнее сообщение: «Я знаю, да?» в ответ на мое «О! Здорово." Именно такое динамическое взаимодействие или, я бы сказал, реакция на мое заявление делает бота умным, и именно здесь ML и AI играют важную роль. Итак, давайте посмотрим, какие есть варианты создания такого бота.

Экосистема чат-ботов

Есть несколько способов создать умный разговорный ИИ. Вы можете использовать платформы для создания ботов, такие как DialogFlow, IBM Watson, wit.ai, recast.ai, Rasa и другие. Платформы для создания ботов позволяют создавать непрерывное диалоговое НЛП с возможностью обрабатывать и прогнозировать действия на основе ваших намерений. Эти платформы также предоставляют возможности интеграции с любой клиентской платформой по вашему выбору.

При желании вы можете выбрать поставщиков NLP, таких как Rasa NLU, wit.ai, IBM Watson, AWS и другие. Эти платформы предоставляют вам только часть обработки естественного языка, на основе которой вы можете построить свою собственную обработку и модель машинного обучения для создания диалогового потока.

Поток разговорного ИИ

Базовый разговорный ИИ принимает запрос пользователя с помощью текста или голоса и передает его следующим модулям:

  • Модули коннектора
    . Это диалоговая платформа, интерфейс, который может быть веб-сайтом или приложением, где пользователь взаимодействует с ИИ.
  • Модули ввода.
    Пользовательский запрос передается в этот модуль, который выполняет Natural Language Understanding.
  • Управление диалогом
    Этот модуль принимает текст NLU и поддерживает контекст разговора. Затем он использует модель машинного обучения, такую ​​как RNN или LSTM, чтобы предложить соответствующие действия. Этот модуль также можно подключить к серверной части или базе данных для выполнения дополнительной обработки на основе предлагаемого действия.
    В приведенном ниже примере он распознает, что пользователь запрашивает погоду, и подключается к API погоды для выполнения соответствующего действия.

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

Пользователь получает ответ AI в виде текста или голоса через модуль коннектора.

Разговорный AI с Rasa

Rasa - это бот-фреймворк с открытым исходным кодом, который можно использовать для создания контекстных помощников ИИ и чат-ботов. Он состоит из двух компонентов:
1. Rasa NLU, который интерпретирует сообщение пользователя.
2. Rasa Core, который отслеживает диалог и решает, что будет дальше. Rasa Core предлагает наиболее подходящие действия.

У Rasa нет заранее созданных моделей на сервере, которые можно вызывать с помощью API. Вам нужно будет подготовить обучающие данные и загрузить их в Rasa. Однако вы полностью контролируете все компоненты своего чат-бота, поэтому потраченное на него время полностью окупается.

Давайте подробнее рассмотрим 2 компонента стека Rasa и то, как они работают с NLP и ML.

Понимание естественного языка (Rasa NLU):

Rasa NLU обрабатывает вводимый пользователем текст и понимает, что пользователь пытается сказать. По сути, он принимает пользовательский текст в качестве ввода и извлекает из него намерение и сущности.

  • Намерение. Намерение представляет цель ввода данных пользователем, то, что пользователь хочет сделать. Текст, вводимый пользователем, сначала векторизуется, а затем извлекается цель текста.
  • Сущность: сущность представляет собой термин или объект, который имеет отношение к вашим намерениям и обеспечивает конкретный контекст для намерения.

Взяв пример с вопросом «Какая погода будет завтра?», Мы можем получить следующее:

  • Намерение: «request_weather» = ›Пользователь запрашивает погоду.
  • Entity: {«date»: «завтра»} = ›Когда пользователь запрашивает погоду?
    Вы можете определить дополнительные намерения в зависимости от вашего приложения. Например, вы также можете определить объект «место», чтобы понять, из какого места следует запрашивать погоду.

Для разбивки и более глубокого понимания Rasa NLU вы можете ознакомиться со статьей, которую я ранее написал Понимание Rasa NLU.

Обработка диалогов (Rasa Core):

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

Rasa Core использует нейронную сеть, реализованную в Keras, с архитектурой модели по умолчанию, основанной на LSTM, для предсказания следующего действия.

LSTM (сети с долгосрочной краткосрочной памятью) - это особый вид рекуррентной нейронной сети (RNN), способный выборочно запоминать шаблоны в течение длительного времени. Таким образом, LSTM могут помочь в поддержании контекста разговоров, а также в прогнозировании следующего действия. Вы можете прочитать эту статью Введение в LSTM, чтобы лучше понять LSTM. Вы также можете ознакомиться с этой презентацией Vishal Gupta.

В нашем примере запроса погоды предлагается действие «location_question» или «weather_api_call». Наконец, в зависимости от типа действия соответствующий ответ генерируется Rasa NLG (Генератор естественного языка), который является частью Rasa Core.

Здесь рассматриваются основы использования машинного обучения для создания диалогового ИИ. Теперь у вас будет представление о ходе разговора и о том, как различные компоненты Rasa объединяются для выполнения требуемых задач. Основным преимуществом Rasa является то, что компоненты взаимозаменяемы. Вы можете использовать Rasa Core и Rasa NLU по отдельности, подключив их к вашим пользовательским моделям.

Вы можете приступить к созданию своего первого разговорного ИИ Rasa, просмотрев этот блокнот Google colab: https://colab.research.google.com/drive/1pIcv7eEKhNnl2zf4JPl9FvTv1sInlhBT

Если у вас есть какие-либо комментарии, я буду рад обсудить их дальше. Ответьте здесь или найди меня в твиттере

Первоначально опубликовано на ghostcode.in