1、聊天机器人技术的研究与实现学 生 姓 名: 学 院: 专 业: 班 级: 学 号: 指 导 教 师: 审 阅 教 师: 完 成 日 期: 摘要随着信息技术的发展,随着社会的不断进步,各个领域对信息化需求不断增加,同时智能化水平也在不断提升,计算机已经成为了我们日常生活中必不可少的一样东西,就像一件必不可少的家用电器一样。有了电脑,我们就可以上网看新闻、看视频、玩游戏等,通过电脑来打发我们无聊的时间已经成为了越来越多的人的选择。计算机的用途也在随着信息技术的发展而发展,在上世纪八十年代就诞生了一种可以跟人聊天的智能计算机软件,我们称之为聊天机器人。本文主要介绍聊天机器人技术的研究与实现。本系统在
2、Win 7操作系统下,采用Visual Studio 2012软件开发平台,使用C#语言进行程序编写。通过关键词分句的设计方法进行程序设计,实现了人与计算机的智能对话模式。关键词:聊天机器人;智能计算机;聊天AbstractWith the development of information technology, with the development of society, in all fields of information technology increasing demand, at the same time, the intelligent level is risin
3、g, the computer has become the essential thing in our daily life, as a essential for household appliances. With the computer, we can read news online, watch videos, play games, to send us the boring time by computer has become more and more people choice. The use of computers in along with the devel
4、opment of information technology and development, in the eightys of the last century was born an intelligent computer software can chat with people, we call the chat robot.Research and implementation of this paper mainly introduces the chat robot technology. The system in Win 7 operating system, usi
5、ng Visual Studio 2012 software development platform, using the C# programming language. Program design by the design method of keyword clause, realizes the intelligent dialogue mode of man and computer.Keywords: chat robot ; Intelligent computer ; Chat目 录聊天机器人技术的研究与实现1摘要2Abstract3目 录41 绪论11.1课题开发的背景
6、11.2 国内外发展现状11.3 课题开发的意义31.4 本章小结32 可行性分析52.1 技术可行性52.2 经济可能性52.3 操作可能性62.4 开发工具62.4.1 Visual Studio 201262.4.2 C#程序设计语言73 系统分析123.1 需求分析123.2 B/S三层构架134 系统设计164.1 程序设计分析164.2 程序展示165系统测试与维护205.1 系统的配置205.2 系统的维护205.3 系统测试216 结论23参考文献24241 绪论1.1 课题开发的背景自从上世纪中叶第一台计算机诞生以来,计算机越来越走进人们的生活当中,特别是随着计算机网络的发展
7、把全世界的人们紧密的联系在一起,大大的扩展了计算机的功能,人们越来越离不开计算机了。如今,作为网络应用之一的聊天工具,越来越受到人们的欢迎和重视。现在已有的聊天软件不胜枚举,流行的主要有MSN Messenger、QQ等。MSN Messenger来自于软件巨头微软,其实力当然不容小觑。目前最新版本为MSN9,能够实现文本、手写、语音、视频等多种沟通方式,可以预见在不久的将来,聊天软件将成为人们通过因特网相互联系和娱乐的主要平台。 由于MSN Messenger协议是公开的,因此第三方软件开发者能通过协议写出自己的程序与网络交互,于是MSN机器人应运而生。MSN机器人是以MSN联系人的形式出
8、现的,只要你添加相关机器人的MSN帐号,就可以像与真人聊天一样与机器人聊天,并可查询地图、股票、天气预报、电视节目等信息。随着我国计算机技术、互联网行业的快速发展,计算机的开发应用已渗透到各个领域,成为各行各业必不可少的工具,而且日趋普及。随着网络的兴起,越来越多的人依赖网络,因此聊天机器人应运而生。聊天机器人是以联系人的形式出现的,只要你添加相关机器人的账号,就可以像与真人聊天一样与机器人聊天,并可查询地图、股票、天气预报、电视节目等信息。目前,知名的聊天机器人有:一枝独秀的MSN机器人小i,专业的MSN股票机器人牛牛,国内则如腾讯的QQ机器人小Q,但在功能上和MSN的系列机器人相比有一定差
9、距。1.2 国内外发展现状世界上最早的聊天机器人诞生于20世纪80年代,名为“阿尔贝特”,用BASIC语言编写而成。今天的互联网上,已出现“比利”、“艾丽斯”等聊天机器人等,中文的如“白丝魔理沙”、“乌贼娘”等由网友制作的聊天机器人。据悉,还有一个“约翰列侬人工智能计划”,以再现当年“甲壳虫”乐队主唱的风采为目标。1950年,图灵在哲学刊物思维上发表“计算机器与智能”的文章,提出了后来经典的图灵测试交谈能检验智能,如果一台计算机能像人一样对话,它就能像人一样思考。他由此获称“人工智能之父”。1991年,美国科学家兼慈善家休勒布纳设立人工智能年度比赛勒布纳奖,号称是对图灵测试的第一种实践,旨在奖
10、励最擅长模仿人类真实对话场景的机器人。2008年,勒布纳奖人工智能奖最后一轮10月12日在英国雷丁大学展开。艾尔博特等6种软件程序击败另外7种程序,获决赛资格。艾尔博特与12个陌生人交谈,力图让他们相信它是“人”。一番争论、笑声过后,这一电脑程序成功骗过3人,在今年人工智能比赛中拔得头筹,朝“成为史上第一台能思考的机器”目标更近一步。MSN机器人是一项能够带给用户良好信息体验的技术产品基于人工智能技术的开发、研究和应用,为成千上万用户提供新颖实用的网络服务。MSN机器人技术日渐成熟,其中著名的如赢思软件公司开发的小I机器人。2004年赢思先后在全球知名的即时通讯(IM)平台MSN、“腾讯QQ”
11、及Yahoo Messenger上推出了小I智能机器人;小I以其强大的聊天功能和各类资讯信息的提供一时间成为各大IM平台的新宠,用户量突破800万,在人工智能机器人及信息服务领域获得了前所未有的突破。2006年2月,凭借在机器人领域多年的积累以及强大的技术实力,赢思软件成为微软全球战略合作伙伴及微软官方机器人平台,携手微软打造最强大的机器人应用平台。目前公司已推出小I聊天、MSN群、小I地图、小I天气、小I收视指南、小I问答等多项应用,提供了多种个性化功能和服务,性能稳定,应用广泛。世界上最早的聊天机器人诞生于20世纪80年代,这款机器人名为“阿尔贝特”,用BASIC语言编写而成。1950年,
12、图灵在哲学刊物思维(Mind)上发表了“计算机器与智能”的文章,提出了后来经典的图灵测试交谈能检验智能,如果一台计算机能像人一样对话,它就能像人一样思考。他由此获称“人工智能之父”。1991年,美国科学家兼慈善家休勒布纳设立人工智能年度比赛勒布纳奖,号称是对图灵测试的第一种实践,旨在奖励最擅长模仿人类真实对话场景的机器人。比赛分为金、银、铜三等奖。如果程序不仅能以文本方式通过交谈测试,在音频和视频测试中也能过关,则获金奖,赢得10万美元和一枚18K黄金制金牌;如果它能在更长时间文本谈话中迷惑住至少半数裁判,则获银奖;如果未达到以上标准,则每年测试中迷惑住最多裁判的程序赢得2000美元和一枚铜牌
13、从1991年首届比赛至今,尚无程序达到金奖或者银奖标准。2008年,勒布纳奖人工智能奖最后一轮比赛10月12日在英国雷丁大学展开。艾尔博特等6种软件程序击败另外7种程序,获得决赛资格。艾尔博特与12个陌生人交谈,力图让他们相信它是“人”。一番争论、笑声过后,这一电脑程序成功骗过3人,在今年人工智能比赛中拔得头筹,朝“成为史上第一台能思考的机器”目标更近一步。1.3 课题开发的意义聊天机器人产生的原因是,研发者把自己感兴趣的回答放到数据库中,当一个问题被抛给聊天机器人时,它通过算法,从数据库中找到最贴切的答案,回复给它的聊伴。此外,聊天机器人的成功之处在于,研发者将大量网络流行的俏皮语言加入词
14、库,当你发送的词组和句子被词库识别后,程序将通过算法把预先设定好的回答回复给你。而词库的丰富程度、回复的速度,是一个聊天机器人能不能得到大众喜欢的重要因素。千篇一律的回答不能得到大众青睐,中规中矩的话语也不会引起人们共鸣。此外,只要程序启动,聊士们24小时在线随叫随到,堪称贴心之至。1.4 本章小结本章主要通过对课题的背景、发展现状和开发意义三个角度进行了分析。通过上文可以看出聊天机器人的设计开发已经成为了热门话题,人们经常通过与聊天机器人对话进行情绪的发泄与寻求安慰。2 可行性分析在系统调查和业务流程分析的基础上,针对新系统的开发是否具备必要性和可能性,对新系统的开发从技术、经济、社会的方面
15、进行分析和研究,以避免投资失误,保证新系统的开发成功。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。并且可行性研究主要集中在以下三个方面:2.1 技术可行性随着互联网时代的到来以及数码相机的普及,越来越多的人在生活中、吃饭时,旅途中都喜欢用相机记录下当时的场景。再加上现在的智能手机功能越来越强大,几乎所有手机都有照相功能,所以拍照几乎成了人们日常生活中必不可少的一部分。 根据本系统的功能需求,采用C#语言进行程序开发。开发平台选取微软的Visual Studio 2012程序设计平台。C#语言与VC平台都是相当成熟的技术,因此在技术层面上,本系统的实现是完全可行的。2
16、2 经济可能性本环节通过分析新系统的成本效益,其中包括估计项目开发的成本,开发费用和今后的运行、维护费用以及新系统将获得的效益,估算开发成本是否高于项目预期的全部经费。下面具体列出了成本和效益的分析:(1)支出 本系统的开发只需要系统的程序设计费用,使用者将程序安装到计算机中就可以实现人与计算机的智能聊天功能。(2)效益本系统的效益主要是供使用者打发无聊时间,作为一款娱乐程序,如果此程序能够为广大使用者带来快乐就实现了其效益。由以上可知,本系统在经济上是可行的。2.3 操作可能性本系统是非常简单的人机对话系统,将程序安装在计算机上之后,打开程序,在聊天框中输入聊天信息,本系统就可以对用户发送
17、的聊天信息进行智能回复。对于任何一个能够熟练使用计算机的人都是可以轻松操作本程序。所以本系统在操作上是完全可行的。2.4 开发工具2.4.1 Visual Studio 2012Visual Studio是微软公司推出的开发环境。是最流行的Windows平台应用程序开发环境。2012年9月12日微软在西雅图发布Visual Studio 2012。其实早在8月16日Visual Studio 2012和.NET Framework 4.5已经可以下载,微软负责Visual Studio部门的公司副总裁Jason Zander还发表博客,列举了升级到Visual Studio 2012版的12大
18、理由。当时还主要是分发给MSDN订阅用户。9月1日批量许可(VL)发布。而在12号这天面向全球用户上市。应用程序的新纪元已经到来,这一点毋庸置疑。 利用联网设备和基于云的服务,您可以获得比以往任何时候都更 独立的开发人员随时随地都可以进行连接,向不计其数的用户提供您所构建优秀的应用程序。 而大型敏捷的开发团队则可以获得明显的业务优势执行效率越快,优势越明显。这就是为什么说 Visual Studio 2012是我们到目前为止最卓越的版本。 它的目的就是帮助您在贵在创意、重在速度的市场中发展壮大。 让我们来看一看它帮助您将创意快速转化为应用程序的一些方法。Visual Studio 2012新增
19、了一些可以增进团队生产力的新功能。这些新功能包括: intellitrace in production.开发者一般无法使用本地调试会话来调试生成程序,因此重现,诊断和解决生成程序的问题非常困难。 而通过新的intellitrace in production功能,开发团队可以通过运行powershell命令来激活intellitracecollector来收集数据,然后intellitrace会将数据传输给开发团队。开发者就可以使用这些信息在一个类似于本地调试会话的会话中调试程序。intellitrace in production仅为Visual Studio 2012旗舰版客户提供。 t
20、ask/suspend resume这个功能解决了困扰多年的中断问题。假设开发者正在试图解决某个问题或者bug,然后领导需要你做其他事情,开发者不得不放下手头工作,然后过几小时以后才能回来继续调试代码。task/suspend resume功能会保存所有的工作(包括断点)到visual studio team foundation server (tfs)。开发者回来之后,点击几下鼠标,即可恢复整个会话。 代码检阅功能。新的代码检阅功能允许开发者可以将代码发送给另外的开发者检阅。启用“查踪”后,可以确保修改的代码会被送到高级开发者那里检阅,得到确认。 powerpoint storyboard
21、ing 工具。这个新工具是为了方便开发者和客户之间的交流而设计。使用powerpoint插件,开发者可以生成程序mockups,这会帮助客户于开发者就客户所需的功能进行交流。云功能:以前,每个人都需要维护一台服务器。 光是扩展容量便占用了基础架构投资的一大半。 而拥有了云功能,您可以利用云环境中动态增加存储空间和计算能力的功能快速访问无数虚拟服务器。 Visual Studio 提供了新的工具来让您将应用程序发布到 Windows Azure(包括新模板和发布选项),并且支持分布式缓存,维护时间更少。2.4.2 C#程序设计语言微软c#语言定义主要是从C和C+继承而来的,而且语言中的许多元素也
22、反映了这一点。C#在设计者从C+继承的可选选项方面比Java要广泛一些(比如说structs),它还增加了自己新的特点(比方说源代码版本定义).但它还太不成熟,不可能挤垮Java、C#还需要进化成一种开发者能够接受和采用的语言。而微软当前为它的这种新语言大造声势也是值得注意的。目前大家的反应是:“这是对Java的反击” 。C#更象Java一些,虽然微软在这个问题上保持沉默。这也是意料中的事情,我觉得,因为Java近来很成功而使用Java的公司都报告说它们在生产效率上比C+获得了提高。Java所带来的巨大影响和大家对它的广泛接受已经由工作于这种语言和平台之上的程序员数量明显的说明了(估计世界范围
23、内共有两百五十万程序员使用Java)。由这种语言写成的应用程序的数量是令人惊讶的并已经渗透了每一个级别的计算,包括无线计算和移动电话(比如日本发明的Java电话)。C#能够在用户领域获得这样的礼遇吗?我们必须等待并观望,就象已经由SSI公司的CEO和主席Kalpathi S. Suresh指出来的那样:我发现所有这些都是渐进的。如果C#不存在,我们总能回到Java或C和C+。这些都不完全是新技术,它们在更大的意义上来说只是大公司制造的市场噱头。我们必须给他们时间安顿下来看看这些是不是真的对IT工业有什么影响。C#最引人入胜的地方是它和Java的不同,而不是相似的地方.这一节(和这个系列第二部分
24、的大部分地方)讲述了C#实现的和Java不同的地方或者Java根本没有的特点.动态查阅C# 4.0 新增 dynamic关键字,提供动态编程(dynamic programming),把既有的静态对象标记为动态对象,类似javascript, Python 或 Ruby。dynamic calc = GetCalculator();int sum = calc.Add(10, 20);具名参数与可选参数public StreamReader OpenFile(string path,int bufferSize =1024).调用 OpenFile 时, 顺序可以完全颠倒:OpenFile(b
25、ufferSize:4096, path:foo.txt);中间代码:微软在用户选择何时MSIL应该编译成机器码的时候是留了很大的余地.微软公司很小心的声称MSIL不是解释性的,而是被编译成了机器码.它也明白许多-如果不是大多数的话-程序员认为Java程序要不可避免的比C编写的任何东西都要慢.而这种实现方式决定了基于MSIL的程序(指的是用C#,Visual Basic,Managed C+-C+的一个符合CLS的版本-等语言编写的程序)将在性能上超过解释性的Java代码.当然,这一点还需要得到事实证明,因为C#和其他生成MSIL的编译器还没有发布.但是Java JIT编译器的普遍存在使得Ja
26、va和C#在性能上相对相同.象C#是编译语言而Java是解释性的,之类的声明只是商业技巧.Java的中间代码和MSIL都是中间的汇编形式的语言,它们在运行时或其它的时候被编译成机器代码.命名空间中的申明:当你创建一个程序的时候,你在一个命名空间里创建了一个或多个类.同在这个命名空间里(在类的外面)你还有可能声明界面,枚举类型和结构体.必须使用using关键字来引用其他命名空间的内容.基本的数据类型C#拥有比C,C+或者Java更广泛的数据类型.这些类型是bool, byte, ubyte, short, ushort, int, uint, long, ulong, float, double
27、和decimal.象Java一样,所有这些类型都有一个固定的大小.又象C和C+一样,每个数据类型都有有符号和无符号两种类型.与Java相同的是,一个字符变量包含的是一个16位的Unicode字符.C#新的数据类型是decimal数据类型,对于货币数据,它能存放28位10进制数字.两个基本类:一个名叫object的类是所有其他类的基类.而一个名叫string的类也象object一样是这个语言的一部分.作为语言的一部分存在意味着编译器有可能使用它-无论何时你在程序中写入一句带引号的字符串,编译器会创建一个string对象来保存它.参数传递:方法可以被声明接受可变数目的参数.缺省的参数传递方法是对
28、基本数据类型进行值传递.ref关键字可以用来强迫一个变量通过引用传递,这使得一个变量可以接受一个返回值.out关键字也能声明引用传递过程,与ref不同的地方是,它指明这个参数并不需要初始值.与COM的集成:C#对Windows程序最大的卖点可能就是它与COM的无缝集成了,COM就是微软的Win32组件技术.实际上,最终有可能在任何.NET语言里编写COM客户和服务器端.C#编写的类可以子类化一个已存在的COM组件;生成的类也能被作为一个COM组件使用,然后又能使用,比方说,JScript语言子类化它从而得到第三个COM组件.这种现象的结果是导致了一个运行环境的产生,在这个环境里的组件是网络服务
29、可用任何.NET语言子类化.索引下标:一个索引与属性除了不使用属性名来引用类成员而是用一个方括号中的数字来匿名引用(就象用数组下标一样)以外是相似的.public class ListBox: Control private string items;public string thisint index get return itemsindex;set itemsindex = value;Repaint();可以用一个循环器来匿名引用字符串内部数组成员,就象下面这样:ListBox listBox = .;listBox0 = hello;Console.WriteLine(listB
30、ox0);代理和反馈:一个代理对象包括了访问一个特定对象的特定方法所需的信息.只要把它当成一个聪明的方法指针就行了.代理对象可以被移动到另一个地方,然后可以通过访问它来对已存在的方法进行类型安全的调用.一个反馈方法是代理的特例.event关键字用在将在事件发生的时候被当成代理调用的方法声明中。3 系统分析3.1 需求分析需求分析也称可行性研究,是决策部门在采取一项重大改革或投资行动之前,对该项目的必要性和可能性进行分析与论证的活动。可行性分析已被广泛应用于新产品开发、基建、工业企业、交通运输、商业设施等项目投资的多个领域。在展开一项开发行动之前,必须对用户提出的目标的必要性和可能性进行必要的论
31、证。在系统调查分析的基础上,针对新系统的开发是否具备必要性和可能性,对新系统的开发从技术、经济、社会的方面进行分析和研究,以避免投资失误,保证新系统的开发成功。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。根据本系统操作流程,了解了各层对象的功能需求,分析得出了本系统使用者的使用流程图,如图下所示:图3.1 聊天机器人使用流程图3.2 B/S三层构架本系统采用B/S模式,服务器采用著名的web服务器端软件apache,该http服务器有着良好的跨平台性和安全性,可以运行在包括windows、linux、mac等操作系统上。用户客户端使用各种浏览器都能够进行正常的浏览和
32、操作。需要注意的是在程序的开发过程中,程序和路径相关的要考虑到不同的操作系统的文件目录结构。B/S结构,即Browser/Server(浏览器/服务器)结构,就是只安装维护一个服务器(Server),而客户端采用浏览器(Browse)运行软件。它是随着Internet技术的兴起,对C/S结构的一种变化和改进。主要利用了不断成熟的WWW浏览器技术,结合多种Script语言(VBScript、JavaScript等)和ActiveX技术,是一种全新的软件系统构造技术。 B/S三层体系结构采用三层客户/服务器结构,在数据管理层(Server)和用户界面层(Client)增加了一层结构,称为中间件(M
33、iddleware),使整个体系结构成为三层。三层结构是伴随着中间件技术的成熟而兴起的,核心概念是利用中间件将应用分为表示层、业务逻辑层和数据存储层三个不同的处理层次。三个层次的划分是从逻辑上分的,具体的物理分法可以有多种组合。中间件作为构造三层结构应用系统的基础平台,提供了以下主要功能:负责客户机与服务器、服务器与服务器间的连接和通信;实现应用与数据库的高效连接;提供一个三层结构应用的开发、运行、部署和管理的平台。这种三层结构在层与层之间相互独立,任何一层的改变不会影响其它层的功能。 图3.2 B/S三层体系结构在B/S体系结构系统中,用户通过浏览器向分布在网络上的许多服务器发出请求,服务器
34、对浏览器的请求进行处理,将用户所需信息返回到浏览器。而其余如数据请求、加工、结果返回以及动态网页生成、对数据库的访问和应用程序的执行等工作全部由Web Server完成。随着Windows将浏览器技术植入操作系统内部,这种结构已成为当今应用软件的首选体系结构。显然B/S结构应用程序相对于传统的C/S结构应用程序是一个非常大的进步。B/S三层体系结构的主要优点:B/S模式提供灵活的信息交流和信息发布服务。B/S模式借助Internet强大的信息发布与信息传送能力可以有效地解决企业、高等学校内部的大量不规则的信息交流可共享性。单个应用服务器可以为处于不同平台的客户应用程序提供服务,在很大程度上节省
35、了开发时间和资金投入;较好的安全性。在这种结构中,客户应用程序不能直接访问数据,应用服务器不仅可控制哪些数据被改变和被访问,而且还可控制数据的改变和访问方式 。三层模式成为真正意义上的“瘦客户端”,客户端计算机不需要很高的硬件配置,也无需特殊的软件配置要求,只要有web浏览器就可以使用系统。B/S模式提供了一致的用户界面:B/S模式的应用软件都是基于Web浏览器的,这些浏览器的界面都很相似。对于无用户交互功能的页面,用户接触的界面都是一致的,从而可以降低软件的培训费用。在B/S模式下,外部的用户亦可通过通用的浏览器进行访问。B/S模式的结构易于扩展:由于Web 的平台无关性,B/S模式结构可以
36、任意扩展,可以从一台服务器、几个用户的工作组级扩展成为拥有成千上万用户的大型系统。B/S模式具有更强的信息系统集成性:在B/S模式下,集成了解决企事业单位各种问题的服务,而非零散的单一功能的多系统模式,因而它能提供更高的工作效率。4 系统设计4.1 程序设计分析本次程序设计的原理是根据关键句分词技术,采用key-value键值对原理进行数据的快速搜索查询。key-value分布式存储系统查询速度快、存放数据量大、支持高并发,非常适合通过主键进行查询,但不能进行复杂的条件查询。如果辅以Real-Time Search Engine(实时搜索引擎)进行复杂条件检索、全文检索,就可以替代并发性能较低
37、的MySQL等关系型数据库,达到高并发、高性能,节省几十倍服务器数 量的目的。以MemcacheDB、Tokyo Tyrant为代表的key-value分布式存储,在上万并发连接下,轻松地完成高速查询。在系统程序设计中“List Dic = new List();”语句声明了名为Dic的词库,在词库中我们可以加入我们能够想到的一切问题与对应的答案,当然我们选取的回答尽量要以机器人的口吻叙述,而且还应该尽量体现程序的娱乐性。例如:“Dic.Add(你好 + & + 你好);”在此语句下,我们输入“你好”,系统就会根据我们输入的“你好”作为key值,在词库中查找对应“你好”值的相应的回复。此语句已
38、经设定好,如果输入“你好”,机器人就会回复我们“你好”。其中,后者的“你好”就是key-value中的value值。通过此方法我们就能够即快速又准确的根据输入值查找到回复值。如果系统检测到用户输入的语句中的关键值在key中不存在,或者说找不到相应的key值,则提示用户重新输入或输入其他的聊天内容。我们可以根据词条语句if (input.IndexOf(Dici.Substring(0,Dici.IndexOf(&) != -1)来实现此功能。4.2 程序展示(1)在聊天对话框中输入“你好”,聊天机器人就会自动回复“你好”来回应聊天,如下图所示:图4.1 开始与机器人聊天(2)用户可以像两个陌生
39、人刚刚见面时一样,问一下对方叫什么名字,根据系统的设置,机器人会回答“我叫聊天机器人啦”,如下图所示:图4.2 机器人回答自己的名字(3)当然,用户也可以询问机器人的性别,本系统我们设置机器人为女孩,根据我们的设计,机器人会回答“人家是女孩子啦”,如下图所示:图4.3 机器人回答性别问题(4)可以更深层次的与机器人聊天,比如问“她”有没有男朋友,机器人就会回答“没有呢,你能帮我介绍一个吗?”,这样的回答会使使用者感觉自己在跟真人聊天一样,让用户有种互动的感觉,如下图所示:图4.4 机器人反问问题5系统测试与维护聊天机器人程序在完成程序设计、投入正常运行之后,就进入了系统运行与维护阶段。5.1
40、系统的配置1、硬件配置要求: CPU:2GHz以上。 内存:2GB以上。 硬盘:250GB以上(可用空间最好在50GB以上)。2、软件配置要求:WINDOWS Vista/Win7中文版操作系统。本系统运行:首先启动WINDOWS Vista/Win7,将本系统拷贝到硬盘相应地目录下,用附加数据库加载上数据,运行“EXE文件”即可。 5.2 系统的维护系统维护的目的是保证管理信息系统正常而可靠地运行,并能使系统不断得到改善和提高,以充分发挥作用。换言之,系统维护就是为了保证系统中的各个要素随着环境的变化始终处于最新的、正确的工作状态。系统维护的工作量往往是很大的,其费用大约占整个生命周期的60
41、所以我们必须对系统维护给予足够的重视。1、系统维护的内容按照维护对象的不同,系统维护的内容可分为以下几类:(1)系统应用程序维护(2)数据维护(3)代码维护(4)硬件设备维护2、系统维护的类型系统维护的重点是系统应用软件的维护工作,按照软件维护的不同性质,可以划分为下面四种类型: (1)纠错性维护:诊断和修正系统中遗留的错误。(2)适应性维护:使系统适用环境的变化而进行的维护。(3)完善性维护:为满足用户的需求而进行的维护。(4)预防性维护:为将要发生的变化或调整而进行的主动性维护。3、系统维护的组织与管理系统维护工作,首先必须建立一个维护组织,确定进行维护工作所应遵循的原则和规范化的过程
42、此外还应建立一套适用于具体系统维护过程的文档及管理措施,以及进行复审的标准。5.3 系统测试在C#开发过程中采用了多种措施保证软件质量,但是实际开发过程中还是不可避免地会产生差错,系统中通常可能隐藏着错误和缺陷,示经周密测试的系统投入运行,将会造成难以想象的后果,因此系统测试是C#开发过程中为保证软件质量必须进行的工作。大量统计资料表明,系统测试的工作量往往占C#开发总工作量的40%以上。因此,我们必须重视测试工作。由于程序中隐藏的缺陷只在特定的环境下才有可靠显露,系统缺陷通常是由于对某些特定情况考虑不周造成的。因此测试不是为了表明程序正确;成功的测试也不是没有发现错误的测试。有意义的软件测
43、试应该是从“破坏”软件系统的角度出发,精心设计最有可以暴露程序系统缺陷的测试方案。因此软件测试的目标应该是以尽可能少的代价和时间找出软件系统中潜在的错误和缺陷。从产品角度看,测试计划中的测试项目包括软件结构中的分系统层、子系统层、功能模块层、程序模块层中的各类模块,从测试本身看,分为单元测试,组合测试,确认测试等。测试对象是随着阶段而异的,最基本、最初的测试是单元测试,后面的组合测试、确认测试都是以被测过的模块作为测试对象的。在具体的测试中,一般应遵循以下原则:由程序设计者之外的人进行测试;测试用例应由两部分组成:输入数据和预期输出结果;应选用不合理的输入数据与非法输入测试;不仅要检验程序是否
44、实现预期功能,还应检查程序是否做了不应该做的工作;集中测试容易出错的程序模块;对程序修改以后,必须重新进行测试。在开发本系统时,为了使系统能够稳定运行,对本系统进行了有针对性的全面测试,采取的方式是:(1)菜单项测试:为了保证每一项下拉菜单能够正确实现系统设计的功能,我把相关的基础数据,基本上全部输入到本系统中,并对每一个菜单项反复进行了增加、删除、修改等操作,从而保证了菜单功能的正确实现。(2)数据跟踪:完成菜单项测试后,我又对系统内的每一个数据进行了跟踪。经过实践证实,说明该功能完全正常,对其它的功能模块也进行了类似的设置。(3)综合测试:在以上测试的基础上对系统功能进行了整体的测试,依次
45、来检验系统功能是否符合系统设计的要求。6 结论通过几个月的努力,聊天机器人技术的研究与实现在指导老师的全心指导下,在同学的积极配合与帮助下,基本功能顺利完成。在数据库的开发方面,我学到了不少关于C#和Visual Studio 2012的知识。开发时遇到了许多的困难,但是通过自己的努力,还有老师同学们的帮助,最终还是迎刃而解了。在系统的开发过程中,充分的借鉴了开源社区的优秀代码段和设计思想,使用面向对象的编程方式与B/S 技术结合,完整的实现了系统的需求。而且使用到了模版和程序分离的模式,对于系统管理员来说,前台的设计工作将变的更加轻松。而优秀的开源数据开发平台Visual Studio 2012本身所具有的良好性能,对于繁杂而且庞大的数据处理有明显的优势,这就为系统的使用提供了稳定性和安全性。然而,作为聊天机器人程序,在数据信息管理实现过程中,本身需要有良好的性能来防范可能出现的任何漏洞,对程序代码本身的安全性要求相当高,从这个方面来看,还需要进一步的工作来完善,在确保功能流程的前提下为用户提供体验性好而且可信任的服务。参考文献1几种图像相似性度量的匹配性能比较- 陈卫兵2高清晰图片监控在环境保护中的应用-中国安防行业网