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

Друг: Привет !! Я много слышал о чат-боте. Что это?

Я: Это похоже на обычное чат-приложение, такое как WhatsApp, Facebook messenger и т. Д., Но с той лишь разницей, что в случае с чат-ботом вам отвечает машина, а не человек.

Друг: Привет, брат !!! что ты сказал? Это бывает только в кино. В реальной жизни это невозможно.

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

Друг: Что это за машинное обучение? Может быть, это какая-то магическая мантра, которую можно использовать, чтобы наложить заклинание на машину, и она автоматически начнет вести себя как люди?

Я: Выходи из эпохи арабских ночей и послушай меня. Машинное обучение - это способность машины учиться на вводимых данных и действовать как человек.

Друг: Как это поможет в создании чат-бота? Не могли бы вы объяснить, как создать базового чат-бота?

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

Друг: Какой мозг? Теперь вы стали нейрохирургом и начали трансплантировать мозг в аппарат?

Я: Нет !!! Я все еще программист и не планирую становиться нейрохирургом. Мозг, о котором я говорю, представляет собой программу, основанную на алгоритме машинного обучения, которая будет использоваться для создания чат-бота.

Друг: Ой, отлично !!!

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

Друг: Я не слежу за тобой, дружище.

Я: Позвольте мне помочь вам понять.

Друг: хорошо.

Я: Под классификацией текста я подразумеваю, что мы можем разделить наше сообщение на разные категории, такие как «Привет, привет» можно отнести к категории «приветствие», а «увидимся снова, пока» можно отнести к категории «до свидания». Аналогичным образом мы можем создавать разные сообщения и классифицировать их по разным классам. Мы можем использовать эти данные для обучения нашей модели. После обучения наша модель классифицирует новый текст по существующим классам, и мы ответим ответом на основе этой классификации.

Друг: хорошо.

Я: Позвольте создать образец данных, создав образец сообщения и распределив его по классам.

Образцы данных

Мы будем использовать тензорный поток, фреймворк машинного обучения, созданный Google, для построения нашей модели. Мы создадим встраивание предложений, используя существующую модель встраивания tensorflow_hub. 'Tensorflow_hub' - это репозиторий для управления повторно используемым компонентом моделей машинного обучения. Для классификации текста воспользуемся классификатором глубокой нейронной сети. Для простоты понимайте глубокую нейронную сеть как сеть с несколькими слоями, также известными как скрытые слои между вводом и выводом. Вот код.

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

Здесь текст будет преобразован в вектор действительного числа. Эти векторы будут использоваться как функции в нашем классификаторе.

Создайте классификатор DNN для обучения

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

Обучите модель

Обучаем модель на выборочных данных. Чем больше данных мы соберем, тем выше будет точность модели.

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

Друг: Как наша модель получит сообщение пользователя?

Я: Мы выставим это как услугу. Интерфейс чата вызовет эту службу и передаст модели сообщения ввода пользователя. Позвольте мне показать вам, как это сделать.

HTTPServer, библиотека python может использоваться для создания сервера, она будет обрабатывать запрос и использовать модель для обслуживания ответа.

Код для обработки HTTP-запроса

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

Код для классификации текста

Друг: Как только мы получим категорию сообщения, мы выберем ответ на основе категории и отправим обратно в интерфейс чата.

Я: Ага !!!, теперь вы это понимаете.

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