用 Python 构建聊天机器人

pythonchatbotserver side programmingprogramming

聊天机器人是一种计算机程序,旨在通过文本或语音模拟与人类用户的对话。它使用 AI 和 NLP 技术来帮助理解和解释用户的消息并提供相关的响应。在本文中,我们将了解如何在 Python 的帮助下创建聊天机器人。

像 chatGPT 这样的聊天机器人自 2022 年底以来一直很受欢迎,并且对不同领域的人们都有广泛的使用案例。聊天机器人还与 Swiggy 和 Zomato 等移动应用程序集成,以更快地解决客户投诉。

聊天机器人有多种类型,如下所示:

  • 基于规则的聊天机器人 - 它们旨在根据预定义的一组规则或决策树响应用户输入。它们可以非常简单或复杂,主要用于处理基本的用户请求。

  • 基于检索的聊天机器人 - 它们利用 NLP 分析用户输入,然后将其与包含响应的预先存在的数据库进行匹配。然后,聊天机器人使用逻辑适配器选择最佳匹配并将其呈现给用户。

  • 生成式聊天机器人 - 它们利用 AI 和 ML 算法对用户输入生成独特的响应。它们非常先进,能够从用户交互中学习以改进其响应。

  • 混合式聊天机器人 - 它们是一种组合或基于规则和生成性的方法,旨在为用户输入提供最佳响应。它们通常包括情绪分析、上下文感知以及个性化推荐等附加功能。

使用 Python 构建聊天机器人的步骤

构建聊天机器人涉及几个步骤。以下是此过程的概述:

1. 定义目的和范围

在这里,我们决定聊天机器人要完成的任务。它的目标受众是谁,我们的聊天机器人应该使用什么样的语言和语气?

2. Chabot 框架

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

and

pip install chatterbot-corpus

问候聊天机器人

这是一个简单的聊天机器人,它利用 english.greetings 和 english.conversations 语料库中的一些预先存在的对话数据来训练机器人。借助此代码,机器人可以回答基本问题。当然,可以通过使用更多数据训练聊天机器人并实现其他功能来定制和改进聊天机器人。

训练完成后,聊天机器人会运行无限 while 循环来与用户进行来回对话。当用户给出"结束"列表中的任何字符串作为响应时,循环终止。

示例

from chatterbot import ChatBot
from chatterbot.trainers import ChatterBotCorpusTrainer

bot = ChatBot('TPTBot')
trainer = ChatterBotCorpusTrainer(bot)

# 如果用户输入任何列表元素,程序将终止
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

治疗聊天机器人

治疗聊天机器人是人工智能工具,可帮助心理学家、心理治疗师和其他医疗保健提供者改善可能或正在处理精神疾病、压力和/或创伤的患者的健康状况。在线治疗聊天机器人还可以使那些不习惯面对面治疗或经济困难的人受益,因为实时治疗可能成本高昂,而且通常不在保险范围内。

在这里,我们使用逻辑适配器来确定 ChatterBot 如何选择对给定输入语句的响应的逻辑。这里使用的 2 个逻辑适配器是 BestMatch,它有助于根据与用户输入的相似性选择最佳响应,以及 MathematicalEvaluation,它允许机器人处理与数学相关的查询。

还有 2 个预处理器指定在将输入传递给逻辑适配器之前清理输入。然后,我们使用治疗相关数据语料库来训练聊天机器人。对于此示例,我们使用"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 将单独创建
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 是一款基于语音的聊天机器人,而 Chat Generative Pretrained Transformer 或简称为 chatGPT 是当今世界常见的例子。Python 是构建聊天机器人的流行语言,它提供了各种库。总体而言,聊天机器人有可能彻底改变企业和组织与用户互动的方式。它们不仅提供全天候支持,还提供个性化推荐。聊天机器人种类繁多,选择因用例而异。


相关文章