基于Pytorch的聊天机器人设计和实现

 2023-01-18 21:20:03

论文总字数:17188字

摘 要

随着社会的发展速度越来越快,互联网越来越发达,人们的交流成本也是越来越低,看似人们可以更加轻松的认识新朋友,维护和老朋友的关系,但是还是有许多人觉得自己越来越孤独了。所以一个基于pytorch的聊天机器人,能够帮助那些感到孤独的人,在他们孤独又担心没有人交流的时候,能够很快地回复,帮助他们排解忧愁。

为了实现以上功能,本次项目设计和实现了一个基于pytorch框架基础上,采用pycharm这个开发软件,使用seq2seq模型开发与设计,能够自己预处理语料的聊天机器人。

本次项目在闲聊方面准确度尚可,但还需在知识问答方面进一步改进和提高。

关键词:聊天机器人;pytorch;seq2seq模型;语料预处理

Design and implementation of chat robot based on Pytorch

Abstract

As society develops faster and faster, the Internet is more and more developed, and people’s communication costs are getting lower and lower. It seems that people can more easily meet new friends and maintain relationships with old friends, but there are still many people. I feel more and more lonely. So a pytorch-based chatbot can help those who feel lonely, and when they are lonely and worried about no one communicating, it can quickly reply and help them resolve their worries.

In order to achieve the above functions, this project designed and implemented a chat robot based on the pytorch framework, using the development software pycharm, using the seq2seq model to develop and design, and capable of preprocessing the corpus by itself.

The accuracy of this project is acceptable in small talk, but further improvement and improvement in knowledge question and answer is needed.

Keywords: chat robot; pytorch; seq2seq model; corpus preprocessing

目录

基于Pytorch的聊天机器人设计和实现 I

摘要 I

Abstract II

第一章 绪论 1

1.1课题背景与研究意义 1

1.2国内外研究现状 1

1.3本文的主要工作 2

1.4论文组织结构 2

第二章 聊天机器人相关技术介绍 3

2.1 seq2seq模型简介和结构 3

2.2 数据预处理技术 3

2.2.1语料库 3

2.2.2语料预处理 3

2.3本章小结 4

第三章 系统需求分析 5

3.1用户需求分析 5

3.2功能需求分析 5

3.3 非功能需求分析 5

3.3.1判断机器人回答的准确性 5

3.3.2系统响应时间不超时 5

3.4本章小结 6

第四章系统设计 7

4.1系统总体设计 7

4.2系统详细设计 7

4.2.1模块导入 7

4.2.2数据预处理 8

4.2.3前端网页设计 8

4.2.4 模型训练的过程 10

4.3本章小结 10

第五章 系统实现与测试 11

5.1 系统实现工具与环境 11

5.1.1PyCharm 11

5.1.2Web端技术 11

5. 2核心部分实现过程: 11

5.2.1数据清洗、预处理: 11

5.2.2模型训练: 12

5.2.3回答预测: 12

5.2.4可视化界面设计: 13

5.3 系统主要运行界面: 14

5.4 系统测试: 16

5.4.1 系统测试环境与工具 16

5.4.2 系统功能测试: 17

5.4.3 系统非功能测试: 19

5.5 本章小结 19

第六章 总结 20

6.1 总结 20

6.2 展望 20

第一章 绪论

1.1课题背景与研究意义

聊天机器人,是一种通过自然语言模拟人类进行对话的程序。

1950年,图灵(Alan M. Turing)在《Mind》上发表了文章,开篇就提出了”机器能思考吗?”的问题,由此打开了对聊天机器人的研究的序幕。他提出的图灵测试,其中验证机器能否思考的想法成为了经典之作,为了纪念他提出了人工智能的终极目标的成就,图灵本人也被称为”人工智能之父”。

就在16年后,最早的聊天机器人ELIZA[1]诞生了,它由美国麻省理工的约瑟夫·魏泽鲍姆开发出来,用于在有内在不良状态的病人临床治疗中。虽然ELIZA的只实现了由关键词匹配及人工编辑的回答规则,但ELIZA的在临床治疗中的表现却惊诧了魏泽鲍姆本人。在之后由他撰写的《Computer Power and Human Reason》这本书中,他对人工智能的特殊情感也溢于言表。

1988年,加州大学伯克利分校的罗伯特·威林斯盖等人开发了名为UC(UNIX Consultant)[2]的聊天机器人系统。从名字中可以看出,UC是一款教授UNIX操作系统使用方法的闲话机器人。它具备了分解使用者所说的话、明确使用者操作的对象、给出方法用以满足使用者需求、决定需要与使用者交流的内容、以英语生成最终的对话内容以及针对使用者对UNIX系统的熟悉程度进行建模的功能。如果说ELIZA打开了通往智能聊天机器人时代的大门的话,那么使UC聊天机器人的智能化程度得到飞速发展。

为快速推动图灵测试的发展进程,20世纪90年代,美国的科学家、慈善家休勒布纳( hugh g . loebner )创设了名为勒布纳大奖( loebner prize )的年度计划,该大奖由10万美金的奖品及一块镶嵌在勒布纳和图灵头像上的金牌组成。勒布纳奖的设立旨在嘉奖首个与人类回答无差别的聊天机器人系统,并以此推动图灵测试及人工智能的发展。

在勒布纳奖的推动下,聊天机器人的研究迎来了新的高峰,这其中较为代表性的聊天机器人系统是ALICE。受到ELIZA聊天机器人的启发,理查德·华勒斯博士在1995年开发了ALICE系统。从1998年起ALICE代码对人们开放,并曾经在此后10年之间三次问鼎勒布纳奖。截止2020年,ALICE项目的代码经过全世界超过500名程序员的更新。不仅如此,随着ALICE一同发布的AIML目前被广泛应用在移动端虚拟助手的开发中。尽管ALICE采用的是启发式模板匹配的对话策略,但是它在同类型聊天机器人的使用性能中仍受到最高的赞誉。

1.2国内外研究现状

在人工智能领域,智能聊天机器人的研究已经有了很长的历史 [3] ,它们大多想要钓起使用者持续聊天的想法,惯用的手段是主导谈话的主题,以此来掌控谈话内容及谈话进度。但受制于当时计算能力和知识库的不完备,最初的研究进展缓慢,限制了有关人工智能的实验规模,因此设计者们还会为了减少错误及时完成项目而将谈话的内容局限在某一个特定的专家系统领域。

到了21世纪初,信息检索技术的发展,使百度、谷歌等互联网查询公司的计算能力得到了飞速的发展,另外加上互联网业的蓬勃发展和移动终端的迅速普及,使得智能聊天机器人一下子被备受大众专注,人们对研究进展也异常敏感 。

人工智能不仅仅是很多人认为的娱乐工具,还广泛应用到了教育领域,电商客服领域,公共场所服务领域、智能设备上的语音助理。

由于国外在人工智能聊天机器人及问答系统方向的研究起步较早,因而也产生了一系列比较成熟的聊天系统以供用户使用,比如苹果Siri,脸书Messenger,谷歌Assistant[5]等。

这些跨平台型人工智能机器人,都借助着本公司在大数据、自然语义分析、机器学习和深度神经网络方面的技术积累,精炼形成自己的真实有趣的语料库,在不断训练的过程中通过理解对话数据中的语义和语境信息,从而实现超越一般简单人机问答的自然智能交互,为用户带来方便与乐趣。[6]

相比国外,我国国内在智能聊天领域的投入规模和研究水平上与国外的都有着不小的差距,研究成果也并不显著。但是还是有一系列高校在此领域成绩显著,位于前列的主要有清华大学、中科院计算所、香港大学、香港中文大学和哈工大(benben)[7]等。

随着现在电子商务的发展,诸如淘宝之类的电商平台上的店家数量也在不断增加,原始的人工客服在重复的工作和越来越高的人工成本面前不再具有优势。智能客服的加入使得电商客服领域的人工成本极大降低,处理速度也大大加快,使得客户满意度提高。因此,目前的学术业和工业界都在对聊天机器人领域持续投入,都在争取领先地位。

1.3本文的主要工作

本文主要工作是

1.对网络上下载的 语料库进行数据预处理,把处理好的数据传给模型

2.定义一个seq2seq模型用来解决输入与输出之间序列不同的问题;

 3.定义训练模型,通过计算masked的loss确认在语义上哪个预测的回答更好;

4通过模型测试对设计的机器人进行评测,检测聊天机器人满足了哪些设计要求。

1.4论文组织结构

第一章为绪论部分,论述课题背景和研究意义,并详细介绍了聊天机器人的国内外研究现状,交代了本文的主要工作内容以及论文的组织结构。

第二章为聊天机器人相关技术介绍,主要涉及到了本次设计使用到的seq2seq模型的简介和结构以及数据预处理技术。

第三章为系统需求分析,主要分析了用户对聊天机器人的需求以及对聊天机器人的性能上的需求分析。

第四章是系统设计。先是对系统的总体结构进行设计,先是数据预处理,再建立序列到序列模型,然后将处理好的数据导入模型,进行训练,最后在可视化界面通过闲聊的方式输出。

第五章先是介绍了实现系统的编程软件pycharm以及模块运行的系统环境配置,然后贴出并解释了核心部分代码的实现过程,截了几张系统主要核心代码运行界面的截图。最后使用系统进行一组简单的测试,对系统的实现结果进行简单的总结。

第六章

总结和展望,对本文内容进行了总结,并根据当前聊天机器人系统中存在的问题提出展望和建议。

第二章 聊天机器人相关技术介绍

2.1 seq2seq模型简介和结构

Seq2Seq 是一种特殊的循环神经网络 。它在自然语言处理中具有十分重要的地位,并且对我们使用有着巨大的用处,它使得我们能够使用长度不同的输入和输出序列,被广泛应用在人工智能领域,例如聊天机器人。

2.2 数据预处理技术

2.2.1语料库

人们为了降低难度,通常用文本内容代替在自然语言处理中大规模的语言,并把它称作语料。并依照日常生活中的对话关系替换文本中的顺序。语料库就是语料大批量的堆砌。

语料库有许多特别之处。例如:语料中的话在人们的日常对话中随处可见。

语料是计算机中承载语言知识的本源,所以不是我们熟悉的语言知识。

经过处理后,语料库中的资源才能真正被我们加以利用。

另外,因为模型的预测结果是模型在语料库被处理过后训练的结果,所以语料库的处理直接决定了最后对话的质量。

这次设计的聊天机器人项目,主要想实现的功能就是电脑能够准确地识别我们输入的语言意思,并及时做出反馈,因此在语料库的选择上主要考虑的是语料的内容是平常的对话,再综合考虑语料数量和质量,我们选择小黄鸡50w分词语料库。

2.2.2语料预处理

语料清洗

在语料中找到我们所需要的东西,把不产生作用的、视为噪音的内容清洗删除,包括对于原始文本提取标题、摘要、正文等信息。常见的数据清洗方式有:自行更新、格式对照、省略和做记号等,或者规则提取内容、查询相似正则表达式、根据词语的使用方式和命名规则实体提取、编写脚本或者代码批处理等。

分词

中文语料数据为一批短文本或者长文本,比如:句子,文章摘要,段落或者整篇文章组成的一个集合。一般句子、段落之间的字、词语是连续的,有一定含义。而进行文本挖掘分析时,我们希望文本处理的最小单位粒度是词或者词语,所以这个时候就需要分词来将文本全部进行分词。

句子规范化

其实这一部分是进一步的数据清洗过滤,将句子规范化,主要处理的内容是分词后的空格,较长的符号以及特殊字符,主要的处理方式包括正则表达式,遍历判断等。

表2.1语料预处理的关键方法

图2.1语料清洗的内容和方法

语料正则化的方法:

取出分词处理后的语料;

将斜杠过滤;

将较多的省略号,/.统统用…代替;

将较多的句号统统用。代替;

将较多的!,?分用!,?代替;

将非中英文的字符以及"。,?!~·过滤;

2.3本章小结

本章主要介绍了毕业设计用到的关键技术以及它们的用法。

第三章 系统需求分析

3.1用户需求分析

用户需求见表3.1

用户

功能

普通用户

当用户对一些客观话题进行论述或者情感表达时,能够得到聊天机器人准确及时的回复,解决遇到的困难。

表3.1用户需求

3.2功能需求分析

功能需求分析主要对聊天机器人回复语的语境、前后语句的关联性和回复的多样性进行。

语境整合

系统需要在训练过程中不断整合物理语境和语言语境来生成人们常用的词汇。在长对话中人们需要进行语句整合,把已经得到过和给出的信息当成已知项。其中最普遍的方法就是在对话中嵌入一个向量,此向量还可能需要整合其它类型的语境数据,例如日期/时间、位置或者用户信息等。

人格一致性与互信息

对于语义类似的输入,不论在何时输入,我们希望智能机器人会有相同的回答,比如“你叫什么名字?”和“你多大了?”等问题。这个目标看似十分容易达成,但是实际上要使模型学会固定的知识或者人格是一个十分困难的研究难题。目前许多的智能聊天机器人系统可以做出语义较为合理的回答,但是却不知道进一步训练生成在语义上同样一致的回复的方法。这一般是由于为了实验效果的增加,训练模型的数据可能来源于不同的用户而导致的。

意图以及多样性

目前普遍的智能问答系统经常会生成“我不知道”或者“太好了”这样的不能针对特定问题的答案。例如,Google的Smart Reply早期版本常常用“我爱你”回复一切不确定的问题。由于生成系统,特别在开放领域,没有被训练成特定意图,只是根据数据和实际训练目标或算法训练的结果,不具备一个令人满意的智能聊天机器人应该有的多样性。

3.3 非功能需求分析

3.3.1判断机器人回答的准确性

为确保用户的使用体验良好,机器人的回答应避免产生答非所问的情况。

3.3.2系统响应时间不超时

为了减少用户等待的时间,保证用户的使用体验良好,系统的响应时间应低于2s

3.4本章小结

本章主要分析了用户的需求、系统的功能需求、非功能需求。

第四章系统设计

4.1系统总体设计

考虑到软件使用复杂程度、电脑配置和代码书写困难程度,本次系统在pycharm上进行编写,python版本为3.6版本。总体上大致可以分为3个模块,分别为数据预处理、训练模型和前端网页设计。

1数据预处理是指在主要的处理前进行的处理,使其满足数据处理模块的要求,在本系统中指的是将语料的预处理。

2训练模型是一个基于 pytorch 的 seq2seq 模型,用于定义神经网络并进行模型计算;

3可视化前端网页是一个用前端框架写的简单的人机交互程序,在运行时能够借助API进行人机对话。

简易的逻辑框架如图4.1所示。

图4.1聊天机器人总体框架

4.2系统详细设计

4.2.1模块导入

Import os 导入标准库os利用其中api

Import sys 当Python执行import sys语句的时候,它在sys.path变量中所列目录中寻找sys.py模块

Import time 时间模块导入时间戳

import torch使用pytorch深度学习框架

import seq2seqModel 导入seq2seq模块。在编码阶段,Seq2seq模型的编码器(Encoder)将输入的序列(比如一个中文句子)编码为一个隐藏层向量。

剩余内容已隐藏,请支付后下载全文,论文总字数:17188字

您需要先支付 80元 才能查看全部内容!立即支付

该课题毕业论文、开题报告、外文翻译、程序设计、图纸设计等资料可联系客服协助查找;