Подробное пошаговое руководство по внедрению интеллектуального чат-бота.

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

Концепция

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

Тогда зачем ему определять эти намерения? Это очень важно понять. Чтобы отвечать на вопросы, выполнять поиск в базе знаний домена и выполнять различные другие задачи, чтобы продолжить общение с пользователем, вашему чат-боту действительно необходимо понимать, что пользователи говорят или что они собираются делать. Вот почему ваш чат-бот должен понимать намерения, стоящие за сообщениями пользователя (для определения намерения пользователя).

Как сделать так, чтобы ваш чат-бот понимал намерения, чтобы пользователи чувствовали, что он знает, чего они хотят, и давали точные ответы. Стратегия здесь состоит в том, чтобы определить различные намерения и создать обучающие образцы для этих намерений, а также обучить вашу модель чат-бота с этими данными обучающей выборки в качестве данных для обучения модели (X) и намерениями в качестве категорий обучения модели (Y).

Реализация

Необходимые пакеты

Необходимые пакеты python следующие (здесь я упомянул пакеты с версиями, которые я использовал для разработок)

Определить намерения

Я определю несколько простых намерений и группу сообщений, которые соответствуют этим намерениям, а также сопоставлю некоторые ответы в соответствии с каждой категорией намерений. Я создам файл JSON с именем «intents.json», включающий эти данные следующим образом.

Подготовка данных

Сначала нам нужно импортировать все необходимые пакеты

Теперь загружаем json файл и извлекаем необходимые данные.

Переменная «training_sentences» содержит все обучающие данные (которые являются примерами сообщений в каждой категории намерений), а переменная «training_labels» содержит все целевые метки, соответствующие каждому обучению. данные.

Затем мы используем функцию «LabelEncoder ()», предоставленную scikit-learn, для преобразования целевых меток в понятную для модели форму.

Затем мы векторизуем наш корпус текстовых данных с помощью класса «Tokenizer», который позволяет нам ограничить размер словаря некоторым определенным числом. Когда мы используем этот класс для задачи предварительной обработки текста, по умолчанию все знаки препинания удаляются, превращая тексты в последовательности слов, разделенных пробелами, а затем эти последовательности разделяются на списки токенов. Затем они будут проиндексированы или векторизованы. Мы также можем добавить «oov_token», который является значением «вне токена», чтобы иметь дело со словами (токенами) вне словарного запаса во время логического вывода.

Метод «pad_sequences» используется для приведения всех последовательностей обучающего текста к одинаковому размеру.

Модельное обучение

Давайте определим архитектуру нашей нейронной сети для предложенной модели, и для этого мы используем класс модели «Sequential» для Keras.

Архитектура нашей модели выглядит следующим образом.

Теперь мы готовы обучать нашу модель. Просто мы можем вызвать метод «fit» с данными обучения и метками.

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

Вывод

Хорошо!!!! Теперь пора проверить, как работает наша модель. 😊

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

Вы видите, что он работает отлично !!!

Интеграция с чат-приложениями

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

Я уже разработал приложение с использованием Flask и интегрировал эту обученную модель чат-бота с этим приложением.

Окончательное решение выглядит так:

Последние мысли

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

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

  • Используйте больше данных для обучения. Вы можете добавить больше данных в набор данных для обучения. Большой набор данных с большим количеством намерений может привести к созданию мощного решения для чат-бота.
  • Применяйте различные методы НЛП. Вы можете добавить больше решений НЛП к своему решению для чат-бота, например NER (распознавание именованных сущностей), чтобы добавить в чат-бота дополнительные функции. Имея модель NER вместе с вашим чат-ботом, вы можете легко найти любую сущность, которая появляется в сообщениях пользовательского чата, и использовать ее для дальнейших разговоров. Кроме того, вы можете добавить модель Анализ настроений, чтобы определить различные оттенки настроения, стоящие за сообщениями пользователей, и она придаст вашему чат-боту дополнительные цвета.
  • Попробуйте разные архитектуры нейронных сетей. Вы также можете попробовать разные архитектуры нейронных сетей с разными гиперпараметрами.
  • Добавьте смайлики. Смайлы также можно использовать при построении моделей.

Вы можете найти исходные коды этой статьи в репозитории Github.

Надеюсь, вам понравилась эта статья, и ждите еще одну интересную статью. Кроме того, я буду рад услышать ваш отзыв.