使用 Python 构建聊天机器人
聊天机器人是一种旨在通过文本或语音与人类用户模拟对话的计算机程序。它使用人工智能和自然语言处理技术来帮助理解和解释用户的消息,并提供相关的回复。在本文中,我们将了解如何借助 Python 创建聊天机器人。
像 ChatGPT 这样的聊天机器人自 2022 年底以来变得流行起来,并且在不同领域的民众中有着广泛的用例。聊天机器人也集成到像 Swiggy 和 Zomato 这样的移动应用程序中,以更快地解决客户投诉。
聊天机器人有多种类型,如下所示
基于规则的聊天机器人 - 它们被设计为根据预定义的一组规则或决策树来响应用户输入。它们可以非常简单或复杂,主要用于处理基本的用户信息请求。
基于检索的聊天机器人 - 它们利用自然语言处理来分析用户输入,然后将其与包含回复的预先存在的数据库进行匹配。然后,聊天机器人使用逻辑适配器选择最佳匹配项并将其呈现给用户。
生成式聊天机器人 - 它们利用人工智能和机器学习算法来生成对用户输入的独特回复。它们非常先进,能够从用户交互中学习以改进其回复。
混合聊天机器人 - 它们结合了基于规则和生成式的方法,以提供对用户输入的最佳回复。它们通常包括其他功能,如情感分析、上下文感知以及个性化推荐。
使用 Python 构建聊天机器人的步骤
构建聊天机器人涉及多个步骤。以下是此过程的概述
1. 定义目的和范围
在这里,我们决定我们的聊天机器人需要完成什么。它的目标受众是谁?我们的聊天机器人应该使用什么样的语言和语气?
2. 聊天机器人框架
Python 提供了各种框架,如 ChatterBot、NLTK、RASA 等等来帮助创建聊天机器人,所有这些框架都有其自身的优缺点。最佳选择取决于您的需求。
3. 收集和预处理数据
训练聊天机器人需要对诸如对话日志、客户支持电子邮件等数据进行清理,然后将其转换为聊天机器人框架可以从中受益的格式。
4. 训练聊天机器人
数据预处理完成后,它可以用于训练聊天机器人,具体取决于所使用的框架和用例,您可以选择如何创建知识库。
5. 与消息传递平台集成
创建的聊天机器人本身没有任何用途,必须为其提供用户界面并将其连接到 Facebook Messenger、Telegram 或 WhatsApp 等平台。每个平台都有自己的一套 API 和文档,有助于连接此聊天机器人。像 Swiggy 这样的聊天机器人连接到应用程序本身。
6. 测试您的聊天机器人
在最终部署聊天机器人并将其提供给用户之前,应手动或借助自动化测试对其进行测试。应格外小心,以确保聊天机器人不会提供可能导致法律问题的回复。
7. 部署您的聊天机器人
一旦测试人员对聊天机器人感到满意,就可以将其部署到服务器或云平台。配置环境、设置 Webhook 或使用聊天机器人托管服务是此步骤的常见部分。
8. 监控和改进您的聊天机器人
聊天机器人部署后,必须监控其性能并考虑用户反馈。Google Analytics 或 Mixpanel 等分析工具有助于跟踪用户参与度、留存率和满意度等常见指标。
在继续使用 Python 创建聊天机器人之前,我们必须使用以下命令安装 chatterbot 库
pip install chatterbot
以及
pip install chatterbot-corpus
问候聊天机器人
这是一个简单的聊天机器人,它利用来自 english.greetings 和 english.conversations 语料库的一些预先存在的对话数据来训练机器人。借助此代码,机器人可以回答基本问题。当然,可以通过使用更多数据训练它并实现其他功能来自定义和改进聊天机器人。
训练完成后,聊天机器人运行一个无限的 while 循环,以与用户创建来回对话。当“end”列表中的任何字符串被用户作为回复给出时,循环终止。
示例
from chatterbot import ChatBot
from chatterbot.trainers import ChatterBotCorpusTrainer
bot = ChatBot('TPTBot')
trainer = ChatterBotCorpusTrainer(bot)
# if user enters any of the list elements, program is terminated
end=["q","exit", "end", "stop", "quit"]
trainer.train('chatterbot.corpus.english.greetings', 'chatterbot.corpus.english.conversations')
while True:
# take user input
user_input = input("You: ")
if user_input in end:
break
else:
response = bot.get_response(user_input)
print("TPTBot: ", response)
输出
Training greetings.yml: [######## ] 40% [nltk_data] Downloading package stopwords to /root/nltk_data... [nltk_data] Package stopwords is already up-to-date! [nltk_data] Downloading package averaged_perceptron_tagger to [nltk_data] /root/nltk_data... [nltk_data] Package averaged_perceptron_tagger is already up-to- [nltk_data] date! Training greetings.yml: [####################] 100% Training conversations.yml: [####################] 100% You: Hi TPTBot: Hello You: How are you? TPTBot: I am doing well. You: end
心理治疗聊天机器人
心理治疗聊天机器人是人工智能驱动的工具,可帮助心理学家、心理治疗师和其他医疗保健提供者改善可能正在或正在应对精神障碍、压力或创伤的患者的福祉。在线心理治疗聊天机器人还可以使那些不习惯面对面治疗或经济拮据的人受益,因为实时治疗可能很昂贵,而且通常不受保险覆盖。
在这里,我们使用逻辑适配器来确定聊天机器人如何选择对给定输入语句的响应的逻辑。这里使用的两个逻辑适配器是 BestMatch,它有助于根据与用户输入的相似性选择最佳响应,以及 MathematicalEvaluation,它允许机器人处理与数学相关的查询。
还指定了两个预处理器,用于在将输入传递到逻辑适配器之前清理输入。然后,我们使用包含与治疗相关数据的语料库来训练聊天机器人。对于此示例,我们使用“chatterbot.corpus.english”语料库和一个自定义的“therapy_corpus.yml”文件,该文件包含与治疗相关的回复,可在此处获取。
请确保下载“therapy_corpus.yml”文件,如果它不在与脚本相同的文件夹中,请在代码中指定路径。
示例
from chatterbot import ChatBot
from chatterbot.trainers import ChatterBotCorpusTrainer
chatbot = ChatBot('TherapyBot',
logic_adapters=[
'chatterbot.logic.BestMatch',
'chatterbot.logic.MathematicalEvaluation'
],
preprocessors=[
'chatterbot.preprocessors.clean_whitespace',
'chatterbot.preprocessors.unescape_html'
])
trainer = ChatterBotCorpusTrainer(chatbot)
trainer.train('chatterbot.corpus.english')
# therapy_corpus.yml will be created seperately
trainer.train('/content/therapy_corpus.yml')
end=["q","exit", "end", "stop", "quit"]
while True:
message = input('You: ')
if message in end:
break
else:
response = chatbot.get_response(message)
print('TherapyBot:', response)
输出
Training ai.yml: [## ] 10% [nltk_data] Downloading package stopwords to /root/nltk_data... [nltk_data] Package stopwords is already up-to-date! [nltk_data] Downloading package averaged_perceptron_tagger to [nltk_data] /root/nltk_data... [nltk_data] Package averaged_perceptron_tagger is already up-to- [nltk_data] date! Training ai.yml: [####################] 100% Training botprofile.yml: [####################] 100% Training computers.yml: [####################] 100% Training conversations.yml: [####################] 100% Training emotion.yml: [####################] 100% Training food.yml: [####################] 100% Training gossip.yml: [####################] 100% Training greetings.yml: [####################] 100% Training health.yml: [####################] 100% Training history.yml: [####################] 100% Training humor.yml: [####################] 100% Training literature.yml: [####################] 100% Training money.yml: [####################] 100% Training movies.yml: [####################] 100% Training politics.yml: [####################] 100% Training psychology.yml: [####################] 100% Training science.yml: [####################] 100% Training sports.yml: [####################] 100% Training trivia.yml: [####################] 100% Training therapy_corpus.yml: [####################] 100% You: Hi TherapyBot: Hello You: I'm feeling really stressed out lately TherapyBot: I'm sorry to hear that. Can you tell me more about what's been going on? You: nothing TherapyBot: Or something You: end
结论
聊天机器人是一种非常有用的工具,其用例范围从自动客户投诉解决到家庭自动化。Alexa(一个基于语音的聊天机器人)和 ChatGPT(或简称为 ChatGPT)是当今世界中常见的例子。Python 非常流行用于构建聊天机器人,并提供各种库。总的来说,聊天机器人有可能彻底改变企业和组织与其用户互动的方式。它们不仅提供 24/7 支持,还提供个性化推荐。有各种各样的聊天机器人可用,选择取决于用例。
数据结构
网络
关系型数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP