📄 智能答疑系.txt
字号:
智能答疑系统的设计与实现
一、问题的提出
对于网上学习,由与教师和学生在地理位置上的分离,没有了教师面对面的解释和演绎,学习者必须进行自主学习。它要求学习者从听众变成索求者,进行深入的思考,但到了百思不得其解时,及时的答疑和帮助则成了必不可少的内容。这就要求网上教学系统能够及时解答学生的疑难问题,消除学生的学习障碍。因此,答疑系统是网上教育平台的重要组成部分之一,它在加强教师和学生的交流,帮助学生明确问题的所在和获得自己真正需要的答案信息方面具有不可或缺的作用。根据目前国内的具有代表性的远程教育系统中有关答疑部分的特点,可以将之分为以下几类:
没有专门的答疑部件。此类系统中教师与学生的信息交流方式仅局限于电子邮件直接联系,或者利用系统留言版发布公告信息。如北京邮电大学现代远程教育系统,华南理工大学远程教育中心,浙江大学现代远程教育中心等研制的系统和大部分的面向中小学的远程教育系统等均属于这一类。
具有初步的答疑部件。此类系统的特点是提供了WEB BBS的讨论方式,也可以进行教师主持下的WEB实时聊天讨论。属于这类系统如清华大学远程教育系统和湖南大学多媒体信息教育学院的远程教育系统。
具备了自动答疑功能的答疑部件。此类系统的典型代表是上海交通大学的远程教育设计中心设计开发的Answer Web自动答疑系统。Answer Web自动答疑系统是一个动态的问题及答案的数据库。用户可以输入关键词在系统的已有的问题和答案数据库中查找相关的材料。新的提问和答案将被增加到系统库中。如果没有找到答案,则会自动转发给专家请求帮助解答。
从上面的分析可以看出,上述的远程答疑系统还存在种种不足:
系统的智能性不够:以Answer Web系统为例,用户提问时,只能采取纯文本的关键词的逻辑组合的形式。这不仅要求用户具有一定的抽取关键词的能力,而且还要组成一定的逻辑组合。这无疑给对计算机不很熟悉的用户造成困难。同时,系统缺乏用户可以对系统提供的答案进行评价的渠道,从而也就无法对于答案进行进一步的加工。
答疑手段单一:上述的各种答疑系统,或者使用讨论或者使用搜索匹配的方式来解答疑问,而没有将二者很好的结合起来。而实际上,这两种方式对于很好的解答用户的疑问都具有不可或缺的作用。另外用户提问或者参加讨论的方式基本上以同步的WWW浏览方式为主,缺乏对于异步提问和讨论的支持,这无疑是不全面的。
答案结构不良,呈现方式不够丰富:无论是讨论为主的答疑系统,还是Answer Web这种通过搜索匹配方式工作的答疑系统,其内部的作为答案的材料组织并非结构良好的。换句话说,没有将之转换成结构良好的知识。而答案的呈现形式基本是纯文本的形式,缺乏多媒体支持。
要解决上面的不足,必须从问题的表示,解决问题的手段,答案的表示以及对最常见的Internet使用方式的支持四个方面加以考虑。由此提出要设计与开发智能答疑系统。其含义是:
从问题的表示来看,用户不仅可以输入关键词的逻辑组合来寻求问题的答案,更可以输入自然语言描述的问题。除了问题本身,用户还可以对于答案材料的性质如作者、大小和修改时间等作出限制。这也是智能答疑系统的智能性的主要体现。
从解决问题的手段来看,系统提供了提问(即在系统答案材料库中搜索与问题相关的答案的过程)和讨论两种手段。讨论利用了系统用户之间的协作来解答问题,是对系统现有的答疑能力的充分补充。提问和讨论是一个统一的整体,这体现在提问没有得到相关的答案材料,系统将自动将问题转贴在讨论区域;而讨论的材料也可以当作答案材料被提问所搜索。
答案的呈现是多媒体方式的,并且答案之间的结构是良好的。要达到这一要求,采用HTML文件格式比较好。在有些情况下,还需要将答案将练习相结合,帮助用户加深对问题的理解。
目前用户使用Internet的最常见的方式是WWW浏览和电子邮件,智能答疑系统应该具有对于它们的支持。也就是要将WWW浏览方式(使用浏览器)和电子邮件方式无缝的整合在一起。
另外,系统还是开放性的。任何一个答疑系统的领域知识再全面,也不可能覆盖该领域的所有方面,更不可能包含用户潜在的所有问题的答案。所以答疑系统必须是开放性的。系统的维护人员可以方便的进行领域知识的增加、删除和修改,而仍然保持答案知识的结构良好性。
二、智能答疑系统的系统模型
智能答疑系统的典型用户有三类,一是使用系统请求解答自己疑问的普通用户;二是答疑系统所涉及的领域的专家用户;三是系统工程师。三者的作用是不相同的。普通用户是系统服务的目标,他们使用系统解答自己的疑问,并对系统给出的答案进行评价,使系统的工作质量得到提高。专家用户的作用非常关键,他们要负责系统初始的领域知识库的构建,并负责解答系统暂时不能解答的问题。系统工程师熟悉计算机技术,他们与专家用户一道,开发并维护系统。特别需要指出的是,领域知识库中的知识的质量,在很大程度上决定了系统的有效性。在强调系统的智能性的同时,绝不能忽视了领域知识库本身的质量,只有二者相得益彰,智能答疑系统才能取得理想的效果。
根据智能答疑系统的设计目标和特点以及三种典型用户的分析,可以得到图1所表示的系统模型:
图1智能答疑系统的模型
在上面的系统模型中,智能答疑系统包括下面几个部件:
1.提问部件
普通用户可以使用提问部件来寻求问题的答案,这是使用系统的基本手段之一。它主要包括预处理子部件,加权分词子部件和全文搜索子部件。
预处理子部件的作用有两个:一是如果用户的问题是使用电子邮件方式提问的,那么系统的邮件处理引擎首先将邮件中的问题分解出来,形成与同步提交的HTML表单形式相同的文本,以便统一处理;二是对于问题文本进行第一次分解处理,主要是将自然语言的问题文本,根据标点符号、西文字符等分解一系列的子串。
加权分词子部件的作用则主要是在预处理子部件的基础上,将问题文本的系列子串进一步分解成与系统有关的加权的关键词的组合。加权关键词的组合与前面的问题的限制条件相结合就形成了搜索答案的条件。
全文搜索子部件则根据生成的搜索条件,在系统的领域知识库中以及讨论形成的材料中搜索与问题相关的材料,并按照相关程度返回结果。
2.讨论部件
讨论部件是普通用户使用智能答疑系统的另外一种基本手段。用户可以参加新闻组方式的异步讨论和Web方式的同步讨论(如Web BBS和实时聊天等等)。
另外,用户提问的没有得到系统的满意的解答的问题,除了被系统自动转发给专家用户来请求解答外,还可以被自动转发给讨论部件,请求系统别的普通用户帮助解答。
3.系统管理部件
系统管理部件主要是针对系统答案材料的存储——包括系统领域知识库、新闻组的材料和Web讨论部件的材料的管理,主要有增加、删除和修改等基本操作。值得注意的是答案材料的增删改都必须考虑到整个系统结构不被破坏,保持完整性。
4.服务逻辑
综上所述,智能答疑系统基本上由三个部件(提问部件、讨论部件和系统管理部件)以及三个库(领域知识库、新闻组的邮件和Web讨论部件的结果库)组成。在智能答疑系统的三种典型用户中,普通用户是系统服务的对象。所以下面主要是从普通用户的视图出发,描述系统典型的工作流程。
普通用户使用智能答疑系统解答自己的疑问时,首先要确定答疑的手段是提问方式还是讨论方式,并决定是实时进行还是异步进行。
首先来看一下选择提问方式时的系统工作的情况。如果用户采用同步的Web浏览的方式来对系统提问,那么用户首先在浏览器的地址栏中输入填写问题的表单所在的网页的网址,并按照要求填写表单,其中的问题项可使用自然语言描述;如果是选择异步方式的提问,则应该向系统指定的邮件地址发送一封提问邮件,邮件的内容与表单的内容等同。也就是说,无论采取哪种方式,用户除了提出问题本身,还可以对于答案材料做出进一步的限制,如答案材料的作者、大小、修改时间等,也可以对于要返回的答案材料的数量做出限制。系统接下来对问题文本进行预处理,把邮件中的内容分析成表单形式的结构,并对构成问题的自然语言文本进行第一步分词,同时也要记录相关的限制条件以备后用。然后系统的加权分词部件对上一步得到的问题子串进行加权分词抽取关键词,每个关键词的权值代表了可能与系统的答案材料的相关程度。加权关键词的组合以及前面的限制条件一起,构成了在系统的答案材料库中全文搜索与该问题相关的答案的搜索条件。最后则由全文搜索部件根据上面的搜索条件进行搜索,将搜索到的答案按照与用户问题的相关程度返回(如果用户是使用电子邮件方式提问则系统自动将搜索到的结果以电子邮件的方式发送给用户)。如果全文搜索子部件没有搜索到与之相关的答案材料,则系统将把用户的问题自动转发给系统的专家用户请求解答,同时还可选择是否张贴到讨论部件的讨论区域。专家用户可以使用专用的电子邮件客户端或者使用系统提供的Web Mail的功能来回答转发的问题,其解答将同时转发给提出问题的用户和系统本身的领域知识库。
如果用户决定采用讨论的方式来解决自己的问题,那么用户可以浏览Web讨论部件的网址(主要包括Web BBS和聊天两种形式)。或者贴出自己的问题请求解答,或者与别的用户进行讨论来获得答案。这属于同步的方式。用户也可以使用普通的邮件客户端(如Outlook Express、FoxMail等)登录到系统的新闻组服务器来参加讨论。
而对于系统的专家用户,除了解答系统转发的问题,最重要的是在系统工程师的协助下,根据自己的专业知识和用户对问题答案的反馈,设计、整理已有的答案材料和讨论结果,为后来的问题提供更全面准确的答案。
三、关键技术的实现
智能答疑系统的首先需要解决的问题就是汉语的分词,如何从自然语言文本中抽取出能够代表问题的关键词是系统的首要目标。全文搜索的目的是提供与问题相关的答案。全文索引的建立、压缩和搜索是要解决好的基本问题。为了使系统最好的为用户服务,必须提供对于Internet的两种最基本方式的支持——Web浏览方式和电子邮件方式。如何将二者无缝的整合在一起,也是系统必须考虑的问题。对于有些领域,还应该提供练习功用户在获得答案后做测试,加深对于答案的理解。
1.汉语分词
汉语自动分词是汉语自动文本分析的前提。目前的汉语分词主要有三类算法:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法。在汉语分词的三种算法中,基于理解(或者说知识)的分词方法由于其系统的复杂性而对于智能答疑系统并不实用。基于字符串匹配的算法则在处理未登录词方面无能为力。所以采取的方案是将串频统计和串匹配结合起来,先使用使用一部基本的分词词典(常用词词典)进行串匹配分词,同时使用统计方法来识别一些新的词。
智能答疑系统的分词包括对于答案材料的分词和对问题文本的分词,其中对答案材料进行分词包括两个过程——分词和加权。
(1)对答案材料进行分词
分词预处理:首先,智能答疑系统的答案材料是以HTML文件的格式存储的。所以要先把文档中的文本抽取出来,包括HTML文件的BODY中的正文文本、TITLE标记的标题文本和在HTML文件的头部中的以META标记的Keywords属性指定的关键词序列。对于后面两者的文本还要做特殊标记,作为加权时的一个权值确定依据。
接着对得到的文本序列进行初始的子串切分。也就是利用显式的切分标记(标点、数字、西文以及其它非汉字符号)将文本切分成汉字短串的序列。
串频统计:串频统计的目的在于利用统计的方法来获得系统中的一些新词,这些词被称为临时词库,它们将与系统本身的常用词词库一起作为切分时的依据。临时词库中的词的优先级高于系统本身的常用词库的词的优先级。
统计的思路是计算各汉字短字符串的所有子串(长度大于1)在全文中出现的次数,并根据串频和子串的长度对每个子串进行加权进行计算。加权函数为W=F×(F为子串在全文中出现的次数;L为子串的长度,即汉字子串中包含的汉字个数)。权值超过给定的阈值的子串作为系统自动识别出来的词条存入临时词库中。注意:这里之所以选择全文作为统计子串出现次数的范围,而不是传统的在局部上下文中(如200字左右)统计,是因为这里的分词是为后面的问题文本分词提供词库的,因而对分词的速度的要求并不高。同时扩大统计范围到全文,也提高了子串频率统计的精度。
为了快速的计算出汉字短串的各个子串在全文中出现的次数,需要将文本转换成汉字的Hash表的形式。由于微软公司自 Windows 95 简体中文版始,系统采用 的是GBK (《汉字内码扩展规范》)代码。而在GBK代码中,采用双字节编码,总体编码范围为 8140-FEFE,首字节在 81-FE 之间,尾字节在 40-FE 之间。剔除 xx7F 一条线,总计 23940 个码位。共包括21886 个汉字和图形符号,其中汉字(包括部首和构件)21003 个,图形符号 883 个。所以选择的Hash函数值就是汉字的内码的首字节。对于可能引起的Hash冲突(也就是出现了在同一区的汉字),采取链地址的方法来解决。可以定义Hash表的数据结构如下所示:
TYPE postp = RECORD
seqno : integer;//当前的字所在的字符串排在第几个字符串
charno : integer;//当前的字在所在的字符串中的位置
next : ^postp;//当前字的下一个位置
END;
TYPE tailtp = RECORD
tailbyte : 0x40..0xFE; //当前的字的内码的尾字节的值
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -