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

Чат-боты становятся все более популярными для автоматизации взаимодействия с клиентами, предоставления помощи и улучшения взаимодействия с пользователем. В этом пошаговом руководстве вы узнаете, как создать работающий чат-бот с помощью ChatterBot, популярной библиотеки Python. К концу этого руководства у вас будет базовая структура чат-бота, которую можно дополнительно настроить в соответствии с вашими конкретными потребностями.
Библиотека болтунов
ChatterBot — это библиотека Python, предназначенная для облегчения создания чат-ботов и диалоговых агентов. Он предоставляет простую и гибкую основу для создания приложений на основе чата с использованием методов обработки естественного языка (NLP). Библиотека позволяет разработчикам создавать чат-ботов, которые могут участвовать в разговорах, понимать вводимые пользователем данные и генерировать соответствующие ответы.
Преимущества ЧаттерБот
Преимущества использования ChatterBot следующие:
- Обучающие возможности: ChatterBot позволяет разработчикам обучать чат-ботов, используя большие наборы данных уже существующих разговоров. Он поставляется со встроенным учебным модулем, который поддерживает обучение как на общих, так и на конкретных наборах данных, позволяя чат-ботам учиться на широком спектре диалоговых моделей.
- Независимость от языка. Библиотека ChatterBot поддерживает несколько языков, что позволяет разработчикам создавать чат-ботов, которые могут общаться на разных языках. Он включает в себя предварительно обученные языковые модели и наборы данных для нескольких языков, что делает его удобным для создания многоязычных чат-ботов.
- Разговорный интеллект. ChatterBot использует алгоритмы машинного обучения и методы обработки естественного языка для анализа вводимых пользователем данных, выявления закономерностей и создания соответствующих ответов. Он использует комбинацию сопоставления на основе правил и статистических языковых моделей для имитации человеческих разговоров.
- Модульная архитектура. Библиотека имеет модульную архитектуру, что упрощает изменение функций чат-бота. Разработчики могут интегрировать дополнительные языковые модели, препроцессоры и внешние библиотеки, чтобы расширить возможности чат-бота и адаптировать его к конкретным случаям использования.
- Улучшение производительности: ChatterBot поддерживает поэтапное обучение, позволяя чат-ботам учиться и совершенствоваться с течением времени. Разработчики могут динамически обучать чат-ботов новым данным во время выполнения, что позволяет им адаптироваться и реагировать на меняющиеся потребности пользователей.
- Положения об интеграции: ChatterBot можно интегрировать с различными платформами и средами, включая веб-приложения, платформы обмена сообщениями и голосовые помощники. Эта гибкость позволяет разработчикам развертывать чат-ботов по разным каналам и взаимодействовать с пользователями с помощью предпочитаемых ими средств.
Короче говоря, ChatterBot — широко используемая библиотека Python благодаря своей гибкости, возможностям и простоте использования.
Как работает Чаттербот
Прежде чем мы начнем работать с ChatterBot для разработки чат-бота, мы посмотрим, как работает эта библиотека Python —
- Экземпляр ChatterBot создается без предварительных знаний о коммуникации.
- Когда пользователь вводит какие-либо данные, ChatterBot сохраняет запись, а также ответ на нее.
- ChatterBot продолжает собирать информацию из предоставленных входных данных и, таким образом, повышает точность своих ответов.
- Ближайший соответствующий ответ на предоставленное входное утверждение идентифицируется на основе того, как часто эти ответы используются в разговорах с людьми.
- Поскольку ChatterBot не зависит от языка, его можно обучить разговаривать на любом языке, выполнив тот же процесс.
Теперь, когда у нас есть общее представление о том, как работает ChatterBot, мы приступим к изучению того, как мы можем создать настраиваемого чат-бота всего за несколько простых шагов. Чтобы лучше понять функциональность ChatterBot, мы сначала определим сценарий нашего проекта. Затем мы перейдем к остальной части кода.
Сценарий проекта
Вы независимый разработчик Python. Вас наняла известная ЛОР-клиника «Псевдоним ЛОР» для создания чат-бота для их недавно опубликованного веб-сайта. Они не требуют ничего экстравагантного. Все, что они хотят сделать, это автоматизировать следующие задачи:
- Запросите имя и идентификатор электронной почты пользователя, а затем используйте эту информацию для приветствия и обработки запросов.
- Разрешить пользователю записаться на прием к ЛОРу на тот же день. Пользователь должен иметь возможность выбирать между утренним (с 8:00 до 12:00), дневным (с 12:00 до 16:00) и вечерним (с 16:00 до 20:00) временными интервалами.
- Разрешить пользователю отменить встречу.
- Разрешить пользователю менять назначение с одного слота на другой.
- Сообщите пользователю номер телефона и адрес клиники.
- Сообщите пользователю о доступных врачах и позвольте ему выбрать врача, а также время приема.
Имейте в виду, что на самом деле это также потребует некоторого внутреннего программирования, где код берет информацию пользователя, обращается к базе данных и вносит необходимые изменения. Однако мы не будем вдаваться в эти подробности. Все, что мы сейчас сделаем, это создадим чат-бота.
Создание чат-бота
Теперь мы перейдем к процессу создания нашего чат-бота.
Установки
Мы начнем с установки библиотеки ChatterBot. Это легко сделать с помощью команды «pip».
pip install chatterbot
Импортируйте необходимые пакеты
Теперь нам нужно импортировать необходимые пакеты для нашей программы.
from chatterbot import ChatBot from chatterbot.trainers import ListTrainer
Инициализируйте чат-бот
Мы инициализируем чат-бота, создав его экземпляр и дав ему имя. Здесь мы называем его «MedBot», поскольку наша цель — заставить этого чат-бота работать на веб-сайте ЛОР-клиники.
В вашей рабочей папке будет создан файл базы данных с именем db.sqlite3, в котором будут храниться все данные беседы.
bot = ChatBot('MedBot')
Очистите данные и отобразите сообщение об ошибке по умолчанию
Мы можем очистить входные данные, чтобы сделать наш чат-бот еще более точным. Здесь мы удалим символы юникода, экранированные символы html и очистим пробелы.
Мы также можем вывести сообщение об ошибке по умолчанию, если чат-бот не может понять входные данные.
bot = ChatBot('MedBot', read_only = True,
preprocessors=['chatterbot.preprocessors.convert_to_ascii',
'chatterbot.preprocessors.unescape_html',
'chatterbot.preprocessors.clean_whitespace'],
logic_adapters = [
{
'import_path': 'chatterbot.logic.BestMatch',
'default_response': 'Sorry, I am unable to process your request. Please try again, or contact us for help.',
'maximum_similarity_threshold': 0.90
}
],)
Обучите чат-бота
Мы можем обучить нашего чат-бота с помощью «ListTrainer()» чат-бота. Это позволяет нам предоставлять данные в форме разговора (утверждение + ответ), и чат-бот будет обучаться на этих данных, чтобы выяснить, как правильно реагировать на ввод пользователя.
trainer = ListTrainer(bot)
# Greetings
trainer.train([
"Hi",
"Hello, how may I help you?",
])
# Services
trainer.train([
"I would like to book an appointment with the ENT today",
"Sure, please choose a slot between Morning, Afternoon, or Evening: ",
"Afternoon",
"Your appointment is confirmed. You can come between 12:00 and 16:00.",
"Morning",
"Your appointment is confirmed. You can come between 8:00 and 12:00.",
"Evening",
"Your appointment is confirmed. You can come between 16:00 and 20:00.",
])
trainer.train([
"I want to cancel my appointment.",
"Okay, Your appointment has been cancelled.",
])
trainer.train([
"I would like to change my appointment slot.",
"Sure, what slot would you like? You can choose between Morning, afternoon, and Night.",
"Afternoon",
"Your appointment is confirmed. Your slot is now between 12:00 and 16:00.",
"Morning",
"Your appointment is confirmed. Your slot is now between 8:00 and 12:00.",
"Evening",
"Your appointment is confirmed. Your slot is now between 16:00 and 20:00.",
])
trainer.train([
"What is your phone number? How do I reach you? How do I contact you? How do I call you?",
"Our number is 01**23**45",
"What is your address? Where are you located?",
"You can find us at No. 45, 8th Cross, Oakwood Street",
])
trainer.train([
"Which Doctor is available?",
"We have Dr. Esther, Dr. Judith, Dr. Sarah, Dr. Matthew, and Dr. Rob",
"I want an appointment with Dr. Esther or Dr. Judith or Dr. Sarah or Dr. Matthew or Dr. Rob",
"Sure, please select your slot",
"Afternoon",
"Your appointment is confirmed. You can come between 12:00 and 16:00.",
"Morning",
"Your appointment is confirmed. You can come between 8:00 and 12:00.",
"Evening",
"Your appointment is confirmed. You can come between 16:00 and 20:00.",
])
# Conclusion
trainer.train([
"Thank you!",
"You're most welcome!",
"Thanks!",
"Of course!",
])
Протестируйте чат-бота
Мы можем проверить точность ответов чат-бота, как показано ниже:
# Enter any statement of your choice within the brackets to get its response.
response = bot.get_response('Which doctor is available?')
print("Bot Response:", response)
Запустите чат-бот
Сначала мы спросим у пользователя его имя и адрес электронной почты и сохраним их как переменные. Затем мы напечатаем приветственное сообщение для пользователя. Для пользовательского ввода мы создадим цикл while, который постоянно запрашивает пользовательский ввод. Этот процесс остановится, когда пользователь введет «Пока».
name=input("Please enter your Name: ")
email = input("Please enter your Email ID: ")
print("Welcome to the ChatBot Service for Pseudonymous ENT! How can I help you? (Enter 'Bye' to exit)")
while True:
request=input(name+':')
if request=='Bye' or request =='bye':
print('ChatBot: It was great talking to you! Bye!')
break
else:
response=bot.get_response(request)
print('ChatBot:',response)
Пример вывода
Вот пример того, как выглядел мой вывод, когда я тестировал своего чат-бота:
Please enter your Name: Nik Please enter your Email ID: [email protected] Welcome to the ChatBot Service for Pseudonymous ENT! How can I help you? (Enter 'Bye' to exit) Nik:I want to book an appointment ChatBot: Sure, please choose a slot between Morning, Afternoon, or Evening: Nik:Evening ChatBot: Your appointment is confirmed. You can come between 16:00 and 19:00. Nik:I want to change my appointment ChatBot: Okay, Your appointment has been cancelled. Nik:I want to change my appoitnment slot ChatBot: Okay, Your appointment has been cancelled. Nik:I would like to change my appointment ChatBot: Sure, what slot would you like? You can choose between Morning, afternoon, and Night. Nik:Morning ChatBot: Your appointment is confirmed. You can come between 8:00 and 12:00. Nik:Which doctor is available? ChatBot: We have Dr. Esther, Dr. Judith, Dr. Sarah, Dr. Matthew, and Dr. Rob Nik:Where are you located? ChatBot: You can find us at No. 45, 8th Cross, Oakwood Street Nik:Ukulele ChatBot: Hi Nik:Thanks! ChatBot: Of course! Nik:Bye ChatBot: It was great talking to you! Bye!
В показанном выше выводе мы определенно можем увидеть пару ошибок:
- Когда я попросил изменить встречу, чат-бот вместо этого отменил мою встречу. Это могло быть связано с неправильным соотнесением слов из обучающих данных и входных данных. Данные обучения используют «Я хочу» для отмены встречи, и, следовательно, программа связывает «Я хочу» с ответом на отмену встречи. В следующей строке, когда я использовал слова «я хотел бы», программа поняла, что я на самом деле хотел сказать.
- Чат-бот не печатает сообщение об ошибке по умолчанию, когда я набираю случайное слово «Укулеле». Вместо этого он печатает «Привет».
Как видите, предстоит еще многое сделать, чтобы сделать этого чат-бота еще лучше. Мы можем добавить больше обучающих данных или собрать фактические данные разговоров, которые можно использовать для обучения чат-бота. Попробуйте добавить еще несколько чистых тренировочных данных и посмотрите, насколько точным вы сможете их сделать.
Всего наилучшего!
Обратите внимание. Вы можете найти полный файл кода, включая некоторые советы по устранению возможных ошибок, с которыми вы можете столкнуться, на GitHub: https://github.com/nikitasilaparasetty/Chatbot- Tutorials/blob/main/How%20to%20Build%20a%20Chatbot%20Используя%20the%20ChatterBot%20Python%20Library.ipynb