【《机器人对话系统实现案例分析》3100字】_第1页
【《机器人对话系统实现案例分析》3100字】_第2页
【《机器人对话系统实现案例分析》3100字】_第3页
【《机器人对话系统实现案例分析》3100字】_第4页
【《机器人对话系统实现案例分析》3100字】_第5页
已阅读5页,还剩4页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

我国中小企业的技术创新研究机器人对话系统实现案例分析目录TOC\o"1-3"\h\u12064机器人对话系统实现案例分析 1230561.1前端页面实现 1220991.1.1用户注册页面 195411.1.2用户登录页面 2318571.1.3用户交互页面 3157041.2后端服务搭建 3123081.3对话机器人模块实现 5239331.3.1自然语言理解模块 547611.3.2对话管理模块 81.1前端页面实现根据上章对页面的设计,本系统主要利用HTML5以及CSS3来实现了以下三个页面。1.1.1用户注册页面包含了四个输入框,分别是用户名输入,用户邮箱输入,用户密码输入,和重复用户密码输入,以及一个提交按钮(Button)和一个登录跳转按钮,以表单的形式搜集用户信息。用户注册页面如图5-1所示:图5-1用户注册页面本文设计的注册页面,在用户名输入框设计了一个跳转按钮,用css设计了一个图标,用于直接跳转到登录页面。每一个输入框都有输入提示,方便用户填入相对应的信息。1.1.2用户登录页面包含了两个输入框,分别是用户名输入或者用户邮箱输入,用户密码输入,以及一个提交按钮和一个注册按钮,以表单的形式搜集用户信息。用户登录页面如图5-2所示:图5-2用户登录页面本文的登录页面,在密码的输入框同样设计了一个跳转按钮,用css添加了一个图标样式,用于返回到注册的页面。与注册页面相似,每一个输入框都有用户输入提示,方便用户填入相对应的信息。用户可以用注册时的用户名或者是电子邮箱两种方式登录系统。1.1.3用户交互页面本页面使用窗口化设计,调用Rasa提供的的聊天室插件,使用户可以在一个网页聊天室内与对话机器人做交流。用户交互页面如图5-3所示:图5-1用户交互页面交互页面包含一个对话框,一个输入框,一个提交按钮(SUBMIT)以及一个rasa聊天室提供的语音输入识别,但本系统语音输入仅支持英文。用户可以再输入框直接输入对话内容,点击提交按钮与系统交互。1.2后端服务搭建Flask应用创建了三个页面路由,用于页面跳转,分别对应前端的三个web页面。使用Http请求中最基本的Get和Post方法,对数据进行传输。创建了两个Flask-WTF表单,用于用户登录和注册页面的渲染和验证。在第四章服务器设计提到,Flask-WTF里的验证器可以对前端页面传入的表单数据进行验证处理。使用validators库对用户输入的数据例如用户名密码以及邮箱进行格式验证。validators验证各字段如表1.1所示表5-1WTForms的验证器验证器类描述DataRequired检查输入栏是否为空Email检查字段中的文本是否遵循电子邮件ID约定IPAddress验证输入字段中的IP地址是否符合规定Length验证输入字段中的字符串长度是否在给定范围内NumberRange在给定范围内验证一个数字URL验证输入字段中输入的URL本文主要用到的验证器:(1)validators.DataRequired():用于验证表单中收集到用户输入的用户名,密码以及邮箱是否为空(2)validators.Email():用于验证验证表单中收集到用户输入的邮箱是否符合格式规范(3)validators.Length():用于规定用户名和密码长度,验证用户输入的用户名和密码是否符合格式规范判断用户输入后,需要连接mongodb数据库,服务器获取注册用户数据就将注册数据添加到数据库中,登录用户则是做信息查询,将用户输入数据和查询信息做匹配处理,匹配成功返回机器人页面。前端服务器处理流程如图5-4,5-5所示:图5-4Flask服务器处理用户注册流程图5-5Flask服务器处理用户登录流程通过Rasa服务器训练和运行对话系统模型,Rasa-nlu做自然语言处理,Rasa-core做对话管理,框架将训练好的模型部署到指定的端口上,在Rasa-SDK中,编写动作代码,当对话机器人识别到用户意图后,会根据训练的故事模型和规则判断来请求动作服务器的相应动作,并且通过执行动作返回的信息来回复用户。机器人服务器处理流程如图5-6所示:图5-5机器人服务器处理流程1.3对话机器人模块实现1.3.1自然语言理解模块本文采用管道的方法来训练NLU模型,管道作为一条流水线,将各个工作模块集成到一起,在高耦合的条件下一步一步对用户文本输入做分析和训练,最后得出训练的模型。管道模型如图5-6:图5-6管道模型图本文管道组件中采用了MitieNLP作为意图识别的工具,适合小型数据集的执行,从网上找到了开源的基于维基百科和百度训练的中文词向量作为Mitie的训练集,由于是中文环境,Jieba作为分词器将文本切割,这样训练的模型对中文的支持性更好。实体提取方面则用了机器学习库里的SklearnIntentClassifier作为实体分类器,它是Sklearn基于支持向量机和BiLSTM模型提供的实体提取服务,具体流程图如5-7所示:图5-7BILSTM-CRF模型如上图所示模型的处理流程:(1)预处理的文本通过前文介绍的序列标注的标准标记,“演员/S刘德华/S的/E作品/O有/O?”。(2)标注句子向量化得到每个词的词向量(3)模型在WordEmbedding层把每个单热向量转换成对应中文分词的词向量。(4)将词向量输入到BiLSTMLayer的双向LSTM层,按照每一层的位置拼接得到假设为m维序列的HiddenLayer序列。(5)通过线性层将HiddenLayer序列的m维向量映射到k维的标签集合上,得到句子特征,每一维都可以看作是每个词对不同标签的打分(6)CRFLayer层对整句话进行计算,对句子开头做开始状态标记,对句子结束做结束状态标记。(7)通过Viterbi解码算法求解为了使实体提取具有更好的效果,本文还采用了Rasa自带的同义词组件EntitySynonymMapper来屏蔽同义词。实体提取解决了如何从用户的输入中获取想要的信息,将信息作为实体存储。1.3.2对话管理模块由于在本系统是影视领域下的多轮对话系统,如何维护用户把目标状态的表示和如何准确决策是对话管理的需求。本文使用Rasa框架提供的Rasa-Core作为对话管理模块,它相当于对话机器人的大脑,主要的任务是维护更新对话状态和动作选择,然后对用户的输入做出响应。(1)通过编写Story(故事)来作为机器人的训练数据,训练对话管理模型。故事是用户和人工智能助手之间的对话表示,转换成一定特定的格式,其中用户输入表示为相应的意图(和必要的实体),而助手的响应表示为相应的操作名称。Rasa核心对话系统的一个训练示例称为一个故事。对话样本示例如图5-8所示图5-8故事对话样本示例故事包含了用户输入,机器人的动作和事件响应。用户输入分是否存在实体的两种输入处理,动作则是机器人根据用户意图做出的回应,而事件主要包含了当执行表单动作的时候,对槽值的设置和表单的激活以及注销。(2)通过编写Domain(领域)作为机器人的大脑,它描述了机器人应该知道的所有信息,存储了意图(intents),实体(entities),插槽(slots),以及动作(actions)等信息。意图和实体在NLU模型里面定义,插槽对应实体类型,只是表现形式不同。Domain文件组成结构如表5-2所示:表5-2Domain.yml组成作用intents该字段列举了Bot拥有识别哪些意图的能力session_config该字段描述了一次会话的超时时间和超时后进行下一次会话的行为slots该字段列举了Bot拥有填充哪些槽值的能力entities该字段列举了Bot拥有识别哪些实体的能力actions该字段列举了Bot有哪些可执行的行为forms该字段列举了Bot有哪些formactionresponses该字段列举了当触发某个意图后,Bot能够使用其中的文本自动回复槽值,相当于机器人的内存(memory),它们以键值对的形式存在,用户存储用户输入时比较重要的消息,Slots存储的值就是NLU模型里面提取到的Entities的值,当用户输入中包含可识别的实体时,对话管理模型会自动调用Slot_was_set来向预设的槽位里面设置槽值信息。当需要设置并填充多个slot的时候,激活表单事件来完成,通过表单事件结合预设好的回复来遍历监管所有的slot,当发现需要的slot没有被填充时,会向用户发起询问,通过这种方式来确保用户意图的理解。通过rasa里的Tracker对象作为状态跟踪器,实时获取槽值作为查询信息完成查询动作。Policies作为策略模块,使用合适的策略来预测一次对话后需要执行的下一个动作,预测的原理就是置信度高低,由置信度高的Policy选择合适的Action执行,当两个策略置信度一样时,通过比较优先级高低选择策略。本系统的消息处理流程如图5-9所示:图5-9本系统的消息处理流程将用户输入的输入信息(Message)输入到Interpreter(NLU模块),该模块负责识别用户输入信息(Message)中的"意图(intent)“和提取所有"实体”(entity)数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论