【智能聊天机器人的交互设计8800字(论文)】_第1页
【智能聊天机器人的交互设计8800字(论文)】_第2页
【智能聊天机器人的交互设计8800字(论文)】_第3页
【智能聊天机器人的交互设计8800字(论文)】_第4页
【智能聊天机器人的交互设计8800字(论文)】_第5页
已阅读5页,还剩10页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

智能聊天机器人的交互设计摘要聊天机器人是一种通过自然语言同人进行交流的人机交流对话智能系统,人机之间的对话交流往往都局限于某个领域或者主题。聊天机器人一般都基于刺激——反应原理用户提出一个问题,聊天机器人回答问题或者用户做出某些评论,聊天机器人做出相应的反应。为了增加对话的连续性,聊天机器人往往还会在聊天过程中主动向用户提出新的问题。通常,聊天机器人都含有一个聊天知识库以及对话控制模块,聊天知识库就像聊天机器人的大脑,存储着回复用户输入的聊天知识,而对话控制模块则用于控制对话进程。一般而言,典型的聊天知识库都由一系列的模板组成,模板用于匹配用户的输入并根据一定的规则产生相应的机器人回复。针对互联网检索技术在专业领域知识查询存在的相关信息过多、需人工筛选的问题,基于聊天机器人发展现状,引入本体技术作为聊天机器人的规则库存储载体;基于本体规则库的树形层次结构,设计规则匹配算法;通过系统规划和模块划分,构建一款既能聊天又能解答气象专业知识的聊天机器人。对聊天机器人在专业领域的应用和发展有一定的促进作用,为领域知识共享和获取提供一个便捷快速的平台。关键词:聊天机器人,规则匹配算法,行为设计目录TOC\o"1-3"\h\u25141绪论 18461.1研究背景 189641.2国内外相关技术研究现状 122551.2.1问答系统概述 131591.2.2基于相关度计算的排序方法 361331.3研究意义及目的 4214152聊天机器人概述 5249242.1聊天机器人系统的定义 583332.2对话理解的处理流程 5271342.2.1问题分类 5309312.2.2语法分析 6190152.2.3关键词抽取 7239992.3答案产生部件 7181303智能聊天机器人的设计 9123783.1智能聊天机器人应用的整体设计 961243.2智能聊天机器人程序实现过程 10321043.2.1智能聊天机器人程序布局设计 1077613.2.2智能机器人服务程序各功能在Android终端的实现 1155483.3程序测试与结果 12304064结语 1215781参考文献 131绪论1.1研究背景近年来,聊天机器人受到了学术界和工业界的广泛关注。一方面,聊天机器人是图灵测试的一种实现方式;另一方面,微软推出了基于情感计算的聊天机器人小冰,百度推出了用于交互式搜索的聊天机器人小度,进而推动了聊天机器人产品化的发展。聊天机器人系统可看作是机器人产业与“互联网+”的结合,符合国家的科研及产业化发展方向。随着聊天机器人研究的广泛开展,未来的研究将着眼于以下三方面:1)端到端:得益于深度学习技术的发展,已有学者开始着手研究端对端的对话系统[14],即利用统一的模型代替序列化地执行自然语言理解、对话管理和自然语言生成的步骤,从用户的原始输入直接生成系统回复。2)从特定域到开放域:随着大数据时代的到来,一方面,使得开放域的聊天机器人系统得以获取丰富的对话数据用于训练,另一方面,在大数据上可以自动聚类或抽取对话行为等信息,避免繁杂的人工定义。3)更加关注“情商”:如果说传统的聊天机器人关注的是“智商”,即聊天机器人的信息和知识获取能力的话,那么今后的聊天机器人研究则更加注重“情商”,即聊天机器人的个性化情感抚慰、心理疏导和精神陪护等能力。相信在不久的将来,一个能够让人们与之无所不谈的高“情商”聊天机器人将走入我们的日常生活,成为我们的朋友、同事甚至是家人。1.2国内外相关技术研究现状1.2.1问答系统概述60年代初,很多关于人工智能的研究才刚刚起步,当时人们就提出让计算机通过自然语言来回答同样是拿自然语言描述的问题,即自动问答。到了80年代,问答系统在当时的研究领域掀起了一股浪潮,热极一时,但是,由于技术发展的限制,大部分的研究都是限定在特殊领域,因此自动问答一直被用来提供特定领域下的垂直检索服务。此后,伴随着信息检索技术的普及,问答系统受到了研究领域空前地冷落。虽然信息检索技术如今已经变得很成熟,像谷歌、百度等搜索引擎也有大量的用户,但是随着互联网的快速发展以及数据量的激增,信息检索技术已经渐渐满足不了人们对获取信息的需求。总结起来,目前搜索引擎技术主要存在以下两个方面的问题:返回的是与查询相关的网页集合,并非用户所需的直接答案,因此还需要去逐个验证返回网页的相关性,并从中获取自己所需信息;(2)查询主要以关键词为主,若输入自然语言检索结果往往不尽如人意。因此若用户的检索需求比较复杂,则对于一个不具备计算机背景的人来说,很难写出合适的表达式。因此,问答系统重新成为了近年来的热门研究领域。最早的在线问答系统是由美国麻省理工大学BorisKatz等人开发START系统,它自90年代开发完成到现在,已经累计回答了将近一百万的问题,其中涉及人们日常生活或者文化经济等各个领域。AskJeeves作为一个早期推出的开放领域问答系统,它和START系统最大的不同就是开创性的提出,返回的答案并不一定要短小精悍,而可以是一篇文档,让检索能力更强大的用户从中找到答案。近年来IBM公司一直在致力于研发大型的问答机器人,其最新研制的Watson问答机器人,它面向开放领域,在美国的智力问答真人秀节目“Jeopardy!”中打败所有选手获得冠军。Watson机器人的答案排序采用IBM提出的DeepQA(深度问答)架构,DeepQA架构在答案生成及排序方面相比传统方法做了大量创新与改进,并利用多达2880个Power7处理器以及15TB的内存,加之IBM强大的多核技术,Watson机器人可以从庞大的多源知识库中选取候选答案,并利用复杂的甄选技术对候选集合进行多个环节的处理与过滤,最终得到非常精确的答案作为返回值。由于智力类问答节目的回答要求是唯一以及精准的,这对问答系统返回答案的可信度就有了相当大的依赖,因此Watson在答案可信度计算与排序方面采用的方法将对本课题有极大的指导与借鉴意义。问答系统的系统结构一般如图1-1所示:图1-1自动问答系统结构问题处理模块的作用是对输入问题进行预处理,一般包括分词、过滤停用词以及同义词扩展等操作,优秀的预处理方法会使问题过滤掉冗余、无用的信息同时不失去其他有用的部分。此模块的功能是将用自然语言表达的问题转化为问答系统可以理解的输入;信息检索模块从构建好的知识库(一般以数据库的形式保存)中检索出于问题相关的答案或文档集合供答案抽取模块作进一步处理。该模块既要保证检索的效率还要保证返回答案的全面性;答案抽取模块从信息检索模块返回的相关集合中进一步抽取出最直接与问题相关的答案,常见的方法是对相关答案与问题进行相关度计算并排序,最终返回排在前面的一个或N个答案。1.2.2基于相关度计算的排序方法由于答案排序直接决定问答系统对用户的返回,是影响系统性能的重要因素,一种好的答案排序策略能使问答系统返回用户最需要的答案,从而使系统备受青睐;而缺乏考究的答案排序方法可以使问答系统的返回变的毫无头绪,即使此系统的其他性能非常出色。问答系统的输入一般为一个问题或查询,输出的答案则常为语句或文档。无论答案有多长,或者问题有多短,它们都属于文本的范畴。因此判断答案与问题是否相关最终衍化为判断两段文本是否相关,文本相关度计算占据了答案排序技术的主要方面。总体来讲,答案排序中常用的相关度计算方法包括三个方面:(1)基于查询词的相关度计算;(2)基于句法的相关度计算;(3)基于语义的相关度计算。基于查询词的相关度主要计算查询中每个词语的TF值和IDF值,其中TF值代表查询词在答案中出现的频率,而IDF值表示在一个答案中出现次数多的词语往往在其他答案中也会较多,因此该词语不具备区分度;基于句法的相关度主要计算查询与答案在句型、编辑距离等方面的相似度;基于语义的相关度主要计算问题和答案在语义层面上的相似度,也是判断句子相似度的重要方法。基于查询词的相关度计算虽然很实用,操作起来也很简单,但是由于没有进行更深层次的考虑,对于自然语言描述的句子缺乏准确度;基于句法的相关度在基于查询词的基础上增加了一些判断信息,但仍然缺乏对语义层次的理解,毕竟语义才是描述自然语言最为有效的手段;基于语义的相关度计算从语义层次上对两个句子的相似与否进行判断,在答案排序中占有重要地位,然而无论任何方法都不可能面面俱到,因此单纯依赖语义相似度计算并不能得到很好的排序结果。为此,人们提出了基于多特征融合的答案排序技术,即综合多种相关度计算方法,并为每一种方法赋予一定的权重,让各个方法分别解决不同方面的问题,各司其职,以达到更好的排序性能。但是这种方法的致命缺陷就是权重参数的调试需要人工依靠经验来完成,一旦相关度维数较多,人工调参的难度将远远超出想象。因此,基于监督学习的排序技术就应运而生,该方法将传统的排序问题转化为机器学习中的分类问题,巧妙的解决了多特征下需要人工调参的困难。1.3研究意义及目的近几年,移动互联网快速发展,截至2015年12月,我国手机网民规模达6.20亿。基于庞大的网民人数,各种基于Android平台的应用软件也相应产生,影响着人们的生活,最为明显的是“互联网+”的出现和智能聊天机器人的创新结合,为广大的互联网用户带来了全新的应用体验,其中图灵机器人作为全球领先的中文语义与认知计算平台就显得尤为突出。自然地,图灵机器人接口API也得到了人们的广泛关注。API又称应用程序编程接口,英文全称为ApplicationProgrammingInterface,它是一些提前就定义好的函数,其作用在是某软件或硬件的基础上,不需要访问源码又不具体了解工作细节的前提下,提供应用程序与开发人员访问一组例程的能力。程序开发人员基于此接口大大减少程序代码编写量,但在程序功能实现方面带给用户更为全面、丰富和方便的体验与享受。本文也将秉承这个理念,基于Android移动平台,结合API接口设计实现了一个集实用工具、实时信息、休闲内容、智能交互于一体的图灵机器人手机应用程序。经过测试表明,该软件具有一定的趣味性和实用性。2聊天机器人概述2.1聊天机器人系统的定义图2-1显示了一个典型的聊天机器人系统架构,它有3个部件。自然语言理解部件从用户输入的文本中提取信息。而答案产生部件根据提取到的用户信息和对话状态产生对话回答反馈给用户。对话管理器控制整个过程,它是和任务管理器一起合作以达到这个目标的。任务管理器管理着庞大的知识库。图2-1典型的聊天机器人系统架构2.2对话理解的处理流程对话系统中的自然语言理解部件的目的是对输入的问题产生一个合适的语义表示,以使得可以调用后续的对话任务分析部件并最终生成的回答。最常见的语义表示方式是一个或多个关键字。产生语义表示的典型过程包括:问题分类、语法分析、命名实体识别、关键同抽取、关键词扩展等。2.2.1问题分类问题分类在聊天机器人系统扮演着一个很重要的角色,尤其是在老一代的聊天机器人系统架构中,它们通常会对不同类型的问题,采用不同的处理方法。基本出发点是把与体育相关的问题,划分到与体育相关的知识库中去寻找答案,而与食物相关的问题,划分到与食物相关的知识库中去找答案。这种方法对特定领域的聊天机器人来说是有效的,因为这样的机器人所管理的知识库比较小,知识分类也比较明确。而对于开放领域的聊天机器人来说,传统的问题分类方法就不能太适应了,因为用户输入的问题很可能同时属于多种类型。取而代之的方法是,我们不能过于依赖问题分类来把问题定向到特定的处理模块,而是应该把问题类型作为一个特征来帮助从候选答案中找到答案,这种方法对于FAQ类型的知识很有效。下面说明一下流程:从用户输入的问题中提取到关键词之后,输入搜索引擎,得到一个搜索结果集合。每一个搜索结果的标题是一个问题,文档内容是此问题对应的答案。如果搜索结果中的问题的类型与用户输入问题中的类型相同,意味着两者要表达的东西更为相同。目前大多数的问答系统都是按照预定好的类别进行分类的,而分类的依据是句子中的特定模式、疑问词和一些量词。表2-1给出了常见的问题类型。问题类型疑问句例子询问人谁谁是李刚的妻子?询问时间什么时候/何时/那年...奥巴马什么时候成为美国总统的?询问数量多少/多大/多高狗有多少条腿?询问定义是什么/什么是硫磺是什么?询问地点或位置哪/哪里/什么地方北京在中国的哪个地方?询问原因为什么太阳为什么会发光发热?其它2.2.2语法分析语法分析(Syntacticanalysis)是指根据某种给定的形式文法对由单词序列(如英语单词序列)构成的输入文本进行分析并确定其语法结构的一种过程。使用计算机程序来解析用自然语言描述的句子是一件困难的事情,原因是人类语言的结构中存在大量的歧义性。人类语言结构有无数种可能性情况可以构造句子来传递含义,但仅有少数与特定情况有密切关联。为了解析自然语言数据,研究人员必须首先同意所使用的语法。语法的选择是受限于语言学和计算问题的;例如一些解析系统使用的词汇功能语法,但在一般情况下,给定类型的语法解析是NP完全问题。头驱动的短语结构语法在语法解析社区中是一种流行的语言的表现形式,但其他研究工作主要集中在不太复杂的形式主义,如在宾州树库中使用的。浅层句法分析的目的是找出主要的成分的边界,如名词短语。为避免语言上争论的另一种流行的策略是依存语法解析。例如对于“北京是中国的首都”这句话经过浅层语法分析的结果如图2-2:图2-2句法分析例子2.2.3关键词抽取因为搜索引擎期望的输入是关键词列表,而聊天机器人系统拿到用户的输入是问题,所以我们需要从用户输入的问题中提取出关键词来作为查询串。抽取出的关键词应该包含足够的信息来表达用户的意图,因此问题中的一些停用词等没包含多少信息的词语不应该被当作关键词,例如语气词:“了,吧,的”和一些介词。疑问词等词就应收被过滤掉。而通常,句子中的名词和动词包含最丰富的信息。形容词和副词也很重要,因为很多时候是由这两种词来决定最后的答,例如,用户的问题足“世界上最高的楼在那个国家”,如果答案是第三高的楼明显就不是用户所需要的答案。在本研究中,关键词抽取是在输入问题的语法分析结果卜进行的:首先提取问题中的主语,之后提取修饰主语的左修饰v司,之后提取谓语,以此类推。得至一个候选关键词表之后,我们会对其中的名一词进行提权一级,而对动词降权一级。2.3答案产生部件对话系统的答案产生模块选择要表达给用户的概念,考虑如何使用词冶表达这些概念,并使用句法使这些词所表达的意思具有实际意义。答案产生任务可以分为两个子任务:说什么,怎么说。如图2-3所示。内容计划器模块解决第一个子任务,决定要向用户表达什么内容,是问一个问题还是呈现一个答案等等。在大多数对话系统中,内容计划器部件是融合到对话管理器中的,我们在下面讨论对话管理器时再做讨论。图2-3用于对话系统的自然语言产生器的架构图语言产生模块解决第二个任务,包括选择句法结构,用来表达意思所用到的词。语言产生模块通常有两种实现方法。最简单的也是最常用的方法是,向用户表达的句子的大部分词都是由对话系统的设计者提前设计好的。这种方法被称为基于模板产生方式,被这些所创建出的句子通常叫做提示台一词,虽然模板中大多数词是固定的,模板可以提供一些变量,使得语言产生模块可以填充适当的信息,例如:"WhattimedoyouwanttoleaveCITY-ORIG?”和“WillyoureturntoCITY-ORIGfromCITY-DEST?对于语言产生的另外一种方法依赖于自然语言产生技术。首先,对话管理器会对要表达的一话语含义建立一个内部表示,之后将这个表示传递给全功能的语言产生器。这样一个全功能语言产生器通常有三个子部件,一个句子计划器,一个表面实现器,一个韵律分配器。图2-4显示了这种类型的语言产生器的一个架构图。想了解更多关于自然语言产生器及其在对话系统中的使用的信息,请参考。在基于模板的语言产生方式中,有许多重要的必须实现的交谈和对话限制因索,包括一个交谈必须前后保持一致和产生的句子必须减轻用户的注意负担等。图2-4一个简单的有限状态对话管理器架构系统这样控制整个交谈过程,通常这叫做系统主动权或者单主动权系统。有限的系统主动权状态有限对话管理器架构有这样的优势:系统永远知道用户正在回答的问题。这样对于系统理解用户正在交谈的内容简单得多。但纯粹的系统主动权对话管理器架构可能很受限,即使对于简单的航空票务对话系统。系统的设计者可能原意是通过一次问一个简单问题,渐进地问多个问题来完全了解用户的意图的,但有时用户没那么多耐心而是一次把意图用一个句子表达出来,这样,对话系统就不能理解用户在说什么,导致两者关系很紧张。因此,大多数系统为了避免系统主动权有限状态方法,使用的是另外一种混合主动权方法。在混合主动权系统中,交谈的主动权可以在系统或者用户之间转移。常见的混合主动权对话架构依赖于对话帧的结构来指导对话的进行。基于帧或基于表单的对话管理器通过向用户问问题来填写帧中的槽,但允许用户往帧中的其它槽填写信息来主导系统。每一个槽可以与一个要问用户的问题关联。3智能聊天机器人的设计3.1智能聊天机器人应用的整体设计本次设计的目的是为用户提供一个专属个人的智能聊天服务,主要包括以下几个核心功能:智能交互:智能交互是智能聊天服务最基本的功能。程序主要在中文环境下运行,为用户随时随地提供聊天服务,以满足用户需求。智能交互含有智能聊天、智能问答、语义解释三个模块。用户通过这个功能可以随时随地聊天,再也不用担心自己的聊天信息打扰到别人,或者在想找人聊天的时候没有人可以聊,无处倾诉。(2)实用工具:为用户提供计算器、百科、英汉互译、歌词、区号等查询工具,用户不用特意去百度或搜索,利用聊天的方式,轻松愉快地解决问题,便捷又有趣。(3)实时信息:为用户提供天气、空气质量、气象指数等实时信息,用户可通过该功能及时的掌握周围的天气状况,方便、安全的安排出行,避免因为不了解天气给出行带来的麻烦。(4)休闲内容:休闲内容包括讲笑话、讲故事、诗词等,让用户在匆忙快速的都市生活中得以片刻放松,为紧张的生活增添一些别样的乐趣。整个智能机器人服务程序的流程如图3-1所示:图3-1智能聊天机器人服务程序整体流程3.2智能聊天机器人程序实现过程在使用免费API接口提供的各种功能之前,先要在图灵官网申请一个APIKEY,才能在程序中进行API接入。privatestaticStringAPI_KEY="534dc342ad15885df-fc10d7b5f813451";privatestaticStringURL="/openapi/api";3.2.1智能聊天机器人程序布局设计程序开始进入页面的布局:主界面消息的显示是一个ListView,不过这个ListView中的Item有两种风格,需要重写两个方法,一个是左边消息,一个是右边的消息;再加一个消息框和发送消息的按钮。程序中还有一个发送方和接受方的页面布局,里面各一个TextView,来发送和接受消息。布局效果如图所示:图3-2智能聊天机器人布局效果图3.2.2智能机器人服务程序各功能在Android终端的实现智能聊天机器人程序的各个功能在Android终端的实现基本一样。首先在程序中要有一个MainActiv-ity,MainActivity中定义handleMessage()、onCreate()、initView()、Thread()和sendMessage()方法;除此之外,还需要创建一个ChatMessageAdapter适配器,并在适配器中定义getView()、getItem()、getItemViewType()、Lay-outInflater,程序先调用LayoutInflater,找到并将将lay-out/下的xml布局文件实例化;再进行初始化界面,用findViewById()找到xml布局文件下的widget控件,将一个没有被载入或者想要动态载入的界面调用Lay-outInflater.inflate()载入,然后调用MainActiviyt.findView-ById()方法来获得其中的界面元素。mChatView=(ListView)findViewById(R.id.id_chat_listView);mMsg=(EditText)findViewById(R.id.id_chat_msg);mDatas.add(newChatMessage(Type.INPUT,"我是雪人,很高兴为您服务");然后进入程序的主界面,在消息框里输入内容,使用SendMsg静态方法发送消息,在发送请求的过程中,程序也调用Thread()会判断网络是否开通,从而给出相应的提示信息。若网络开通,发送的消息访问API,也就是一个Get请求,在这里用HttpUtils封装了一个用于访问API的工具类。在收到请求之后,API接口根据请求内容的信息类型将返回应数据信息,其中getItemViewType()中定义接受信息为1,发送消息为0:publicintgetItemViewType(intposition){ChatMessagemsg=mDatas.get(position);returnmsg.getType()==Type.INPUT?1:0;}getItemViewType根据当时Item的position决定返回不同的整型变量。然后在getView中,根据消息的类型调用findViewById()加载不同的Item布局。if(chatMessage.getType()==Type.INPUT){convertView=mInflater.inflate(R.layout.main_chat_from_msg,parent,false);viewHolder.createDate=(TextView)convertViewfindViewById(R.id.chat_from_createDate);viewHolder.content=(TextView)convertViewfindViewById(R.id.chat_from_content);convertView.setTag(viewHolder);}而返回的数据信息也直接封装成ChatMessage,并显示在界面上,最后用onCreate()保存信息。当下次再使用时,打开程序,程序初始化界面,再依照上面的步骤运行,实现智能聊天功能。3.3程序测试与结果在vivo、华为、小米3等智能手机上对智能聊天机器人的各个功能进行了测试,各个功能测试结果如图2所示。测试结果显示,程序加载流畅且稳定,各个功能模块正常运行,能够满足用户对

温馨提示

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

评论

0/150

提交评论