Как сделать чат бот: Как создать чат-бота

Как создать бота в телеграм: практическая инструкция | Bubble

Bubble

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

Содержание

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

Виды и примеры чат-ботов

Существует два принципа работы ботов: те, которые работают по алгоритму, и боты на базе ИИ. Первые — клик-боты — работают по заданным правилам. Если пользовательский запрос выходит за рамки алгоритма, бот не сможет на них ответить. Разработка клик-ботов стоит недорого и не занимает много времени.

Happy Secret Santa Bot — алгоритмический бот. Он помогает организовать игру в «Тайного Санту». Еще примеры: Save YouTube (загружает видео из ютуба) и Radio bot (скачивает эфиры популярных радиостанций на телефон).

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

На базе ИИ работает японский бот Mitsuku. Он несколько раз выигрывал премию Лебнера за прохождения теста Тьюринга. Бот создан, скорее, для развлечения пользователей, с ним можно обсуждать любую тему — от игр до программирования. Но что-то полезное он вам вряд ли сообщит.

Существуют и гибридные боты, которые объединяют в себе алгоритмы и искусственный интеллект.

Их чаще всего используют в приложениях. 

Где создать чат-бот

Самый простой вариант — онлайн-конструктор.

BotKits — один из таких сервисов. На платформе можно создать обычных алгоритмических ботов на основе дерева сценариев с несколькими вариантами развития диалога. Можно подключить функцию, чтобы бот отправлял рассылку всем пользователям, которые ранее взаимодействовали с ним. Еще он умеет проводить опросы, а затем выгружать результаты в таблицу. Через него можно принимать заказы и платежи или, например, перевести пользователя на общение с оператором. Стоимость подписки начинается от $30 в месяц. 

Сервис Aimylogiс предлагает создать ботов на базе машинного обучения. На платформе есть уже готовые шаблоны. Например, не нужно тратить время на создание бота, который будет делать телефонные опросы о качестве работы кафе (как, например, сделала «Додо Пицца»). Aimylogic предоставляет четыре шаблона ИИ-ботов: чат-ботов, ботов для обзвона, умных IVR (боты-оперторы) и создание навыков для голосовых ассистентов.

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

Leadtex поможет создать бота для телеграма, WhatsApp, «ВКонтакте» и Viber. Конструктор ориентирован на создание бота для онлайн-продаж. Бот умеет автоматически формировать воронки продаж, анализировать рекламные каналы и объявления, принимать оплату и вести базу клиентов. По словам его авторов, функционал обновляют каждую неделю. Семь дней сервисом можно пользоваться бесплатно, затем — от $14 в месяц.

Платформа SendPulse ориентирована на создание ботов для маркетинга и продаж в мессенджерах и социальных сетях. В ней есть большая база шаблонов для email-рассылок и чат-ботов с автоответами и автоворонками продаж. Также можно создать web push и sms-оповещения. Создание, редактирование и пользование тремя ботами  — бесплатно, дополнительные функции стоят от $11 в месяц.

Стоимость зависит от количества пользователей, которые используют бот.

Chatbot создает диалоговые чат-боты. Сервис предлагает шаблоны для создания ботов по определенным сферам: маркетинг, продажи, обучение, поддержка клиентов. Боты умеют собирать данные о пользователях и обучаться персонализированному общению. Есть функция приема заказов, также бот может отправлять всю информацию о товаре: начиная с фото предмета и заканчивая описанием его характеристик. Протестировать бота можно в интерфейсе конструктора. Стоимость — от $42 в месяц.

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

Как создать бота в телеграм: инструкция

Для примера создадим чат-бот, которые будет рассказывать, что такое чат-боты и как их создать. Для этого используем платформу Leadtex с 7-дневной бесплатной версией. После регистрации в личном кабинете нужно нажать кнопку «Создать бота». 

Придумываем боту название. Оно должно легко запоминаться и ассоциироваться с функциями бота.

Далее нам предлагают выбрать тип и нишу бота. Для нашего выбираем «Школа», ниша — «Продажа обучающего контента» (на случай, если бот станет популярным и мы захотим его монетизировать).  

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

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

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

Добавляем номер токена в форму, и наш бот автоматически создается. Теперь у него есть адрес, но он еще ничего не умеет.

В чат-боте BotFather напишите команду /mybots и выбирите кнопку «Edit bot», затем «Edit Description». Туда нужно внести описание бота, которое будет видно в телеграме. Можно добавить боту и картинку. Для этого нужно нажать на кнопку «Edit Botpic» и выбрать картинку.

Возвращаемся в конструктор Leadtex. Разговор с ботом начинается с кнопки /start. Первый блок создается автоматически.

После этого в блоке «Цепочка сообщений» нужно написать сообщение-приветствие и краткое описание функций — это будет первое, что увидит пользователь бота. Туда же можно добавить гифку или картинку.

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

Если нажать на кнопку «Настройка клавиатуры» под «Меню», то можно выбрать тип расположения ответов. Мы хотим, чтобы ответы были не друг под другом, а стояли рядом. Переставляем их в нужное положение.

Сейчас нужно разделить сценарий бота на две ветки (в зависимости от темы, которую выбрал пользователь). В каждой добавляем варианты информации, которую может запросить пользователь. От каждой темы («Все о чат ботах» и «Как создать бота») проводим линии к соответствующему блоку.

 

В первой цепочке в варианте ответа «Кто такие эти боты?» вставляем ссылку, которую бот отправит пользователю. Если пользователю хватило информации, то он может нажать на «Спасибо», после которой бот вернется к цепочке «Что тебе интересно узнать о чат-ботах?» (для этого ставим стрелочку обратно к нужному блоку). Так пользователю не придется заново начинать диалог с ботом, чтобы вернуться к выбору тем.

Если информации пользователю не хватило, то бот отправит ссылку на ещё один сайт (для этого добавляем еще один блок, но уже с другой ссылкой — к нему ведем стрелку от предыдущего блока, от него — к блоку «Что тебе интересно узнать о чат-ботах?»).

Блоков со ссылками можно создавать столько, сколько посчитаете нужным.

Мы добавили еще несколько материалов по тому же принципу. Последнее сообщение цепочки вернет пользователя к блоку «Что тебе интересно узнать о чат-ботах?»

Добавляем блоки для всех вариантов ответа первой ветки сценария.

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

Для программистов мы создаем блок со ссылками на туториалы по созданию чат-ботов на разных языках: Python, Java, PHP, Ruby и C##. Для новичков — блок со ссылками на конструкторы ботов.

В последнем блоке (если пользователь несколько раз нажимал «Хочу еще») вместо ссылки ставим фразу «А у меня больше ничего нет». И делаем этот блок финальным — залинкуем его с блоком «Что тебе интересно узнать о чат-ботах?».

Можно тестировать бот от Bubble.

Тестировать чат-бот

Где научиться созданию чат-ботов в телеграм и не только

  • Aimylogic предлагает бесплатный гид по разработке чат-ботов с инфографикой, лекциями экспертов, правилами создания и продвижения бота. Подойдет новичкам.
  • В блогах компаний Konverbot и TextBack, которые занимаются созданием ботов по запросу.
  • На Bot Penguin есть аналитические тексты о сфере чат-ботов. Там же можно создать собственного бота с помощью онлайн-конструктора.  
  • Создатели платформы WotNot рассказывают в своем блоге о маркетинге чат-ботов, анализе качества их работы и дизайне интерфейса. 
  • На ютуб-канале сервиса Robochat, который используется для продаж и поддержки клиентов через мессенджеры, выходят ролики о работе с покупателями через чат-ботов. 
  • Канал Чат-боты LEADTEX рассказывает о создании чат-бота для бизнеса и не только. Ролики выходит каждую неделю. На канале часто проводят прямые трансляции по теме.
  • Серия роликов от ютуб-канала Python Engineer научит программировать ботов на Python.

«‎‎Главная ошибка собеса — подгонять ответы»‎. Рекрутеры рассказали о найме в IT

Откуда берутся IT-рекрутеры, с какими трудностями они сталкиваются в попытках закрыть позиции и какие ошибки сами совершают на интервью — полезно знать перед тем, как искать работу.

Как создать чат-бот. Boris Bot – sdelano.media

Пример использования чат-бота в образовательном процессе — с его помощью Ирина Лукина, учитель начальных классов малокомплектной школы, рассказала своим 3-классникам о геометрических фигурах. Виртуального собеседника — так еще называют чат-бота — педагог создавала в конструкторе Boris Bot.

Прежде чем создавать чат-бот, проведите подготовительную работу:

  • составьте текст для сообщений;
  • составьте список вопросов и ответов;
  • продумайте разные варианты развития беседы — ведь каждый пользователь будет отвечать по-своему;
  • подберите иллюстрации — конструктор позволяет добавлять в сообщения картинки и видео с YouTube.

Откройте конструктор Boris Bot. В правом верхнем углу нажмите кнопку «Войти», переключитесь на вкладку «Зарегистрироваться» — зарегистрируйтесь. Сервис переадресует вас в личный кабинет и сразу предложит выбрать шаблон (нажать «Применить») или создать чат-бот с нуля.

Откроется рабочая панель. Если используете готовый шаблон, то вам останется только заменить в блоках текст и иллюстрации (если они есть). Обязательно проверьте, чтобы логика диалога сохранялась.

Конструктор Boris Bot содержит 30 вариантов блоков. Нажмите на «+» под блоком, чтобы увидеть все варианты. Расскажем подробнее про некоторые.

  • Блок «Открытый текст» — здесь можно рассказать теорию, объяснить явление, задать вопрос, на который нужно получить развернутый ответ. Даже если в сообщении нет вопроса, попросите пользователя ответить (например, предложите написать «хорошо»).
  • Блок «Кнопки» (с одним вариантом ответа) — под сообщением чат-бота появляются кнопки, пользователю надо нажать на одну. Это помогает маршрутизировать пользователя. В том числе для этого предварительно надо продумать разные варианты развития беседы.
  • Блок «Кнопки» (с несколькими вариантами ответов) — позволяет выбрать несколько вариантов ответа. От каждого варианта ответа может идти своя цепочка беседы. Блок удобно использовать, если нужно понять интересы пользователей, что-то уточнить или помочь сделать множественный выбор.
  • Блок «Таймаут» — блок с информацией, который не требует ответа. Его удобно использовать, когда у вас много материала — разделите информацию на части и порционно отправляйте пользователям.
  • Блок «Оценка» — блок с фиксированными кнопками, которые помогают оценить, например, беседу с чат-ботом. В конструкторе советуют делать переходы с негативных вариантов ответа на открытый вопрос, чтобы узнать причины такой реакции.
  • Блок «Предсказуемый вопрос» — вы задаете вопрос, где нужен правильный ответ (например, сколько будет 2+2), и указываете варианты правильного — «предсказуемого» ответа (4, четыре, будет 4, «=4»). Пользователь не видит вариантов и должен ввести текст вручную. Далее ответ можно маршрутизировать. В образовательных проектах или квестах с помощью такого блока можно загадывать загадки и делать подсказки.
  • Блок «Карусель» — показывает набор картинок с заголовком и описанием, из которых можно что-то выбрать. Используйте карусель, когда нужно показать пользователям несколько вариантов.
На YouTube-канале конструктора Boris Bot есть 28-минутное видео с подробным обзором возможностей сервиса

Когда соберете чат-бот, проверьте его — нажмите «Тест» в правом верхнем углу. Всплывет окно со ссылкой на чат-бот.

У чат-бота можно менять «внешность» — нажмите «Настроить дизайн бота» под строкой со ссылкой на бот. Откроется окно с настройками. Впишите имя, добавьте фон, загрузите свой аватар, установите цвет бота и шрифт текста. Изменения сохраняются автоматически.

У нас получился такой чат-бот.

В бесплатной версии конструктора Boris Bot есть ограничения. Например, пообщаться с ним может только 100 уникальных пользователей в месяц.

Для каких задач использовать чат-бот?
  • Для ответов на простые или типичные вопросы.
  • Для получения новых знаний.
  • Для рассказа про мероприятия, выставки.
  • Для проверки знаний.
  • Для проведения просветительских квестов.
  • Для знакомства с аудиторией.
  • Для персональных рекомендаций и консультаций.

Python Chatbot Project — Научитесь создавать чат-бота с нуля

Ожидается, что рынок чат-ботов будет расти со среднегодовым темпом роста 23,5% и к концу 2026 года достигнет 10,5 млрд долларов США.

Согласно отчету Uberall, 80 % клиентов получили положительный опыт использования чат-бота.

По данным IBM, организации ежегодно тратят более 1,3 триллиона долларов на решение новых запросов клиентов, а чат-боты могут оказать большую помощь в сокращении расходов до 30%.

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

Содержание

  • Как создать чат-бота Python с нуля?
  • Как создать чат-бота на Python — концепции, которые нужно изучить, прежде чем писать простой код чат-бота на Python
    • Загрузите блокнот Python для создания чат-бота Python
    • Нейронная сеть
    • Мешок слов (BoW), модель
    • Лемматизация
    • Учебное пособие по чат-боту Python. Как создать чат-бота на Python 
  • шагов по созданию чат-бота на Python с нуля — вот рецепт
    • Шаг 1. Подключение к файлам и папкам Google Диска
    • Шаг 2: импорт соответствующих библиотек
    • Шаг 3. Чтение файла JSON
    • Шаг 4: определение функции и цели для модели НЛП
    • Шаг 5. Создание машинно-ориентированных данных
    • Шаг 6: построение модели нейронной сети
    • Шаг 7: Предварительная обработка пользовательского ввода
    • Шаг 8: вызов соответствующих функций и взаимодействие с ChatBot

Как создать чат-бота Python с нуля?

Пытались ли вы недавно спросить Google Assistant (GA), что случилось? Ну, я сделал, и вот что сказал GA.

Я: Эй, Google! Как дела?

ТЭ: Эй! Я искал способы оставаться в безопасности. Ношение маски в общественных местах, мытье рук и социальное дистанцирование замедляют распространение коронавируса ð·. Я надеюсь, что вы и ваши близкие в безопасности и здоровы.

Какой милый и добрый ответ от GA! Что ж, если вы не знаете, Google Assistant на самом деле является расширенной версией чат-бота, который в основном (согласно Оксфордскому словарю английского языка) представляет собой компьютерную программу, предназначенную для имитации разговора с людьми, особенно через Интернет. Это одно из самых популярных приложений обработки естественного языка (NLP) — захватывающей подобласти искусственного интеллекта, которая занимается взаимодействием между компьютерами и людьми с использованием естественного языка. В этом руководстве по чат-боту на Python мы будем использовать интересные библиотеки НЛП и узнаем, как создать чат-бота на Python с нуля.

Изображение предоставлено: freepik. com

Создайте свой первый чат-бот с помощью модели RASA NLU и Python

Загружаемый код решения | Пояснительные видео | Техническая поддержка

Начать проект

Как создать чат-бота на Python: концепции, которые следует изучить перед написанием кода простого чат-бота на Python

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

НО…

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

Итак, вот три вещи, которые вам нужно знать заранее, чтобы научиться создавать чат-бота на Python:

          1 . Нейронная сеть

        2. Модель «мешок слов»

        3. Лемматизация

Загрузите блокнот Python для создания чат-бота Python

Нейронная сеть

Это алгоритм глубокого обучения, который напоминает то, как нейроны в нашем мозгу обрабатывают информацию (отсюда и название). Он широко используется для реализации шаблона между входными объектами и соответствующими выходными данными в наборе данных. Вот базовая архитектура нейронной сети —

Изображение предоставлено: alexlenail.me/NN-SVG/

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

Кружки фиолетового цвета представляют собой входной вектор xi, где i =1, 2, ….., D, который является не чем иным, как одной из характеристик нашего набора данных. Кружки синего цвета — это нейроны скрытых слоев. Это слои, которые изучают математику, необходимую для связи нашего ввода с выводом. Наконец, у нас есть круги розового цвета, которые образуют выходной слой. Размер выходного слоя зависит от количества различных классов, которые у нас есть. Например, предположим, что у нас есть набор данных размером 5×4, где у нас есть 5 входных векторов, каждый из которых имеет некоторое значение для 4 функций: A, B, C и D. Предположим, что мы хотим классифицировать каждую строку как хорошую или плохую, и мы используем число 0 для представления хорошего и 1 для представления плохого. Тогда нейронная сеть должна иметь 4 нейрона на входном слое и 2 нейрона на выходе.

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

Изображение Кредит: Freepik.com

Новые проекты

Строительные трубопроводы. Project

Проект AWS для создания и развертывания модели LSTM с помощью Sagemaker

Просмотр проекта

Обучение созданию таблиц Delta Live в Azure Databricks

Просмотр проекта

Создание сквозной модели классификации AWS SageMaker

Просмотр проекта

Начало работы с Pyspark на AWS EMR View Athena Athena Project

Talend Real-Time Project для автоматизации процессов ETL

View Project

AWS Project для создания и развертывания модели LSTM с Sagemaker

View Project

Build CI/CD Pipeline для проектов машинного обучения с использованием Jenkins

Посмотреть проект

Создать чат-бота AI с нуля с использованием последовательной модели Keras

Посмотреть проект

Посмотреть все новые проекты

Алгоритм нейронной сети состоит из двух этапов:

  1. Прямой проход через нейронную сеть с прямой связью

  2. Обратное распространение ошибки для обучения нейронной сети

1. F или далее Прохождение через нейронную сеть с прямой связью

Этот шаг включает соединение входного слоя с выходным через несколько скрытых слоев. Нейроны первого слоя (l=1) получают взвешенную сумму элементов входного вектора (xáµ¢) вместе с членом смещения b, как показано на рис. 2. После этого каждый нейрон преобразует эту взвешенную сумму, полученную в вход a с использованием дифференцируемой нелинейной функции активации h(·) для получения выходного значения z.

Скрытые слои архитектуры нейронной сети.

Изображение предоставлено: alexlenail.me/NN-SVG/       

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

Этот процесс продолжается до тех пор, пока не будет оценен выход нейронов последнего слоя (l=L). Эти нейроны на выходном слое отвечают за идентификацию класса, к которому принадлежит входной вектор. Входной вектор помечен классом, соответствующий нейрон которого имеет наибольшее выходное значение.

Приблизьтесь к своей мечте стать специалистом по обработке и анализу данных с более чем 70 решенными сквозными проектами машинного обучения

Обратите внимание, что функции активации могут быть разными для каждого уровня. Две функции активации, которые мы будем использовать для нашего чат-бота, которые также наиболее часто используются, — это функция Rectified Linear Unit (ReLu) и функция Softmax. Первый будет использоваться для скрытых слоев, а второй — для выходного слоя. На выходе обычно используется функция softmax, поскольку она дает вероятностный вывод. Функция ReLU определяется как:

И функция softmax определяется как:

Теперь пришло время перейти ко второму шагу алгоритма.

2. Обратное распространение ошибки для обучения нейронной сети

Этот шаг является наиболее важным, поскольку исходная задача алгоритма нейронной сети состоит в том, чтобы найти правильный набор весов для всех слоев, которые приводят к правильному выходу и этот шаг посвящен поиску правильных весов и смещений. Рассмотрим входной вектор, который был передан в сеть, и скажем, мы знаем, что он принадлежит классу A. Предположим, что выходной слой дает наибольшее значение для класса B. Следовательно, в нашем прогнозе есть ошибка. Теперь, поскольку мы можем вычислять только ошибки на выходе, мы должны распространить эту ошибку в обратном направлении, чтобы узнать правильный набор весов и смещений.

Определим функцию ошибки для сети:

Здесь Eâ – ошибка для одного вектора шаблона: xâ и определяется как

k = 1,2, 3,…, NÊ; z — выходное значение нейрона káÊ° выходного слоя L, а r — желаемый ответ для нейрона káК° выходного слоя L.

Обратите внимание, что это не только функция ошибки (/ потери), которая может быть определена. Существует множество способов определить его, и вы можете прочитать обо всех здесь: keras.io/api/losses/. Кроме того, существует множество алгоритмов, которые затем используются для минимизации ошибок, и вы можете изучить их все в этой интересной статье здесь: arxiv.org/1609..04747.pdf В зависимости от проблемы, с которой приходится иметь дело, выбираются соответствующие функции потерь и оптимизаторы.


Исследовать категории в телекоммуникациях


Модель Bag-of-Words (BoW) 

Теперь вспомните из школьных уроков, что компьютер понимает только числа. Поэтому, если мы хотим применить алгоритм нейронной сети к тексту, важно сначала преобразовать его в числа. И один из способов добиться этого — использовать модель Bag-of-words (BoW). Это одна из наиболее распространенных моделей, используемых для представления текста с помощью чисел, чтобы к нему можно было применить алгоритмы машинного обучения.

Попробуем разобраться в этой модели на примере. Рассмотрим следующие 5 предложений:

«Привет! Я Ракеш».

«Здравствуйте! Киран с этой стороны.

«Привет! Меня зовут Крити».

«Эй! Я Лина».

«Всем привет! Сам Шришти».

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

привет, я, я, ракеш, привет, киран, это, сторона, мое, имя, есть, крити, эй, лина, все, я, сришти.

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

«Привет! Я Ракеш.»: 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0

«Привет! Киран с этой стороны.»: 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0

«Привет! Меня зовут Крити». 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 

«Эй! Я Лина». 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0

«Всем привет! Сам Шришти». 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1

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

Лемматизация

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

вечеринка 𡪠вечеринка

ест 𡪠ест

учеба 𡪠учеба

Респект! Вы сделали это так далеко. ð В следующем разделе руководства по чат-боту на Python вы найдете подробную информацию о том, как реализовать код чат-бота на Python. Затяните шнурки и приготовьтесь к рецепту!

Изображение предоставлено: freepik.com

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

Учебное пособие по чат-боту Python. Как создать чат-бота на Python
Компоненты, необходимые для создания чат-бота на Python

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

Шаги по созданию чат-бота на Python с нуля — вот рецепт 

Шаг 1. Подключение к файлам и папкам Google Диска

Первым шагом является создание папки с именем «ChatBot» на вашем диске Google. После этого загрузите файл «intents.json» в эту папку и напишите следующий код в блокноте Google Colab:

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

Шаг 2: Импорт соответствующих библиотек

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


Шаг 3: Чтение файла JSON

Пришло время загрузить наши данные в Python. Мы будем использовать для этого json.loads() и сохранять содержимое файла в переменной с именем «данные» (тип: dict). Вот его код:


Вот как выглядят данные, которые мы импортировали.


Итак, как видите, в наборе данных есть объект, называемый намерениями. Набор данных содержит около 16 экземпляров намерений, каждый из которых имеет собственный тег, контекст, шаблоны и ответы. Если вы тщательно просмотрите свой набор данных, вы поймете, что шаблоны похожи на интерактивные утверждения, которые мы ожидаем от наших пользователей, тогда как ответы — это ответы на эти утверждения. И тег — это краткое изложение запроса пользователя, состоящее из одного слова.

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

Шаг 4: Определение признака и цели для модели НЛП

Теперь мы извлечем слова из паттернов и соответствующие им теги. Это было достигнуто путем повторения каждого шаблона с использованием вложенного цикла for и его токенизации с помощью nltk.word_tokenize. Слова были сохранены в data_X, а соответствующий им тег был сохранен в data_Y .

Также были созданы еще два списка: слова и классы, содержащие все токены и соответствующие теги. Для слов списка знаки препинания не добавлялись с помощью простого условного оператора, а слова были преобразованы в их корневые слова с помощью WordNetLemmatizer() NLTK. Это важный шаг при написании чат-бота на Python, поскольку он сэкономит нам много времени, когда мы будем вводить эти слова в нашу модель глубокого обучения. Наконец, оба списка были отсортированы, и эти функции были использованы для удаления любых дубликатов.


Шаг 5: Сделать данные удобными для машин

На этом шаге мы преобразуем наш текст в числа, используя модель мешка слов (лук). Те, кто осознает это, должны были теперь понять значение перечисленных слов и классов. А если нет, не волнуйтесь, мы вас поддержим. ð

Два списка слов и классов действуют как словарь для шаблонов и тегов соответственно. Мы будем использовать их для создания массива чисел, размер которого равен длине словарного списка. Массив будет иметь значения 1, если слово присутствует в считываемом шаблоне/теге (из data_X), и 0, если оно отсутствует.
Таким образом, данные были преобразованы в числа и сохранены в двух массивах: train_X и train_Y, где первый представляет функции, а второй представляет целевые переменные.


Шаг 6: Построение модели нейронной сети

Далее мы создадим нейронную сеть, используя последовательную модель Кераса. Входными данными для этой сети будет массив train_X, созданный на предыдущем шаге. Затем они будут проходить через модель из 3 разных слоев, первый из которых имеет 128 нейронов, второй — 64 нейрона, а последний слой имеет такое же количество нейронов, как длина одного элемента train_Y (очевидно, верно?). Затем, чтобы получить правильные веса, мы выбрали оптимизатор Адама и определили нашу функцию ошибок, используя категориальную функцию кросс-энтропии. И метрика, которую мы выбрали, — это точность. Конечно, есть много других метрик, которые могут вас заинтересовать, и вы можете изучить их здесь: Keras. Мы обучим модель чат-бота Python примерно 150 раз, чтобы она достигла желаемой точности.

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


Вот и все. Мы почти закончили создание нашего чат-бота. Похлопайте себя по плечу за то, что вы зашли так далеко. ðð  

Изображение предоставлено: freepik.com

Итак, теперь, когда мы научили нашу машину тому, как связать шаблон в пользовательском вводе с соответствующим тегом, у нас все готово. чтобы проверить это. Но ждать. Вы же помните, что пользователь будет вводить данные в строковом формате, верно? Ладно, хорошо. Итак, это означает, что нам придется предварительно обрабатывать и эти данные, потому что наша машина получает только числа.

Самые просматриваемые проекты

Практический проект PySpark в реальном времени для начинающих

Просмотреть проект

Проект модели линейной регрессии в Python для начинающих, часть 1 Project

PySpark Big Data Project для изучения операций RDD

View Project

PySpark ETL Project — создание конвейера данных с использованием S3 и MySQL

Просмотреть проект

Просмотреть все самые просматриваемые проекты

Шаг 7: Предварительная обработка ввода пользователя

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


Давайте быстро обсудим эти функции более подробно:

  1. Clean_text(текст): эта функция получает текст (строку) в качестве входных данных, а затем размечает его с помощью nltk.word_tokenize(). Затем каждый токен преобразуется в корневую форму с помощью лемматизатора. Вывод в основном представляет собой список слов в их корневой форме.

  2. Bag_of_words(text, vocab): эта функция вызывает указанную выше функцию, преобразует текст в массив с использованием модели набора слов с использованием входного словаря, а затем возвращает тот же массив.

  3. Pred_class(текст, словарный запас, метки): эта функция принимает текст, словарь и метки в качестве входных данных и возвращает список, содержащий тег, соответствующий наибольшей вероятности.

  4. Get_response(intents_list,intents_json): эта функция принимает тег, возвращенный предыдущей функцией, и использует его для случайного выбора ответа, соответствующего тому же тегу в файле намерения.json. И, если намерения_списка пусты, то есть когда вероятность не пересекает порог, мы будем передавать строку «Извините! Я не понимаю», как ответил ChatBot.

Наконец, мы подошли к последнему шагу. Достаточно взволнован?

Шаг 8: Вызов соответствующих функций и взаимодействие с ChatBot

Теперь нам просто нужно получить ввод от пользователя и вызвать ранее определенные функции. Да это оно.


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

Веселись! Кстати, вот как я это сделал:

 

Создание чат-бота с использованием обработки естественного языка в Python | Программа инженерного образования (EngEd)

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

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

Предварительные условия

Чтобы прочитать эту статью, читатель должен иметь:

  • Базовые знания языка программирования Python.
  • Установлена ​​последняя версия Python.
  • Установлена ​​
  • IDE, желательно VS Code.

Содержание

  • Поля НЛП
  • Типы ботов
  • Создание чат-бота НЛП
  • Преимущества ботов
  • Заключение
  • Артикул

Области NLP

Ниже приведены основные области NLP:

  1. Генерация естественного языка (NLG) : NLG — это специальность в области искусственного интеллекта. Это программная технология, которая автоматически преобразует данные в простой английский язык.
  2. Понимание естественного языка (NLU) : это ветвь обработки естественного языка (NLP), которая помогает компьютерам понимать и интерпретировать человеческий язык, разбивая речь на составные части. Однако NLU идет дальше, чем распознавание речи, чтобы понять, что пользователь пытается сообщить своими словами.
  3. Взаимодействие на естественном языке (NLI) : Чтобы взаимодействовать с любым подключенным устройством или службой по-человечески, NLI объединяет разнообразный набор принципов естественного языка.

Типы ботов

  • Скрейпер-боты: Предназначены для чтения и сохранения данных из Интернета.
  • Спам-боты: Предназначены для сбора адресов электронной почты из списков рассылки спама.
  • Боты-пауки: Выполняет поиск в Интернете и загружает страницы, прежде чем индексировать материал на каждой встреченной странице.
  • Транснациональные боты: Предназначены для использования в транзакциях.
  • Бот для социальных сетей: Автоматически отвечает на вопросы в социальных сетях.

Создание чат-бота NLP

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

Шаг первый: Импорт библиотек

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

Необходимые библиотеки включают:

  • JSON: Можно использовать для работы с данными JSON.
  • Строка: Предоставляет доступ к нескольким потенциально ценным константам.
  • Random: для различных дистрибутивов этот модуль реализует генераторы псевдослучайных чисел.
  • WordNetLemmatizer: может лемматизировать.
  • Tensorflow: этим символом представлен многомерный массив элементов.
  • Sequential: Sequential группирует линейный набор слоев в тф.керас.Модель .

В приведенном ниже коде показано, как мы импортируем библиотеки:

 import json
строка импорта
импортировать случайный
импортировать нлтк
импортировать numpy как num
from nltk.stem import WordNetLemmatizer # Имеет возможность лемматизации.
import tensorflow as tensorF # Многомерный массив элементов представлен этим символом.
from tensorflow.keras import Sequential # Sequential группирует линейный набор слоев в tf.keras.Model
из tensorflow.keras.layers импортировать Dense, Dropout
nltk.download("punkt")# необходимый пакет для токенизации
nltk.download("wordnet")# база данных слов
 
Шаг второй: создание файла JSON

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

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

 наши данные = {"наши намерения": [
             {"тег": "возраст",
              "patterns": ["сколько тебе лет?"],
              "responses": ["Мне 2 года, и мой день рождения был вчера"]
             },
              {"тег": "приветствие",
              "patterns": ["Привет", "Привет", "Эй"],
              "ответы": ["Привет", "Привет", "Привет :)"],
             },
              {"тег": "до свидания",
              "шаблоны": ["пока", "позже"],
              "ответы": ["Пока", "береги себя"]
             },
             {"название тэга",
              "patterns": ["как тебя зовут?", "кто ты?"],
              "responses": ["У меня пока нет имени", "Вы можете дать мне одно, и я буду признателен"]
             }
]}
 
Шаг третий: обработка данных

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

 lm = WordNetLemmatizer() # для получения слов
# списки
наши классы = []
новые слова = []
документX = []
документ Y = []
# Каждое намерение разбивается на слова, а шаблоны и связанные с ними теги добавляются в соответствующие списки.
для намерения в данных["намерения"]:
    для шаблона в намерении["шаблоны"]:
        ournewTkns = nltk.word_tokenize(pattern)# токенизировать шаблоны
        newWords.extend(ournewTkns)# расширяет токены
        documentX.append(шаблон)
        documentY.append (намерение ["тег"])
    если намерение ["тег"] не в наших классах: # добавить несуществующие теги в соответствующие классы
        ourClasses.append (намерение ["тег"])
newWords = [lm.lemmatize(word.lower()) для слова в newWords, если слово не в string.punctuation] # переводим слова в нижний регистр, если они не в знаках препинания
newWords = sorted(set(newWords))# сортировка слов
ourClasses = sorted(set(ourClasses))# классы сортировки
 
Шаг четвертый: Разработка модели нейронной сети

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

Приведенный ниже код используется для преобразования наших данных в числовые значения с использованием системы кодирования набора слов (BoW):

 trainingData = [] # массив тренировочного списка
outEmpty = [0] * длина (наши классы)
# модель лука
для idx, doc в перечислении (documentX):
    мешок слов = []
    текст = lm.lemmatize(doc.lower())
    для слова в newWords:
        bagOfwords.append(1) если слово в тексте else bagOfwords.append(0)
    outputRow = список (outEmpty)
    outputRow[ourClasses.index(documentY[idx])] = 1
    trainingData.append([bagOfwords, outputRow])
random.shuffle (обучающие данные)
trainingData = num.array(trainingData, dtype=object)# преобразование наших данных в массив после v перетасовки
x = num.array(list(trainingData[:, 0]))# первый этап обучения
y = num.array(list(trainingData[:, 1]))# второй этап обучения
 

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

 iShape = (len(x[0]),)
oShape = длина (у [0])
# определение параметра
нашаНоваяМодель = Последовательная()
# В случае простого стека слоев подходит последовательная модель
# Плотная функция добавляет выходной слой
ourNewModel.add(Dense(128, input_shape=iShape, активация="relu"))
# Функция активации в нейронной сети отвечает за преобразование суммированного взвешенного входа узла в активацию узла или выход для рассматриваемого входа.
нашаНоваяМодель.добавить(Выпадение(0.5))
# Dropout используется для улучшения визуального восприятия входных нейронов
ourNewModel.add (Dense (64, активация = "relu"))
нашаНоваяМодель.добавить(Выпадение(0.3))
ourNewModel.add(Dense(oShape, активация = "softmax"))
# ниже приведен вызываемый объект, который возвращает значение для использования без аргументов
md = tensorF.keras.optimizers.Adam (learning_rate = 0,01, распад = 1e-6)
# Нижняя строка улучшает численную стабильность и подталкивает вычисление распределения вероятностей к категориальной функции кроссэнтропийных потерь. 
ourNewModel.compile (потеря = 'categorical_crossentropy',
              оптимизатор=мд,
              метрики=["точность"])
# Вывести сводку по модели
печать (нашаНоваяМодель.резюме())
# Во время обучения вашей сети Nural у вас есть возможность сделать вывод подробным или простым.
ourNewModel.fit(x, y, epochs=200, verbose=1)
# Под эпохами мы подразумеваем количество повторений тренировочного набора.
 

Шаг пятый: создание полезных функций

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

 def наш текст (текст):
  newtkns = nltk.word_tokenize(текст)
  newtkns = [lm.lemmatize(word) вместо слова в newtkns]
  вернуть тритоны
def wordBag (текст, словарный запас):
  newtkns = наш текст (текст)
  bagOwords = [0] * len(словарный запас)
  для w в newtkns:
    для idx, слово в перечислении (словарь):
      если слово == w:
        сумкаOwords[idx] = 1
  вернуть num. array (bagOwords)
def Pclass (текст, словарный запас, метки):
  bagOwords = wordBag(текст, словарный запас)
  ourResult = ourNewModel.predict(num.array([bagOwords]))[0]
  новый порог = 0,2
  yp = [[idx, res] для idx, res в перечислении (ourResult), если res > newThresh]
  yp.sort (ключ = лямбда x: x [1], реверс = True)
  новыйСписок = []
  для r в yp:
    newList.append (метки [r [0]])
  вернуть новый список
def getRes (первый список, fJson):
  тег = первый список[0]
  listOfIntents = fJson["намерения"]
  для я в listOfIntents:
    если я["тег"] == тег:
      нашРезультат = random.choice(i["ответы"])
      сломать
  вернуть наш результат
 

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

, в то время как True:
    новое сообщение = ввод ("")
    намерения = Pclass (новое сообщение, новые слова, наши классы)
    наш результат = getRes (намерения, наши данные)
    распечатать (нашрезультат)
 

Преимущества ботов

  1. Боты позволяют общаться с клиентами по-новому. Интересы клиентов могут быть затронуты в нужное время с помощью чат-ботов.
  2. С помощью чат-ботов ваша организация может лучше понять проблемы потребителей и принять меры для их решения.
  3. Один оператор может одновременно обслуживать одного клиента. С другой стороны, чат-бот может ответить на тысячи запросов.
  4. Чат-боты уникальны тем, что они работают внутри заранее определенных рамок и полагаются на единый источник правды в каталоге команд, чтобы отвечать на задаваемые им вопросы, что снижает риск путаницы и непоследовательности в ответах.

Завершение

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

Код для этого проекта доступен здесь.

Удачного кодирования!

Дополнительная литература

  • Преимущества чат-ботов.

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

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

Закрыть
Menu