使用 Python 中的 Chatterbot 构建聊天机器人
您是否觉得排长队等待客服很烦人?您是否不喜欢阅读常见问题解答页面?如果是这样,您来对地方了。您是否曾与客服人员聊天,询问他们给您送错了商品,结果却发现是机器人在回复您?这篇博文将回答以下问题:什么是机器人?它们是如何构建的?需要哪些代码源?
人工智能专门用于改善人机交互,它利用机器学习和自然语言处理 (NLP) 来创建聊天机器人。聊天机器人存在于各个行业,例如银行、披萨店和电子商务购物商店,提供与各自领域相关的实时客户服务帮助。聊天机器人通过适应自然的人类语言,以自然的、类似人类的方式与人类交谈。
近年来,聊天机器人越来越受欢迎,因为它们能够提高客户参与度并减少客户服务代表的工作量。事实上,研究表明,到 2022 年,80% 的企业已经在使用或计划使用聊天机器人。
简单来说,聊天机器人是利用自然语言处理的问答系统的演变。根据最近的数据,全球聊天机器人市场规模预计将在 2024 年达到 165 亿美元,年增长率为 29.7%。随着客户自助服务趋势的日益增长,聊天机器人为客户提供了一种方便、高效的方式,让他们无需等待人工协助即可找到问题的答案。
总体而言,聊天机器人彻底改变了企业与客户互动的方式,为客户支持提供了经济高效的解决方案,同时提升了整体客户体验。
什么是聊天机器人?
1994 年,Michael Mauldin 创建了他的第一个聊天机器人"Julia",从此"聊天机器人"一词诞生。根据牛津词典,聊天机器人被定义为一种模拟与人类用户对话的计算机程序,主要通过互联网进行。聊天机器人充当虚拟助手,通过短信与用户沟通,帮助企业与客户建立更紧密的联系。从本质上讲,聊天机器人旨在复制人类之间的沟通方式,无论是通过聊天界面还是语音通话。开发人员努力创建让用户难以区分人类和机器人的聊天机器人。
以下是我们将讨论聊天机器人在当今世界为何以及在何处有用的要点。
聊天机器人为什么有用?
24/7 全天候可用:聊天机器人可以全天候提供客户服务支持,无需休息或休假,非常适合在不同时区运营的企业。
经济高效:聊天机器人可以帮助企业降低运营成本,因为它们可以同时处理多个客户查询,而无需额外的员工。
个性化:可以对聊天机器人进行编程,根据客户的偏好、购买历史和其他数据为客户提供个性化响应。
提高客户参与度:聊天机器人可以通过提供比传统客户服务方法更具互动性和用户友好的对话体验来增强客户参与度。
聊天机器人在哪里有用?
电子商务:聊天机器人可以帮助客户找到产品,提供产品推荐,并回答与订单和交付相关的常见问题。
医疗保健:聊天机器人可以帮助患者查找有关其健康状况的信息,安排预约,并获得有关用药计划的提醒。
金融:聊天机器人可以协助客户进行账户管理,提供投资建议,并帮助进行财务规划。
旅游:聊天机器人可以帮助客户查找和预订航班、酒店和租车,并提供旅游目的地的信息。
客户服务:聊天机器人可以提供快速高效的客户服务支持,回答常见问题并解决简单问题。
聊天机器人如何工作?
聊天机器人结合使用机器学习、自然语言处理 (NLP) 和人工智能 (AI) 等技术模拟与人类的对话。以下是聊天机器人工作原理的详细说明:
来自用户的输入:用户与聊天机器人之间的对话从来自用户的输入开始。这可以是文本消息或语音命令。
自然语言处理 (NLP):聊天机器人使用 NLP 分析来自用户的输入并理解其背后的意图。这涉及将输入分解为单个单词并识别关键短语、关键字和上下文。
检索信息:一旦聊天机器人理解了用户的意图,它就会从其知识库或数据库中检索相关信息。这些信息可以以结构化格式(如数据库)或非结构化格式(如网站或社交媒体页面)存储。
生成响应:根据检索到的信息,聊天机器人会生成与用户输入相关的响应。此响应可以是文本、语音或两者兼有的形式。
机器学习:随着聊天机器人与更多用户互动,它会从对话中学习并改进其响应。这是使用分析对话并识别模式的机器学习算法来实现的。
与其他系统集成:聊天机器人可以与其他系统集成,例如客户关系管理 (CRM) 软件、营销自动化工具和电子商务平台,以提供无缝的用户体验。
持续改进:聊天机器人不断改进和更新,以提供更好的响应、处理更复杂的查询并与新系统集成。
总体而言,聊天机器人结合使用多种先进技术来提供个性化、高效且用户友好的对话体验。聊天机器人能够同时处理多个查询并提供全天候客户支持,正成为各种规模企业的必备工具。
现在我们熟悉了什么是聊天机器人、它们在哪里使用以及它们有什么好处,让我们来谈谈聊天机器人。
Chatterbot
Chatterbot 是一个 Python 库,允许开发人员使用自然语言处理 (NLP) 和机器学习算法创建聊天机器人。它是构建对话界面的热门选择,被世界各地的企业和开发人员使用。
以下是 Chatterbot 的一些功能:
支持多种语言:Chatterbot 支持多种语言,包括英语、西班牙语、法语和德语,使其成为与国际客户合作的开发人员的多功能选择。
预训练模型:Chatterbot 附带预训练模型,可立即使用,快速构建聊天机器人。这些模型是在大型数据集上训练的,可以对常见查询提供准确的响应。
自定义训练:开发人员还可以在自己的数据集上训练 Chatterbot,以创建可以响应特定查询和用例的自定义聊天机器人。
与其他平台集成:Chatterbot 可以与其他平台集成,例如 Facebook Messenger、Slack 和 Twitter,使企业能够提供全天候客户支持并提高客户参与度。
支持不同的对话格式:Chatterbot 可用于创建支持不同对话格式(如文本、语音和视频)的聊天机器人。
开源:Chatterbot 是一个开源库,这意味着开发人员可以根据自己的特定需求对其进行修改和定制。
现在让我们利用chatterbot 用 Python 编写几个简单的聊天机器人示例。
示例 1
我们的第一步是能够安装聊天机器人库,为此我们需要运行下面显示的命令。
命令
pip install chatterbot
执行完上述命令后,我们还需要运行以下命令。
命令
pip install chatterbot_corpus
这两个命令在你的机器上成功运行后,下一步是创建一个名为 main.py 的新文件,并在其中写入以下代码。
示例
from chatterbot import ChatBot from chatterbot.trainers import ListTrainer 导入日志记录 logger = logs.getLogger() logger.setLevel(logging.CRITICAL) # 创建一个新的聊天机器人实例 chatbot = ChatBot('MyChatBot') # 为聊天机器人创建新的训练器 trainer = ListTrainer(chatbot) # 在对话数据集上训练聊天机器人 trainer.train([ 'Hi', 'Hello', 'How are you?', 'I am doing well, thank you.', 'That is good to hear.', 'What is your name?', 'My name is MyChatBot.', 'Nice to meet you, MyChatBot.', ]) # 获取对用户输入的响应 response = chatbot.get_response('Hello') # 打印响应 print(response)
说明
此 Python 代码演示了如何使用 ChatterBot 库创建和训练基本聊天机器人:
导入必要的库:
chatterbot 库中的 ChatBot 类用于创建聊天机器人实例
chatterbot.trainers 库中的 ListTrainer 类用于在对话数据集上训练聊天机器人
日志库用于将记录器级别设置为 CRITICAL(可选)
创建记录器并将其级别设置为 CRITICAL(可选)。这样做是为了抑制来自聊天机器人的任何日志消息。
使用 ChatBot('MyChatBot') 构造函数创建一个新的聊天机器人实例,其中 'MyChatBot' 是为聊天机器人指定的名称。
使用 ListTrainer(chatbot) 构造函数为聊天机器人创建一个新的训练器。
使用 trainer.train() 方法训练聊天机器人,以对话对列表作为其参数。每对对话都包含一个问题及其相应的答案。
使用 chatbot.get_response() 方法从聊天机器人获取给定用户输入的响应。用户输入作为参数传递给此方法。
使用 print(response) 语句打印从聊天机器人获得的响应。
要运行上述代码,我们需要运行下面显示的命令。
命令
python3 main.py
运行上述命令后,我们应该会看到类似于下面所示的输出。
输出
[nltk_data] Downloading package averaged_perceptron_tagger to [nltk_data] /Users/mlatiya/nltk_data... [nltk_data] Package averaged_perceptron_tagger is already up-to- [nltk_data] date! [nltk_data] Downloading package punkt to /Users/mlatiya/nltk_data... [nltk_data] Package punkt is already up-to-date! [nltk_data] Downloading package stopwords to [nltk_data] /Users/mlatiya/nltk_data... [nltk_data] Package stopwords is already up-to-date! List Trainer: [####################] 100% Nice to meet you, MyChatBot.
让我们再探索一个聊天机器人的例子。
考虑下面显示的代码。
示例
from chatterbot import ChatBot # 取消注释以下行以启用详细日志记录 import logs logging.basicConfig(level=logging.INFO) # 创建 ChatBot 的新实例 bot = ChatBot( 'Terminal', storage_adapter='chatterbot.storage.SQLStorageAdapter', logic_adapters=[ 'chatterbot.logic.MathematicalEvaluation', 'chatterbot.logic.TimeLogicAdapter', 'chatterbot.logic.BestMatch' ], database_uri='sqlite:///database.db' ) print('Welcome! Type something to begin, or enter "bye" to end the conversation.') # 每次用户输入时,都会执行以下循环 while True: try: user_input = input() if user_input.lower() == 'bye': print('Goodbye!') break bot_response = bot.get_response(user_input) print(bot_response) # 按键盘上的 ctrl-c 或 ctrl-d 退出 except (KeyboardInterrupt, EOFError, SystemExit): break
解释
此代码创建一个命令行聊天机器人,该聊天机器人使用预先训练的模型响应用户输入。聊天机器人是使用 chatterbot 库中的 ChatBot 类创建的。
ChatBot 对象使用名称"Terminal"和其他一些参数创建,例如要使用的存储适配器(设置为 SQL 存储适配器)和要使用的逻辑适配器。逻辑适配器定义聊天机器人如何生成对用户输入的响应。在这种情况下,聊天机器人将使用数学评估适配器、时间逻辑适配器和最佳匹配适配器的组合。
database_uri 参数设置聊天机器人将用于存储的数据库的位置。在此示例中,使用文件名为 database.db 的 SQLite 数据库。
创建聊天机器人后,代码进入循环,不断提示用户输入并打印聊天机器人的响应。 input() 函数用于从命令行获取用户输入,bot.get_response() 方法用于获取聊天机器人对用户输入的响应。然后使用 print() 函数将聊天机器人的响应打印到控制台。
循环将继续执行,直到用户按下键盘上的 ctrl-c 或 ctrl-d,这将引发异常并导致循环退出。
要运行上述代码,我们需要运行下面显示的命令。
命令
python3 main.py
一旦我们运行上述命令,我们应该期望得到类似于下面显示的输出。
输出
[nltk_data] Downloading package averaged_perceptron_tagger to [nltk_data] /Users/mlatiya/nltk_data... [nltk_data] Package averaged_perceptron_tagger is already up-to- [nltk_data] date! [nltk_data] Downloading package punkt to /Users/mlatiya/nltk_data... [nltk_data] Package punkt is already up-to-date! [nltk_data] Downloading package stopwords to [nltk_data] /Users/mlatiya/nltk_data... [nltk_data] Package stopwords is already up-to-date! Welcome! Type something to begin, or enter "bye" to end the conversation. bye Goodbye!
结论
总之,聊天机器人的发展彻底改变了企业与客户互动的方式。通过使用 ChatterBot(一个用于构建聊天机器人的 Python 库),开发人员可以轻松创建智能且响应迅速的聊天机器人,以协助完成各种任务。ChatterBot 带有几个内置适配器,用于实现常见的聊天机器人功能,例如数学评估、时间逻辑以及找到与用户输入最佳匹配的能力。
此外,ChatterBot 提供了一个简单的界面,用于在自定义数据集上训练聊天机器人,允许开发人员根据他们的特定需求定制聊天机器人。总体而言,ChatterBot 是创建聊天机器人的强大工具,可以为企业提供价值并增强客户体验。