在 Python 中使用 Chatterbot 构建聊天机器人

在本教程中,你将学习如何使用 Python 中的 chatterbot 构建聊天机器人。
Python如何制作聊天机器人?你是否厌倦了排长队等待你的电话接通客户服务主管?阅读常见问题解答会让你感到昏昏欲睡吗?然后你就在正确的页面上。你还记得上次通过聊天与客户服务代理沟通时收到的错误商品是什么时候吗?你很可能是通过机器人而不是客户服务代表与你联系的。那么到底什么是机器人?我们如何建立一个?它需要什么代码源?这些是将在这篇博文中回答的一些问题!
如何使用Chatterbot创建聊天机器人?人工智能将机器学习和自然语言处理 (NLP) 用于构建机器人或聊天机器人,专门用于解决人与计算机之间的流畅交互。聊天机器人无处不在,无论是银行网站、披萨店还是电子商务购物商店,你都会在左侧、右侧和中心找到聊天机器人。聊天机器人针对与其构建的域相关的一系列预定义问题提供实时客户服务帮助。它适应自然的人类语言并以类似人类的方式与人类交谈。
为了简化聊天机器人的定义,我们可以说聊天机器人是采用自然语言处理的问答系统的演变。根据消息来源,到 2024 年,全球对话市场的规模将增长到 157 亿美元,年增长率为 30.2%。例如,在冠状病毒大流行期间,我们目睹了在 WhatsApp 上流传的数以千计的恶作剧,例如什么可用于治疗 COVID 或什么可有助于提高免疫力,或者该病毒是否是在实验室中开发的。为了终结此类恶作剧,Facebook 推出了一款聊天机器人,可用作事实核查员。
在本教程中,我们将详细学习聊天机器人的构建、Python Chatterbot聊天机器人示例,包括:

  • 介绍
  • 什么是聊天机器人?
  • 聊天机器人如何工作?
  • 聊天机器人平台比较
  • 聊天机器人库
  • 使用 Chatterbot 构建聊天机器人
  • 聊天机器人测试
  • 结论
什么是聊天机器人?“聊天机器人”一词出现于 1994 年,当时 Michael Mauldin 创建了他的第一个名为“Julia”的聊天机器人。根据牛津词典,聊天机器人被定义为“一种旨在模拟与人类用户对话的计算机程序,尤其是通过互联网。”  它可以被视为一个虚拟助手,通过短信与用户进行交流,并帮助企业拉近与客户的距离。它是一个旨在模仿人类相互交流方式的程序。它可以通过聊天界面或语音通话来完成。开发人员通常设计聊天机器人,以便用户很难分辨他们是在与人交流还是与机器人交流。
聊天机器人可帮助任何企业/组织实现以下目标:
  • 提高运营效率。
  • 自动完成客户请求。
  • 处理基本查询,从而使员工能够腾出时间处理复杂和更高价值的查询。
  • 提供多语言支持。
  • 通过自动化客户支持节省时间和精力。
  • 提高响应率和客户参与度。
  • 沟通个性化
在 Python 中使用 Chatterbot 构建聊天机器人

文章图片
来源
聊天机器人如何工作?Python Chatterbot聊天机器人示例 - 聊天机器人只不过是具有应用层、数据库和 API 的软件应用程序。为了简化聊天机器人的工作,我们可以说它通过模式匹配对文本进行分类并为用户提出的问题/查询生成合适的响应。聊天机器人根据输入的程序响应用户。聊天机器人有不同的类型,具体取决于它们的使用方式。聊天机器人主要有以下三种类型:
  • 基于规则的聊天机器人:这是基本的聊天机器人,用户通过使用预定义的选项与这种机器人进行交互。要从这些机器人那里获得答案,用户需要单击某些选项。这些类型的机器人收集用户的请求,对其进行分析,然后以按钮的形式提供结果。这些机器人通常用于在涉及复杂查询时替换常见问题;它们并不总是最好的解决方案。
  • 独立(关键字)聊天机器人:这些是机器学习机器人,与基于规则的聊天机器人不同,它们分析用户想要什么并做出适当的响应。这些聊天机器人使用可定制的关键字和机器学习来确定如何有效且高效地响应用户的请求。
  • NLP(上下文)聊天机器人:这些是迄今为止最先进的聊天机器人。它们是基于规则和关键字聊天机器人的最佳组合。这些聊天机器人使用 NLP 来理解用户请求中的上下文和意图,从而采取相应的行动。这些聊天机器人可以轻松处理来自同一用户的多个请求。
Python如何制作聊天机器人?Chatbot平台的比较许多平台提供具有自动化功能的定制聊天机器人,可在客户需要时提供无缝、始终准时、一流的支持服务,而无需盒子对话功能。客户还热衷于从他们可以通过消息轻松连接的企业购买。
2020年AI聊天机器人搭建平台列表:
  • Azure 机器人服务:  Azure 机器人服务提供从头开始构建聊天机器人,即你可以构建、连接、测试和部署。它允许开发人员使用开源 SDK 和工具。它还使开发人员能够创建高级机器人(例如虚拟助手)来处理复杂的查询。
  • Botsify:该工具的独特之处在于它使非技术用户能够通过其直观的界面构建聊天机器人。机器人在这里表示为故事,即你可以创建多个故事或多个聊天机器人并根据需要部署它们。另一个很棒的功能是能够将用户的回复保存到可以轻松导出为 CSV 的表单中。
  • Amazon Lex:  Amazon lex 允许开发人员使用文本和语音构建对话界面。它提供了先进的深度学习功能和 NLP,用于理解文本的上下文。它提供了一个易于使用的控制台,可在几分钟内构建聊天机器人。
  • Mobile Monkey:Mobile Monkey为开发人员提供专门用于营销目的的聊天机器人。它允许开发人员在一个平台上制作 Facebook 广告机器人、短信机器人和原生网络聊天机器人。他们还为每个可能的业务提供现成的聊天机器人模板,可以直接嵌入网站。
  • ChatterOn:它声称可以处理来自 Bot 的不同类型的丰富内容响应,因为它允许开发人员在与用户的每次交互中连接不同的 API。ChatterOn 提供 20 多种预制螺栓,单击即可投入使用。它不需要太多编码,这使得非技术用户更容易构建聊天机器人。
  • TARS:它为你提供了一个对话式登录页面,使你能够创建一个自动聊天机器人来迎接你和客户,向他们提供有关他们对你的产品的查询的相关信息,并同时询问他们的联系方式。Tars 提供了许多预定义的聊天机器人模板,它们分为两部分 - 按行业和用例。
到现在为止,你一定很想构建自己的聊天机器人。还有什么比可定制的 NLP 聊天机器人更好的呢?让我们开始使用库 chatterbot 在 Python 中构建我们自己的聊天机器人。
聊天机器人:如何使用Chatterbot创建聊天机器人?【在 Python 中使用 Chatterbot 构建聊天机器人】
在 Python 中使用 Chatterbot 构建聊天机器人

文章图片

顾名思义,chatterbot 是一个专门用于生成聊天机器人的 Python 库。该算法使用一系列机器学习算法来根据用户的请求对用户做出不同的响应。
Chatterbot 使开发可以参与对话的聊天机器人变得更加容易。它首先创建一个未经训练的聊天机器人,该机器人之前没有关于如何沟通的经验或知识。当用户输入语句时,库会保存用户发出的请求,并保存发回给用户的响应。随着 chatterbot 中实例数量的增加,chatterbot 做出的响应的准确性也会增加。
Chatterbot 被训练通过查找用户发出的与新请求等效的最接近的类似请求来搜索最接近的类似响应。然后它从已经存在的响应中选择一个响应。chatterbot 的 USP 是它使开发人员能够轻松创建自己的数据集和结构。
使用 Chatterbot 构建聊天机器人Python如何制作聊天机器人?让我们从安装 chatterbot 库开始。创建聊天机器人还需要安装聊天机器人语料库。语料库 - 字面意思是单词的集合。这包含一个包含在 chatterbot 模块中的数据语料库。每个语料库只不过是不同输入语句及其响应的原型。这些语料库被机器人用来训练自己。安装 chatterbot 和 chatterbot_corpus 最推荐的方法是使用 pip。
终端安装命令:
pip install chatterbot

pip install chatterbot_corpus

Jupyter Notebook 的安装命令:
!pip install chatterbot

!pip install chatterbot_corpus

让我们首先导入 chatterbot 模块的 Chatbot 类。
# Importing chatterbot from chatterbot import ChatBot

Chatterbot 构建聊天机器人实例
Python Chatterbot聊天机器人示例:现在,是最有趣的部分了,即通过创建 Chatbot 对象来命名你的聊天机器人。你可以选择任何你想要的名称。这行代码生成了我们自己的名为 Buddy 的新机器人。在运行第一个程序之前,我们需要指定更多参数。
# 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.

如何使用Chatterbot创建聊天机器人?你可以使用聊天机器人对象定位存储适配器。存储适配器允许你连接到特定的存储单元或网络。要使用存储适配器,我们需要指定它。我们将通过将存储适配器分配给我们要使用的存储的导入路径来定位它。这里我们使用 SQL 存储适配器,它允许聊天机器人连接到 SQL 中的数据库。通过使用 database 参数,我们将创建一个新的 SQLite 数据库。请按照以下代码为聊天机器人创建新数据库。
# Create object of ChatBot class with Storage Adapter bot = ChatBot( 'Buddy', storage_adapter='chatterbot.storage.SQLStorageAdapter', database_uri='sqlite:///database.sqlite3' )

你还可以使用聊天机器人对象定位逻辑适配器。顾名思义,逻辑适配器调节聊天机器人背后的逻辑,即它为提供给它的任何输入选择响应。此参数包含逻辑运算符列表。Chatterbot 允许我们使用许多逻辑适配器。当使用多个逻辑适配器时,聊天机器人将计算置信度,计算出的置信度最高的响应将作为输出返回。这里我们使用了两个逻辑适配器:BestMatchTimeLogicAdapter.
# Create object of ChatBot class with Logic Adapter bot = ChatBot( 'Buddy', logic_adapters=[ 'chatterbot.logic.BestMatch', 'chatterbot.logic.TimeLogicAdapter'], )

Chatterbot 构建聊天机器人:训练聊天机器人
现在制作聊天机器人的最后一步是使用聊天机器人中可用的模块训练聊天机器人。使用 chatterbot 训练聊天机器人就像在聊天机器人数据库中提供对话一样简单。一旦给聊天机器人一个数据集,它就会在聊天机器人的知识图中生成基本条目,以正确的方式表示输入和输出。首先,让我们导入ListTrainer,通过传递对象来创建它的Chatbot对象,并train()通过传递一个句子列表来调用该方法。
# Inport ListTrainer from chatterbot.trainers import ListTrainertrainer = 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()方法Chatbot
# 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

Python Chatterbot聊天机器人示例:我们将为聊天机器人创建一个 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创建聊天机器人?本文基于学习如何使用 ChatterBot 库在 Python 中制作聊天机器人。使用 ChatterBot 构建聊天机器人不仅简单,而且结果准确。随着人工智能和机器学习的进步,无论是创建具有人类对话技能的机器人还是其他任何东西,一切都有可能实现。

    推荐阅读