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

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

Установка:

Для пользователей Windows установите Anaconda, используя следующую ссылку.

Для пользователей Mac перейдите по этой ссылке.

Для пользователей Linux перейдите по этой ссылке.

Вы можете легко установить anaconda, после чего мы создадим виртуальную среду для нашего чат-бота. После установки anaconda откройте приглашение Anaconda (пользователь Windows) и терминал (пользователь Mac и Linux), а затем введите следующую команду:

conda create -n chatbot python=3.5 anaconda

Нажмите кнопку ввода, а затем начните установку. После установки этой виртуальной среды напишите команду-

conda активирует чат-бота

Нажмите Enter после написания вышеуказанной команды, после чего вы войдете в свою виртуальную среду. После того, как вы войдете в свою виртуальную среду, вы должны установить TensorFlow в своей среде. Итак, напишите следующую команду для установки TensorFlow:

pip install tensorflow==0.12.1

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

Импортировать эти библиотеки-

Предварительная обработка данных

Это включает в себя ряд шагов для предварительной обработки импортированного набора данных до требуемого формата, необходимого для его работы с моделью Seq2seq в Tensorflow.

Создание словаря, чтобы можно было выполнить сопоставление каждой строки и идентификатора.

Если длина списка в словаре четная, то первая беседа принимается за вопрос, а вторая за ответ. Это повторяется на всей его длине. При нечетном числе разговоров последним для удобства пренебрегают.

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

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

Это нужно, чтобы получить частоту каждого слова в нашем наборе данных. Поможет отфильтровать редкие слова (обычно имена, существительные, которые не помогают модели учиться). Менее частые слова удаляются с помощью приведенного ниже кода.

Эти токены помогают модели понять начало и конец предложения, редкие слова и т. д.

answersints2word помогает сформировать предложение, когда модель предсказывает выходные данные с целыми числами.

Помогает модели понять конец каждого ответа в модели.

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

Сортирует вопросы и ответы по их длине. От 1 до 25.

Построение модели seq2seq -

Модель seq2seq — это тип модели RNN «многие ко многим». Чаще всего они используются для чат-ботов и моделей перевода. Он имеет 2 компонента, кодировщик и декодер.

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

Назначает тег SOS началу каждой цели (ответов).

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

Теперь, когда у нас есть RNN кодировщика и RNN декодера, мы будем использовать их для построения нашей модели seq2seq.

Обучение модели seq2seq

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

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

Запуск сеанса Tensorflow и определение нескольких других параметров, необходимых для обучения.

Определение прогнозов, которые, как мы знаем, являются выходными данными функции seq2seq, определенной выше.

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

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

Модель RNN принимает входные данные только партиями.

Разделение данных на обучающий набор и тестовый набор. Модель обучает 85% данных и проверяет свой прогноз на 15% данных, чтобы вычислить ошибку потерь и улучшить ее в последующие эпохи.

Тестирование модели seq2seq

Во время тренировки веса сохраняются на каждой контрольной точке. Его можно загрузить для общения с чат-ботом.

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

Настройка нашего чат-бота-

Взаимодействие с нашим чат-ботом-