обучение чат бота python

Чат-бот на Python (Deep Learning + TensorFlow). Часть I

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

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

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

Где взять данные для обучения

Чтобы получить данные для обучения бота, можно исследовать достаточно много разных ресурсов. Например, есть сборник диалогов из фильмов от Корнеллского университета (Cornell movie dialogue corpus) — он пользуется большой популярностью. Есть также и множество других источников, но нам бы хотелось найти что-то более сырое, что ли. Что-то менее изысканное, что-то с характером. Естественно, это сразу нас ведет на Reddit!

Сначала нам казалось, что мы сможем использовать Python Reddit API Wrapper, но ограничения, накладываемые Reddit на сканирование, не самые удобные. Чтобы собрать большие объемы данных, вам придется нарушить некоторые правила. Вместо этого мы нашли дамп данных из 1,7 миллиарда комментариев на Reddit. Что ж, это должно сработать!

Reddit имеет древовидную структуру в отличие от ряда других форумов, где все линейно. Родительские комментарии линейны, но ответы на них разветвляются. На всякий случай, если кто-то с этим незнаком:

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

Марк Лутц «Изучаем Python»

Скачивайте книгу у нас в телеграм

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

Мы можем просто взять первый комментарий, либо выбрать лучший — набравший наибольшее количество голосов. Подробнее на этом мы остановимся позже. Наша первая задача — получить данные. Если у вас есть проблемы с хранением данных, вы можете взять данные только за один месяц, за январь 2015 года. В противном случае вы можете скачать весь дамп целиком:

Мы качали этот торрент два раза, но в зависимости от количества сидов и пиров время загрузки может сильно варьироваться.

Наконец, вы также можете получить доступ к данным через Google BigQuery: Google BigQuery of all Reddit comments. Таблицы BigQuery со временем обновляются, а торрент — нет, так что это тоже хороший вариант.

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

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

Источник

Как создать чат-бота для Telegram с помощью Python

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

Время переходить к делу и узнать наконец, как создавать ботов в Telegram.

Шаг №0: немного теории об API Telegram-ботов

Начать руководство стоит с простого вопроса: как создавать чат-ботов в Telegram?

Ответ очень простой: для чтения сообщений отправленных пользователями и для отправки сообщений назад используется API HTML. Это требует использования URL:

Токен выглядит приблизительно так:

Если значение ‘ok’ — true, значит запрос был успешным и результат отобразится в поле ‘field’. Если false — в поле ‘description’ будет сообщение об ошибке.

Следующий вопрос: как получать пользовательские сообщения?

Второй вариант — использовать webhooks. Метод setWebhook нужно будет применить только один раз. После этого Telegram будет отправлять все обновления на конкретный URL-адрес, как только они появятся. Единственное ограничение — необходим HTTPS, но можно использовать и сертификаты, заверенные самостоятельно.

Как выбрать оптимальный метод? Метод getUpdates лучше всего подходит, если:

Метод с Webhook лучше подойдет в таких случаях:

Еще один вопрос: как создать зарегистрировать бота?

@BotFather используется для создания ботов в Telegram. Он также отвечает за базовую настройку (описание, фото профиля, встроенная поддержка и так далее).

Существует масса библиотек, которые облегчают процесс работы с API Telegram-бота. Вот некоторые из них:

По своей сути, все эти библиотеки — оболочки HTML-запросов. Большая часть из них написана с помощью принципов ООП. Типы данных Telegram Bot API представлены в виде классов.

В этом руководстве будет использоваться библиотека pyTelegramBotApi.

Шаг №1: реализовать запросы курсов валют

Весь код был проверен на версии Python==3.7 c использование библиотек:
pyTelegramBotAPI==3.6.6
pytz==2019.1
requests==2.7.0

Начать стоит с написания Python-скрипта, который будет реализовывать логику конкретных запросов курсов валют. Использовать будем PrivatBank API. URL: https://api.privatbank.ua/p24api/pubinfo?json&exchange&coursid=5.

Создадим файл pb.py со следующим кодом:

Были реализованы три метода:

Шаг №2: создать Telegram-бота с помощью @BotFather

Необходимо подключиться к боту @BotFather, чтобы получить список чат-команд в Telegram. Далее нужно набрать команду /newbot для инструкций выбора название и имени бота. После успешного создания бота вы получите следующее сообщение:

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

Шаг №3: настроить и запустить бота

Начнем с создания файла config.py для настройки:

В этом файле указаны: токен бота и часовой пояс, в котором тот будет работать (это понадобится в будущем для определения времени обновления сообщений. API Telegram не позволяет видеть временную зону пользователя, поэтому время обновления должно отображаться с подсказкой о часовом поясе).

Создадим бота с помощью библиотеки pyTelegramBotAPI. Для этого конструктору нужно передать токен:

Шаг №4: написать обработчик команды /start

Из переменной бота возможно вызывать любые методы API Telegram-бота.

Начнем с написания обработчика команды /start и добавим его перед строкой bot.polling(none_stop=True) :

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

Это было просто, не так ли?

Шаг №5: создать обработчик команды /help

Давайте оживим обработчик команды /help с помощью встроенной кнопки со ссылкой на ваш аккаунт в Telegram. Кнопку можно озаглавить “Message the developer”.

Код выше выглядит вот так:

обучение чат бота python

Шаг №6: добавить обработчик команды /exchange

Обработчик команды /exchange отображает меню выбора валюты и встроенную клавиатуру с 3 кнопками: USD, EUR и RUR (это валюты, поддерживаемые API банка).

Вот как работает ответ /exchange:

обучение чат бота python

Шаг №7: написать обработчик для кнопок встроенной клавиатуры

Давайте реализуем метод get_ex_callback :

Все довольно просто.

Запишем в get_update_keyboard текущий курс валют в callback_data в форме JSON. JSON сжимается, потому что максимальный разрешенный размер файла равен 64 байтам.

Кнопка t значит тип, а e — обмен. Остальное выполнено по тому же принципу.

Вот как будет выглядеть бот после нажатия кнопки USD:

обучение чат бота python

Шаг №8: реализовать обработчик кнопки обновления

Как это работает? Очень просто:

Метод get_ex_from_iq_data разбирает JSON из callback_data :

get_edited_signature генерирует текст “Updated…”:

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

обучение чат бота python

И вот так — если изменились:

обучение чат бота python

Шаг №9: реализовать встроенный режим

Реализация встроенного режима значит, что если пользователь введет @ + имя бота в любом чате, это активирует поиск введенного текста и выведет результаты. После нажатия на один из них бот отправит результат от вашего имени (с пометкой “via bot”).

Обработчик встроенных запросов реализован.

Теперь при вводе “@exchangetestbost + пробел” вы увидите следующее:

обучение чат бота python

Попробуем набрать usd, и результат мгновенно отфильтруется:

обучение чат бота python

Проверим предложенный результат:

обучение чат бота python

Кнопка “Update” тоже работает:

обучение чат бота python

Отличная работа! Вы реализовали встроенный режим!

Выводы

Поздравляем! Теперь вы знаете, как сделать бота для Telegram, добавить встроенную клавиатуру, обновление сообщений и встроенный режим. Можете похлопать себя по спине и поднять тост за нового бота.

Источник

Создание Python Telegram бота и его deploy на виртуальную машину

Кому нужны чат-боты?

Рынок чат-ботов в России растет с бешеной скоростью и ожидается ежегодный прирост на 30% в течение ближайших трех лет. В 2020 г. количество запросов на чат-боты увеличилось на 17% по сравнению с 2019 г. Большим спросом стали поль­зо­вать­ся голосовые боты, количество запросов на них выросло в четыре раза. В 2021 г. ожидается рост числа запросов на чат-боты на 15-20% от ор­га­низа­ций из госсектора, об­ра­зова­ния, медицины, ло­гис­ти­ки, ре­тей­ла и e-commerce, промышленных и добывающих компаний.

Создаём нашего telegram бота.

Пишем код под наши задачи и тестируем его работоспособность.

Выбираем надежный сервис виртуальных машин.

Переносим нашего бота на виртуальную машину для его дальнейшей работы.

Настраиваем беспрерывную работу бота.

Шаг 1. Создание бота в Telegram

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

обучение чат бота python

Шаг 2. Напишем простейшего чат-бота и протестируем его

Для работы будем использовать библиотеку telebot, которую можно установить при помощи следующей команды:

$ pip install pytelegrambotapi

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

Напишем простого бота, который будет присылать нам в ответ на различные Emoji их размытые PNG копии:

Наш бот готов, теперь осталось его протестировать. Заходим по ссылке, которую прислал BotFather.

обучение чат бота python

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

Шаг 3. Выбираем виртуальную машину!

Что вообще такое эта виртуальная машина?

Виртуальная машина (ВМ ) — это виртуальный компьютер, который использует выделенные ресурсы реального компьютера (процессор, диск, адаптер). Эти ресурсы хранятся в облаке и позволяют ВМ работать автономно. Простыми словами, виртуальная машина позволяет создать на одном компьютере ещё один компьютер, который будет использовать его ресурсы, но работать изолированно.

Именно виртуальная машина поможет нашему боту отвечать на все запросы и работать 24 на 7.

Как выбрать виртуальную машину?

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

Лично я могу рекомендовать следующие сервисы:

Mail cloud solutions — Предоставляют 3000 р. на два месяца тестового периода. (Именно его я и буду использовать в дальнейшей работе).

Yandex.Cloud — Представляют 2000 р. на два месяца тестового периода.

Google Cloud Platform — Предоставляют 300$ на три месяца тестового периода.

После выбора сервиса, пройдем регистрацию и создадим новую виртуальную машину.

Создание виртуальной машины.

Я выбрал минимальные параметры, так как нашему боты не нужны какие-то большие энергоресурсы.

обучение чат бота python

Настройка сети.

обучение чат бота python

Для подключения будем использовать протокол SSH. Для подключения к нашей виртуальной машине, нам необходимо будет выпустить новую связку ssh-ключей.

Для этого перейдем в терминал и пропишем следующую команду:

Переходим к следующему шагу.

Подключение к виртуальной машине

Для подключения к нашей виртуальной машине пропишем следующую команду:

/.ssh/ИмяВашегоКлюча ubuntu@ваш публичный IP-адрес

В случае удачного подключения вы увидите нечто подобное:

обучение чат бота python

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

Установим на наш сервер последнюю версию Python. Для этого последовательно вводите следующие команды:

Установим и создадим виртуально окружение:

Установим и запустим Redis-server:

Проверить, запущен ли наш Redis-server, необходимо прописать «ping»

обучение чат бота python

Если в ответе вы получили PONG, поздравляю, все готово к дальнейшей работе!

Перенесем все необходимые файлы на наш виртуальный сервер. Для этого я буду использовать очень удобную программу CyberDuck

обучение чат бота python

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

обучение чат бота python

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

Проверяем работу, если все в порядке, прописываем в терминале deactivate. Нам остается последний шаг. Настроить непрерывную работу нашего бота.

Шаг 5. Настройка беспрерывной работы нашего бота.

Пропишем следующую команду: nano /lib/systemd/system/НазваниеБота.service

Нажимаем CTRL+O → Enter → CTRL+X для сохранения. Эти настройки помогут запускать или перезапускать нашего бота.

Последний шаг: Снова запускаем нашего бота, но уже с беспрерывной работой.

ГОТОВО! Наш бот запущен и теперь работает 24/7, независимо от того, включен наш с вами компьютер или нет. Если что-то не работает, тщательно проверьте, правильно ли вы прописали путь к файлам. Если терминал выдает ошибку авторизации, попробуйте добавить перед командой «sudo» (Команда от имени администратора)

Источник

Чат-бот с искусственным интеллектом на Python

обучение чат бота python

Интенсив завершен, но вы можете посмотреть его в записи

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

Кому подойдёт интенсив

Новичкам в программировании

Испытаете «в бою» самый универсальный язык, сможете решить, интересно ли вам заниматься разработкой, и начнёте путь в профессию с практики.

Начинающим Python-разработчикам

Получите ответы на давно волнующие вопросы и вместе с опытным наставником создадите готовый проект для портфолио.

Python-разработчики востребованы на рынке. 6532 вакансии для разных уровней открыто на рынке труда.

Вы научитесь

Программа

Знакомимся с Python и архитектурой умного чат-бота

Учим бота на Python понимать текст

Искусственный интеллект на Python: подводим итоги

Подарки и призы

обучение чат бота python

Сертификаты на обучение в Skillbox

Участники, которые дойдут до конца и выполнят все домашние задания, получат сертификат на 5 000 рублей на любой курс.

обучение чат бота python

«Век живи — век учись» Кей Петерсон и Дэвида Колба

Всем, кто дойдёт до конца, — электронная книга от издательства «‎МИФ» в подарок.

Преподаватель

обучение чат бота python

Николай Герасименко

Отзывы участников интенсива

обучение чат бота python

Роман Черемухин

Спасибо за великолепный интенсив по машинному обучению чат-ботов. Три дня пролетели как полтора часа! Доступное изложение материала, увлекательнейшая форма подачи, содержательный контент и абсолютно применимый результат! Благодаря интенсиву я разобрался в ключевых особенностях создания чат-ботов с искусственным интеллектом, а улучшение модели — уже дело практики. С нетерпением жду новых вызовов и решений, которые подарит нам Skillbox! Что будет завтра — компьютерное зрение или NLP? С радостью поучаствую и в том, и в другом.

обучение чат бота python

Дмитрий Голеусов

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

обучение чат бота python

Тимур Овчинников

Николай Герасименко — профессионал своего дела, очень качественно провёл занятие. Посещение интенсива повлияло на дальнейший выбор профессии. Не думал, что писать ботов на питоне так просто. Раньше возился только со скриптами. Буду и дальше следить за графиком ваших интенсивов по программированию и принимать участие. Спасибо!

Что вас ждёт

Мощная программа

Три дня вебинаров по 1,5 часа для полного погружения в тему — такого вы ещё не видели.

Реальные задачи

Которые помогут закрепить знания и понять, в каком направлении двигаться дальше.

Кейс в портфолио

На интенсиве вы создадите проект, который наверняка оценят потенциальные работодатели.

Комьюнити

Вас ждёт общение с другими участниками и ведущим интенсива в закрытом чате в Telegram.

Получить доступ к записи бесплатного интенсива

Похоже произошла ошибка. Попробуйте отправить снова или перезагрузите страницу.

Ваша заявка успешно отправлена

Получайте расписание новых интенсивов каждую неделю

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

Похоже произошла ошибка. Попробуйте отправить снова или перезагрузите страницу.

Данные успешно отправлены.

обучение чат бота python

Прежде чем вы уйдёте… Загляните на распродажу

Профессии с трудоустройством и топовые курсы. Для вас — со скидками до 50%.

Источник

Создаем чат-бот в Python с помощью nltk

обучение чат бота python

Nov 20, 2019 · 5 min read

обучение чат бота python

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

Мы напишем простой чат-бот, используя библиотеку nltk ( набор инструментов обработки естественного языка, Natural Language Toolkit). Это ведущая платформа создания программ на Python для работы с данными на “человеческом” языке.

Импортируем необходимые библиотеки:

обучение чат бота python

Импортируем набор данных в блок данных pandas:

обучение чат бота python

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

Нулевые значения передаются для того же типа вопросов, ответ на которые может быть почти одинаковым и в подобной группе вопросов; ответ дается на первый вопрос, остальные остаются с нулевым значением. Таким образом, мы можем использовать ffill(), возвращающий значение предыдущего ответа вместо нуля, как показано ниже:

обучение чат бота python

По шагам:

обучение чат бота python

Давайте рассмотрим подробнее первый шаг — нормализацию текста — где мы преобразуем данные в нижний регистр, затем удаляем специальные символы и выполняем лемматизацию.

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

обучение чат бота python

Мы видим, что текст чист. Токенизация слов — это процесс преобразования обычных текстовых строк в список токенов.

обучение чат бота python

Функция pos_tag возвращает части речи каждого токена, таким образом функция-лемматизатор определяет части речи токена и преобразует токен в корневое слово, как показано ниже:

Источник

Добавить комментарий

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