快来!建立你的第一个Python聊天机器人项目
副标题[/!--empirenews.page--]
利用Python,我们可以实现很多目标,比如说建立一个你专属的聊天机器人程序。 聊天机器人程序不光满足个人需求,它对商业组织和客户都非常有帮助。大多数人喜欢直接通过聊天室交谈,而不是打电话给服务中心。 Facebook发布的数据证明了机器人的价值。每月有超过20亿条信息在人和公司之间发送。HubSpot的研究显示,71%的人希望从信息应用程序获得客户支持。这是解决问题的快速方法,因此聊天机器人在组织中有着光明的未来。 今天要做的是在Chatbot上建立一个令人兴奋的项目。从零开始完成一个聊天机器人,它将能够理解用户正在谈论的内容并给出适当的回应。 先决条件为了实现聊天机器人,将使用一个深度学习库Keras,一个自然语言处理工具包NLTK,以及一些有用的库。运行以下命令以确保安装了所有库: pip installtensorflow keras pickle nltk 聊天机器人是如何工作的?聊天机器人只是一个智能软件,可以像人类一样与人互动和交流。很有趣,不是吗?现在来看看它们是如何工作的。 所有聊天机器人都基于自然语言处理(NLP)概念。NLP由两部分组成: NLU(自然语言理解):机器理解人类语言(如英语)的能力。 NLG(自然语言生成):机器生成类似于人类书面句子的文本的能力。 想象一个用户问聊天机器人一个问题:“嘿,今天有什么新闻?” 该聊天机器人就会将用户语句分解为两个部分:意图和实体。这句话的目的可能是获取新闻,因为它指的是用户希望执行的操作。实体告诉了关于意图的具体细节,所以“今天”将是实体。因此,这里使用机器学习模型来识别聊天的意图和实体。 项目文件结构项目完成后,将留下所有这些文件。快速浏览每一个。它将给开发员一个如何实施该项目的想法。 Train_chatbot.py-在本文件中,构建和训练深度学习模型,该模型可以分类和识别用户向机器人提出的要求。 Gui_Chatbot.py-这个文件是构建图形用户界面用来与训练后的聊天机器人聊天的地方。 Intents.json-Intents文件包含将用于训练模型的所有数据。它包含一组标记及其相应的模式和响应。 Chatbot_model.h5-这是一个分层数据格式文件,其中存储了训练模型的权重和体系结构。 Classes.pkl-pickle文件可用于存储预测消息时要分类的所有标记名。 Words.pkl-Words.pklpickle文件包含模型词汇表中的所有唯一单词。 下载源代码和数据集: mailto:https://drive.google.com/drive/folders/1r6MrrdE8V0bWBxndGfJxJ4Om62dJ2OMP?usp=sharing 如何建立自己的聊天机器人?笔者将这个聊天机器人的构建简化为5个步骤: 第一步:导入库并加载数据 创建一个新的python文件并将其命名为train_chatbot,然后导入所有必需的模块。之后,从Python程序中读取JSON数据文件。 importnumpy as np fromkeras.models importSequential fromkeras.layers importDense, Activation,Dropout fromkeras.optimizers importSGD importrandom importnltk fromnltk.stem importWordNetLemmatizer lemmatizer = WordNetLemmatizer() importjson importpickle intents_file = open('intents.json').read() intents= json.loads(intents_file) 第二步:数据预处理 模型无法获取原始数据。为了使机器容易理解,必须经过许多预处理。对于文本数据,有许多预处理技术可用。第一种技术是标记化,把句子分解成单词。 通过观察intents文件,可以看到每个标记包含模式和响应的列表。标记每个模式并将单词添加到列表中。另外,创建一个类和文档列表来添加与模式相关的所有意图。 words=[] classes= [] documents= [] ignore_letters = ['!', '?', ',', '.'] forintent in intents['intents']: forpattern in intent['patterns']: #tokenize each word word= nltk.word_tokenize(pattern) words.extend(word) #add documents in the corpus documents.append((word, intent['tag'])) # add to our classes list ifintent['tag'] notin classes: classes.append(intent['tag']) print(documents) 另一种技术是词形还原。我们可以将单词转换成引理形式,这样就可以减少所有的规范单词。例如,单词play、playing、playing、played等都将替换为play。这样,可以减少词汇表中的单词总数。所以将每个单词进行引理,去掉重复的单词。 # lemmaztize and lower each word andremove duplicates words= [lemmatizer.lemmatize(w.lower()) forw in words if w notinignore_letters] words= sorted(list(set(words))) # sort classes classes= sorted(list(set(classes))) # documents = combination betweenpatterns and intents print(len(documents), "documents") # classes = intents print(len(classes), "classes", classes) # words = all words, vocabulary print(len(words), "unique lemmatized words", words) pickle.dump(words,open('words.pkl','wb')) pickle.dump(classes,open('classes.pkl','wb')) 最后,单词包含了项目的词汇表,类包含了要分类的所有实体。为了将python对象保存在文件中,使用pickle.dump()方法。这些文件将有助于训练完成后进行预测聊天。 第三步:创建训练集和测试集 (编辑:我爱故事小小网_铜陵站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |