写一个python 聊天机器人

介绍
聊天机器人对企业组织和客户都非常有帮助。 大多数人都喜欢直接从聊天室进行交谈,而不是致电服务中心。 Facebook发布的数据证明了机器人的价值。 每月在人与公司之间发送的消息超过20亿条。 HubSpot的研究告诉我们,有71%的人希望通过消息传递应用程序获得客户支持。 这是解决问题的快速方法,因此聊天机器人在组织中拥有光明的前景。

今天,我们将在Chatbot上构建一个令人兴奋的项目。 我们将从头开始实现一个聊天机器人,该聊天机器人将能够理解用户在说什么并给出适当的响应。

先决条件
为了实现聊天机器人,我们将使用Keras(这是一个深度学习库),NLTK(这是自然语言处理工具箱)以及一些有用的库。 运行以下命令以确保已安装所有库:

如果您想免费学习Python,那么这里是免费学习Python的大师指南。

聊天机器人如何工作?
聊天机器人不过是一款智能软件,可以像人类一样与人互动和交流。有趣,不是吗?现在,让我们看看它们的实际工作原理。

所有聊天机器人都属于NLP(自然语言处理)概念。 NLP由两部分组成:

NLU(自然语言理解):机器理解人类语言(如英语)的能力。

NLG(自然语言生成):机器生成类似于人类书面句子的文本的能力。

想象一个用户向聊天机器人问一个问题:“嘿,今天的新闻是什么?”

聊天机器人会将用户句子分解为两部分:意图和实体。该句子的意图可能是get_news,因为它表示用户想要执行的操作。该实体会告知有关意图的特定详细信息,因此“今天”将是该实体。因此,通过这种方式,可以使用机器学习模型来识别聊天的意图和实体。

项目文件结构
项目完成后,将剩下所有这些文件。让我们快速浏览每个。它将使您了解如何实施该项目。

Train_chatbot.py —在此文件中,我们将构建和训练深度学习模型,该模型可以分类和识别用户对机器人的要求。

Gui_Chatbot.py-此文件是我们将在其中建立图形用户界面以与我们训练有素的聊天机器人聊天的地方。

Intents.json — intents文件包含我们将用于训练模型的所有数据。它包含标签的集合及其相应的模式和响应。

Chatbot_model.h5 —这是一个分层数据格式文件,我们在其中存储了经过训练的模型的权重和体系结构。

Classes.pkl —泡菜文件可用于存储所有标签名称,以便在我们预测消息时进行分类。

Words.pkl — words.pkl泡菜文件包含所有唯一的单词,这些单词都是我们模型的词汇。

下载源代码和数据集:

https://drive.google.com/drive/folders/1r6MrrdE8V0bWBxndGfJxJ4Om62dJ2OMP?usp=sharing

如何建立自己的聊天机器人
我通过5个步骤简化了此聊天机器人的构建:

步骤1.导入库并加载数据
创建一个新的python文件并将其命名为train_chatbot,然后我们将导入所有必需的模块。 之后,我们将在Python程序中读取JSON数据文件。

 

步骤2.预处理数据
该模型无法获取原始数据。 它必须经过大量预处理才能使机器易于理解。 对于文本数据,有许多预处理技术可用。 第一种技术是标记化,其中我们将句子分解为单词。

通过观察intents文件,我们可以看到每个标记都包含模式和响应的列表。 我们标记每个模式并将单词添加到列表中。 另外,我们创建一个类和文档列表,以添加与模式相关的所有意图。

另一种技术是放血。 我们可以将单词转换为引理形式,以便我们可以减少所有规范的单词。 例如,单词play(正在播放),play(正在播放),play(播放),play(已播放)等都将全部替换为play(播放)。 这样,我们可以减少词汇量中的总单词数。 因此,现在我们对每个词进行词素化并删除重复的词。

 

最后,单词包含我们项目的词汇表,而类包含要分类的全部实体。 要将python对象保存在文件中,我们使用了pickle.dump()方法。 这些文件在培训结束后将很有帮助,我们可以预测聊天记录。

步骤3.创建培训和测试数据
为了训练模型,我们将每个输入模式转换为数字。 首先,我们对模式中的每个单词进行词法限定,并创建一个与单词总数相同长度的零列表。 我们将仅对那些在模式中包含单词的索引设置值1。 以同样的方式,我们通过将模式所属的类输入设置为1来创建输出。

步骤4.训练模型
我们模型的架构将是由3个密集层组成的神经网络。 第一层具有128个神经元,第二层具有64个神经元,最后一层将具有与类数相同的神经元。 引入了辍学层以减少模型的过拟合。 我们使用了SGD优化器并拟合了数据以开始训练模型。 完成200个纪元的训练后,我们使用Keras model.save(“ chatbot_model.h5”)函数保存训练后的模型。

 

步骤5.与Chatbot互动
我们的模型已经准备好聊天,因此现在让我们在新文件中为聊天机器人创建一个漂亮的图形用户界面。 您可以将文件命名为gui_chatbot.py

在我们的GUI文件中,我们将使用Tkinter模块构建桌面应用程序的结构,然后我们将捕获用户消息并再次执行一些预处理,然后再将消息输入到经过训练的模型中。

然后,该模型将预测用户邮件的标签,然后我们将从intent文件中的响应列表中随机选择响应。

这是GUI文件的完整源代码。

源码地址:https://data-flair.training/blogs/python-projects-with-source-code/

运行:python train_chatbot.py