Python 聊天机器人

2024 年 08 月 29 日 | 阅读 9 分钟

在过去的几年里,Python 编程语言中的聊天机器人在技术和商业领域受到了极大的推崇。这些智能机器人非常擅长模仿自然人类语言并与人类聊天,以至于不同行业的公司都在接受它们。从电子商务行业到医疗机构,每个人似乎都在利用这个巧妙的工具来推动业务优势。在下面的教程中,我们将借助 Python 编程语言来理解聊天机器人,并讨论在 Python 中创建聊天机器人的步骤。

理解聊天机器人

聊天机器人 (Chatbot) 是一种基于人工智能的软件,旨在以人类的自然语言与人类互动。这些聊天机器人通常通过听觉或文本方式进行交流,它们可以轻松模仿人类语言,以类似人类的方式与人类交流。聊天机器人被认为是自然语言处理的最佳应用之一。

我们可以将聊天机器人分为两个主要变体:基于规则的聊天机器人自学习聊天机器人

  1. 基于规则的聊天机器人:基于规则的方法训练聊天机器人根据预先确定的一系列规则来回答问题。这些设定的规则可以非常简单,也可以相当复杂,我们可以使用这些基于规则的聊天机器人来处理简单的查询,但不能处理更复杂的请求或查询。
  2. 自学习聊天机器人:自学习聊天机器人是可以自行学习的聊天机器人。它们利用人工智能 (AI) 和机器学习 (ML) 等先进技术,通过行为和实例来训练自己。通常,这些聊天机器人比基于规则的机器人更智能。我们可以将自学习聊天机器人进一步分为两类——基于检索的聊天机器人生成式聊天机器人
    1. 基于检索的聊天机器人:基于检索的聊天机器人根据预定义的输入模式和设定响应工作。一旦插入问题或模式,聊天机器人就会利用启发式方法提供相关响应。基于检索的模型广泛用于设计和开发目标导向的聊天机器人,使用自定义功能,例如机器人的流程和语气,以增强客户体验。
    2. 生成式聊天机器人:与基于检索的聊天机器人不同,生成式聊天机器人不基于预定义的响应——它们利用 seq2seq 神经网络。这建立在机器翻译的概念之上,其中源代码从一种语言转换为另一种语言。在 seq2seq 方法中,输入被转换为输出。

第一个名为 ELIZA 的聊天机器人由 Joseph Weizenbaum 于 1966 年设计和开发,它仅用 200 行代码就能模仿心理治疗师的语言。但随着技术的发展,我们已经从脚本化的聊天机器人发展到今天的 Python 聊天机器人。

当下世代的聊天机器人

今天,我们拥有由人工智能驱动的智能聊天机器人,它们利用自然语言处理 (NLP) 来理解人类的命令(文本和语音)并从经验中学习。聊天机器人已成为拥有活跃在线存在(网站和社交网络平台)的公司和品牌的必备客户交互工具。

借助 Python,聊天机器人被认为是一个巧妙的工具,因为它们促进了品牌与客户之间的快速消息传递。让我们想想微软的 Cortana、亚马逊的 Alexa 和苹果的 Siri。这些聊天机器人是不是很棒?学习如何使用 Python 编程语言创建聊天机器人变得非常有趣。

从根本上说,利用 Python 的聊天机器人被设计和编程为接收我们提供的数据,然后使用复杂的人工智能算法对其进行分析。然后它会向我们提供书面或口头响应。由于这些机器人可以从经验和行为中学习,因此它们可以响应各种各样的查询和命令。

尽管 Python 聊天机器人目前已开始主导科技领域,但根据 Gartner 的预测,到 2020 年,聊天机器人已处理了大约 85% 的客户-品牌互动。

鉴于聊天机器人在行业中日益增长的普及和采用,我们可以通过学习如何在 Python(全球使用最广泛的编程语言之一)中创建聊天机器人来提高市场价值。

那么,让我们开始吧!

理解 ChatterBot 库

ChatterBot 是一个 Python 库,旨在为用户输入提供自动化响应。它利用机器学习算法的组合来生成多种类型的响应。此功能使开发人员能够使用 Python 构建可以与人类交流并提供相关且适当响应的聊天机器人。此外,ML 算法支持机器人通过经验提高其性能。

ChatterBot 库的另一个惊人之处在于它的语言独立性。该库以一种使其可以在多种编程语言中训练机器人的方式开发。

理解 ChatterBot 库的工作原理

当用户在聊天机器人(在 ChatterBot 上设计)中插入特定输入时,机器人会保存输入和响应以供将来使用。这些信息(收集到的经验)允许聊天机器人每次接收到新输入时生成自动化响应。

程序从最接近输入并匹配的语句中选择最合适的响应,然后从已知语句和响应选项中提供响应。随着时间的推移,随着聊天机器人进行更多的通信,回复的准确性会提高。

使用 Python 创建聊天机器人

我们将采用循序渐进的方法,并分解创建 Python 聊天的过程。

我们将从导入项目所需的所有必需包和模块开始构建 Python 聊天机器人。我们还将初始化我们想在其中使用的不同变量。此外,我们还将处理文本数据,因此在设计 ML 模型之前,我们必须对数据集执行数据预处理。

这就是标记化支持文本数据的地方——它将大型文本数据集转换为更小、可读的块(例如单词)。一旦这个过程完成,我们可以进行词形还原,将一个词转换为其词形形式。然后它会生成一个 pickle 文件,以存储用于预测机器人响应的 Python 对象。

聊天机器人开发过程的另一个主要部分是开发训练和测试数据集。

现在我们已经了解了 Python 中聊天机器人开发的基本概念,让我们开始实际过程吧!

准备依赖项

使用 ChatterBot 库在 Python 中创建聊天机器人的第一步是在系统中安装该库。作为一种良好实践,我们也可以使用新的 Python 虚拟环境进行库安装。我们可以在命令提示符或 Python 终端中使用以下命令通过 pip 安装程序安装该库

语法

我们还可以直接从 GitHub 安装 ChatterBot 库的最新开发版本。为此,我们将不得不使用以下命令

语法

如果有人想升级该库,可以使用以下命令

语法

现在设置已准备就绪,我们可以继续下一步,以使用 Python 编程语言创建聊天机器人。

导入类

Python 聊天机器人开发过程的第二步是导入所需的类。

让我们考虑以下代码片段来理解这一点。

文件:my_chatbot.py

说明

在上面的代码片段中,我们导入了两个类——来自 chatterbotChatBot 和来自 chatterbot.trainersListTrainer

创建和训练聊天机器人

下一步是使用“ChatBot”类的实例创建一个聊天机器人,并训练该机器人以提高其性能。训练机器人可确保它拥有足够的知识,可以针对特定输入语句开始提供特定回复。

让我们考虑相同的以下代码片段。

文件:my_chatbot.py

说明

在上述代码片段中,我们定义了一个变量,它是“ChatBot”类的一个实例。我们已在该类中包含了各种参数。第一个参数 'name' 表示 Python 聊天机器人的名称。另一个名为 'read_only' 的参数接受布尔值,用于禁用 (TRUE) 或启用 (FALSE) 机器人在训练后学习的能力。我们还包含了另一个名为 'logic_adapters' 的参数,用于指定用于训练聊天机器人的适配器。

虽然 'chatterbot.logic.MathematicalEvaluation' 帮助聊天机器人解决数学问题,但 ` 帮助它从已提供的响应列表中选择完美匹配项。

由于我们必须提供一个响应列表,我们可以通过指定字符串列表来完成,我们可以使用这些字符串来训练 Python 聊天机器人并为特定查询找到完美匹配。让我们考虑以下我们可以训练 Python 聊天机器人学习的响应示例。

文件:my_chatbot.py

说明

在上面的代码片段中,我们定义了一些响应列表来训练聊天机器人。我们还可以通过简单地键入“ListTrainer”的实例并向其提供字符串列表来创建和训练聊天机器人,如下所示

文件:my_chatbot.py

说明

在上面的代码片段中,我们创建了 ListTrainer 类的一个实例,并使用 for 循环遍历响应列表中的每个项目。

现在,Python 聊天机器人已准备好进行通信。

与 Python 聊天机器人交流

我们可以使用 get_response() 函数与 Python 聊天机器人进行交互。让我们考虑以下程序执行来理解它。

输出

# starting a conversation
>>> print(myBot.get_response("Hi, there!"))
Hi
>>> print(myBot.get_response("What's your name?"))
I'm Sakura. Ask me a math question, please.
>>> print(myBot.get_response("Do you know Pythagorean theorem"))
a squared plus b squared equals c squared.
>>> print(myBot.get_response("Tell me the formula of law of cosines"))
c**2 = a**2 + b**2 - 2*a*b*cos(gamma)

说明

上述程序执行告诉我们,我们已经成功地使用 chatterbot 库在 Python 中创建了一个聊天机器人。然而,还需要理解的是,使用 Python 的聊天机器人可能不知道如何回答所有查询。由于它的知识和训练仍然非常有限,我们必须给它时间并提供更多训练数据来进一步训练它。

使用语料库数据训练 Python 聊天机器人

当我们进入在 Python 中创建聊天机器人的最后一步时,我们可以利用当前的语料库数据来进一步训练 Python 聊天机器人。

让我们考虑以下示例,使用机器人本身提供的语料库数据来训练 Python 聊天机器人。

文件:my_chatbot.py

说明

在上面的代码片段中,我们从 chatterbot.trainers 模块导入了 ChatterBotCorpusTrainer 类。我们为聊天机器人创建了一个该类的实例,并将训练语言设置为英语。

此外,从最后一条语句中,我们可以观察到 ChatterBot 库提供了多种语言的此功能。因此,我们还可以指定我们喜欢的语言的语料库子集。因此,我们的 Python 聊天机器人已成功创建。

以下是 Python 聊天机器人项目的完整代码。

完整项目代码

文件:my_chatbot.py