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

В этом руководстве мы рассмотрим создание чат-бота на Python с помощью библиотеки Chatterbot.

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

Можете ли вы вспомнить, когда в последний раз вам доставили не тот товар и вы общались со службой поддержки клиентов через чат? Существует высокая вероятность того, что с вами общался не человек, а бот. Так что же такое боты? Как их создавать? Какой исходный код для этого требуется? Именно эти вопросы мы и разберем сегодня!

При создании современных ботов используется искусственный интеллект, опирающийся на машинное обучение и обработку естественного языка (NLP – Natural Language Processing). ИИ обеспечивает максимально гладкое взаимодействие между людьми и компьютерами.

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

Упрощенно можно сказать, что чат-боты — это эволюция систем вопросов и ответов, использующих обработку естественного языка. Согласно некоторым источникам, к 2024 году размер мирового рынка общения вырастет до 15,7 млрд долларов. При этом годовой темп роста составит 30,2%.

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

Что такое чат-бот?

Термин «чаттербот» появился в 1994 году, когда Майкл Молдин создал своего первого чат-бота по имени Джулия.

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

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

Чат-боты помогают любому бизнесу/организации в достижении следующих целей:

  • Повышение эффективности работы
  • Автоматизация выполнения запросов клиентов
  • Обработка базовых запросов, которая освобождает сотрудников для работы над сложными и более ценными запросами
  • Поддержка многоязычности
  • Экономия времени и усилий за счет автоматизированной поддержки клиентов
  • Повышение скорости отклика, а также вовлеченности клиентов
  • Персонализация общения

Как работает чат-бот?

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

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

  • Чат-бот на основе правил. Это базовый чат-бот. Пользователь взаимодействует с ботом, используя предопределенные параметры. Чтобы получить ответ от бота, пользователю необходимо выбрать нужный параметр. Такие боты получают запрос пользователя, анализируют его, а затем предлагают результаты в виде кнопок. Обычно эти боты используются для замены разделов FAQ. Но если речь идет о сложных запросах, это не лучшее решение.
  • Независимые чат-боты с ключевыми словами. Это боты, использующие машинное обучение. В отличие от чат-ботов на основе правил, они анализируют то, что хочет пользователь, и реагируют соответствующим образом. Эти боты используют настраиваемые ключевые слова и машинное обучение, чтобы определить, как эффективнее и результативнее реагировать на запросы пользователей.
  • NLP (или контекстные) чат-боты. На данный момент они самые продвинутые. Эти чат-боты представляют собой комбинацию лучших чат-ботов на основе правил и ключевых слов. Они используют обработку естественного языка, чтобы понять контекст запросов и намерения пользователей и действовать соответственно. Такие чат-боты могут легко обрабатывать несколько запросов от одного и того же пользователя.
[machinelearning_ad_block]

Сравнение платформ для создания чат-ботов

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

Azure Bot Service предлагает создать чат-бота с нуля, т. е. вы можете создавать, подключать, тестировать и развертывать. Это позволяет разработчикам использовать SDK и инструменты с открытым исходным кодом. Кроме того, Azure позволяет разработчикам создавать продвинутых ботов для обработки сложных запросов.

Botsify. Уникальность этого инструмента в том, что он позволяет пользователям без технического бэкграунда создавать чат-ботов с интуитивно понятным интерфейсом. Боты представлены здесь в виде историй, т. е. вы можете создать несколько историй или несколько чат-ботов и развернуть их в соответствии с имеющимися требованиями. Кроме того, есть ещё одна замечательная функция — возможность сохранять ответы пользователей в форму, которую можно легко экспортировать в CSV.

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

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

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

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

А теперь давайте разберем создание нашего собственного чат-бота на Python с использованием библиотеки chatterbot.

Chatterbot

Как следует из названия, chatterbot — это библиотека Python, специально разработанная для создания чат-ботов. Этот алгоритм использует набор инструментов машинного обучения для создания различных ответов пользователям в соответствии с их запросами.

Chatterbot значительно упрощает разработку чат-ботов. Всё начинается с создания необученного бота, у которого нет предыдущего опыта или знаний о том, как общаться. Затем библиотека сохраняет запросы, сделанные пользователями, а также отправленные им ответы. По мере увеличения «базы знаний» точность ответов чат-бота растет.

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

От редакции Pythonist. О создании чат-бота при помощи библиотеки TensorFlow можно почитать в цикле статей «Чат-бот на Python (Deep Learning + TensorFlow)».

Создание чат-бота с помощью Chatterbot

Итак, начнем с установки библиотеки chatterbot. Для создания чат-бота также необходимо установить chatterbot_corpus. Он содержит корпус данных, включенных в модуль чат-ботов. Каждый корпус представляет собой не что иное, как прототип различных входных операторов и их ответов. Эти корпуса используются ботами для самообучения. Рекомендуемый способ установки chatterbot и chatterbot_corpus — использование pip.

Команды установки для терминала:

pip install chatterbot
pip install chatterbot_corpus

Команды установки Jupyter Notebook:

!pip install chatterbot
!pip install chatterbot_corpus

Давайте сначала импортируем класс Chatbot из модуля chatterbot.

from chatterbot import ChatBot

Создание экземпляра чат-бота

Теперь пришло время самой интересной части, а именно присвоения имени вашему чат-боту путем создания объекта Chatbot. Вы можете выбрать любое имя.

# Create object of ChatBot class
bot = ChatBot('Buddy')
[nltk_data] Downloading package averaged_perceptron_tagger to
[nltk_data]     /root/nltk_data...
[nltk_data]   Unzipping taggers/averaged_perceptron_tagger.zip.
[nltk_data] Downloading package stopwords to /root/nltk_data...
[nltk_data]   Unzipping corpora/stopwords.zip.
[nltk_data] Downloading package wordnet to /root/nltk_data...
[nltk_data]   Unzipping corpora/wordnet.zip.

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

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

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

Здесь мы используем адаптер хранилища SQL. Он позволяет чат-боту подключаться к базам данных в SQL. Используя параметр базы данных, мы создадим новую базу данных SQLite.

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

# Create object of ChatBot class with Storage Adapter
bot = ChatBot(
    'Buddy',
    storage_adapter='chatterbot.storage.SQLStorageAdapter',
    database_uri='sqlite:///database.sqlite3'
)

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

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

Здесь мы использовали два логических адаптера: BestMatch и TimeLogicAdapter.

# Create object of ChatBot class with Logic Adapter
bot = ChatBot(
    'Buddy',  
    logic_adapters=[
        'chatterbot.logic.BestMatch',
        'chatterbot.logic.TimeLogicAdapter'],
)

Обучение чат-бота

Теперь финальный шаг в создании чат-бота — его обучение с использованием модулей, доступных в Chatterbot.

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

Для начала давайте импортируем ListTrainer, создадим его объект, передав объект Chatbot. И вызовем метод train(), передав список предложений.

# Inport ListTrainer
from chatterbot.trainers import ListTrainer

trainer = ListTrainer(bot)

trainer.train([
'Hi',
'Hello',
'I need your assistance regarding my order',
'Please, Provide me with your order id',
'I have a complaint.',
'Please elaborate, your concern',
'How long it will take to receive an order ?',
'An order takes 3-5 Business days to get delivered.',
'Okay Thanks',
'No Problem! Have a Good Day!'
])
List Trainer: [####################] 100%

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

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

# Get a response to the input text 'I would like to book a flight.'
response = bot.get_response('I have a complaint.')

print("Bot Response:", response)
Bot Response: Please elaborate, your concern

Мы создадим цикл while для запуска нашего чат-бота. При переборе предложений в цикле мы получаем соответствующие ответы, так как мы уже ввели данные в нашу базу. Если мы получаем от пользователя Bye или bye (прощание), мы можем положить конец циклу и остановить программу.

name=input("Enter Your Name: ")
print("Welcome to the Bot Service! Let me know how can I help you?")
while True:
    request=input(name+':')
    if request=='Bye' or request =='bye':
        print('Bot: Bye')
        break
    else:
        response=bot.get_response(request)
        print('Bot:',response)
Enter Your Name: Avinash
Welcome to the Bot Service! Let me know how can I help you?
Avinash:I need your assistance regarding my order
Bot: Please, Provide me with your order id
Avinash:12345
Bot: No Problem! Have a Good Day!
Avinash:Bye
Bot: Bye

Заключение

Поздравляем, вы добрались до конца данного урока!

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

Надеемся, данная статья была вам полезна! Успехов в написании кода!

Перевод статьи «Building a Chatbot using Chatterbot in Python».