全文索引技术在现代在线答疑系统设计中的应用
2009-04-09马莉
马 莉
【摘 要】作者针对目前在线答疑响应速度慢、灵活性差、查全率低等问题,应用全文索引技术,设计并实现了基于中文全文索引技术的在线答疑系统,通过二次开发JDK工具,成功解决了问题答案库生成、问题答案索引与管理等关键技术,系统的查询速度和查全率优于基于数据库技术的在线答疑系统性能。
【关键词】基于网络的教育 在线答疑 中文全文索引 搜索引擎
【中图分类号】G434 【文献标识码】A 【文章编号】1006-9682(2009)02-0040-02
一、前 言
在线答疑系统是网络教育平台的重要组成部分,它在加强教师和学生的交流,帮助学生明确问题的所在和获得自己真正需要的答案信息方面具有不可或缺的作用,因此现代远距离教育对其在线答疑模块的查准率、查全率、灵活性、响应速度等方面提出了更高的要求。
目前多数现代远距离教育系统的问题答疑检索的方式为基于数据库的查询。存在的突出问题是:求用户具有一定的组织关键词能力,对不熟悉计算机的用户造成困难;建立数据库的关键词字段、数目一经确定,就限定了查询内容,从而造成查全率低、漏检率高的问题;DBMS建立在代数系统上,代数系统所定义的有限种运算限制不能适应复杂多变的查询需求;若教育网站涵盖几百门课程,数据库会非常庞大,当大量学习者同时过度的并发操作会导致服务器端的负荷过载,从而降低查询速度。
我们借鉴国外成功的答疑系统的技术,构建了基于中文全文索引的答疑系统,系统对问题答案进行了合理的组织,为其建立了全文索引,并依据索引文件提供多种查询方式。该系统的响应速度、查全率、查准率、查找灵活性优于基于数据库技术的答疑系统。
二、关键技术
1.全文索引技术
全文索引是指索引程序通过扫描文章中的每一个字、词,对每一个字建立索引,指明该字(词)在文章中出现的次数和位置,以响应用户的多种查询需求。全文检索系统应具备建立索引、处理查询、返回结果集、增加索引、优化索引等功能,系统构成一般包括索引引擎、查询引擎、文本分析引擎、对外接口等模块,以及外围应用系统。
(1)全文索引排序及查询原理
本系统应用数据倒排序原理,首先对中文单词进行特殊的分词处理,取得文章的关键词;通过Analyzer类过滤掉无概念意义的标点符号;建立倒排关键词索引,用n元组<关键词 拥有该关键词的文章号 P频 P位>表示;进一步统计关键词在文章中出现次数和出现的位置;将上述数据分别存储在词典文件、频率文件、位置文件中。
词典文件包含将原文件分词以后所得到的每一个字和词。它不仅保存有每个关键词,还保留了指向频率文件P频和位置文件的指针P位;
频率文件存储每个字在原文件中出现的频率;
位置文件包含每个字在其原文件里的位置,一般是指该单词距文件头的偏移量。
通过词典文件到频率文件、位置文件的映射(指针)将三个文件有机联系在一起。
用户输入词/词组,触发检索引擎中的分词类,分解用户数据为单独的字和序,到词典文件查找每个字出现的文章、频率、位置;然后进行位置匹配,只有字、字序(出现的位置)均相同的文章才会被找出(查找算法略)。
另外,为了减小索引文件的大小,全文检索引擎对索引还使用了压缩技术(略)。
2.Java技术
(1)API接口
Apache Jakarta项目组提供了一个全文索引引擎Java类接口,但它提供的仅仅是一个在单机上调用的Java类包。我们对它加以改进使其能够嵌入B/S模式答疑系统。
Lucene Java类包不是一个完整的全文检索引擎,而是一个开放源代码的工具包。Lucene类包提供了丰富的类接口,基于这些类进行二次代码开发,可以建立较完善的全文搜索引擎。
利用lucene提供的类接口,可以很方便的为.txt、.html、.xml文件建立独立于应用平台的索引文件;索引器通过接受Token流完成索引文件的创立,并能实现动态更新索引文件功能,当有新数据要求被索引时,调用索引器就可以将新建成的索引文件合并到原索引文件中,不必进行索引文件的重建。
(2)动态网页技术
JSP(Java Server Pages)为整个服务器端的Java类库提供了一个接口来服务于HTTP的应用程序。所有程序都在服务器端执行,网络上传送给客户端的仅是程序运行的结果,对客户浏览器的要求低,可以实现无Plugin,无ActiveX,无Java Applet,甚至无Frame。
(3)面向网络的OOP语言
由于Java最初设计出发点就是面向网络,提供面向对象而又不依赖于机器的开放结构,具有跨平台性、可移植性、安全性、响应灵敏和交互好等特点。
3.Xml技术
XML是Extensible Markup Language(可扩展的置标语言)可以让网页设计人员自行定义TAG的延伸格式,用在自由性的数据库或是各种文件格式上。XML也是一种置标语言,也可以作为派生其它置标语言的元语言。
XML具有可扩展性、灵活性、自描述性、简明性。它是SGML的一个子集,只有SGML约20%的复杂性,却能实现约80%的SGML功能。
基于上述技术,本系统实现了与、或和模糊查询,系统在拥有多种查询功能的同时拥有较高的数据查全率和查询速度。
三、系统设计
1.系统功能框架
答疑系统的用户有三种身份,普通学生、指导教师、系统管理员。数据库中保存用户的注册信息,当用户以不同身份登录时通过登录模块进行身份的验证,根据用户不同的身份给用户分配不同的权限。
(1)学生模块
学生登录后,输入所查询问题的关键词,系统响应查询需求,进行搜索,返回答案源文件信息;若未查到相关信息则将问题存入新问题数据库,待教师回答完毕并生成答案源文件和索引文件后,该生再登录时会给出问题已解答的提示,并显示答案。
(2)教师模块
教师登录后可以查看学生遗留的问题,并给予解答;教师利用系统提供的答案文件管理功能定期对现有的问题库进行更新与修改,可以对问题库进行生成xml格式的答案源文件与创建索引。
(3)管理员模块
管理员登录后,进行系统日常维护和管理学生教师信息,对系统进行总体的维护。
2.技术实现
(1)创建源文件与索引文件
创建答案源文件,答案文件是用xml文件组织的,其内部可以设置灵活的超级链接,如相应练习及其他相关网页。答案文件上传以后以数据库的记录暂时存放,这时要把它们导出为xml文件,并作为答案源文件(代码略)。系统返回的检索结果就是这些xml文件。
创建其索引文件,为答案源文件(XML文件)创建索引文件,首先得构造一个xml索引类,该类创建的对象可以将html、xml、txt文件进行分词处理并创建索引文件(代码略)。答案源文件与索引文件创建流程如图1。
(2)答疑系统全文检索流程
响应查询用户输入所查询问题的关键词后,系统进行关键词分字、分词、查询,搜索引擎支持关键词的多种逻辑关系组合查询,如:与、或逻辑关系,这些都是由关键词分词类来完成的(代码略)。
全文检索,将关键词分词后的结果作为参数构建搜索器,利用索引查询逻辑对索引文件进行查询,查询结果为一个内存中的存储抽象。通过对存储抽象的进一步处理可返回查询结果集。
返回查询结果集,经过分析得到重组的查询需求信息,作为搜索器的参数,据此搜索查询满足条件的文章地址,查询结果以结果集(hits)的形式返回。结果集(hits)包含文章题目、地址、内容摘录等,可用.gets()方法获得这些变量(代码略)。
“答案概述”栏显示问题内容的前100个字符,点击相应行“问题题目”栏的内容可以链接到答案的xml文件。但xml文件并不能在IE中直接呈现,本系统采用XSL(Extensible Stylesheet Language)技术,实现将xml文件转换为html格式并在IE中呈现。
四、系统特点
1.检索速度快
虽然初始化阶段,需要对原数据进行分词,建立位置和频率等索引文件,要花费较多时间,但一旦索引文件建立,查询速度就会大幅度的提高,经过实验10亿汉字平均检索速度0.26秒,而利用数据库查询同等量的数据大约需要5秒左右。
2.易于更新
本系统可以自动完成读取原文件、分词和建立索引,不需要对原数据做任何手工处理。索引文件建立后,可以搜索任何位置的数据。答案库记录的更新只需要给出文件名参数,运行创建索引程序即可,因此具有良好的可扩展性。
3.结构性好
传统的答疑系统因受到数据库技术的限制,对于答案之间的内在联结关系支持不是很好。全文索引答疑系统采用的原数据不是数据库中的记录,而是xml文件,其作为可扩展的元标记语言本身就具有良好的结构,可以方便的在答案之间建立超链接。
4.跨平台性好
全文索引答疑系统的核心技术因采用Java和JSP技术,可在任何一台安装Java虚拟机的机器上运行。
五、结束语
本文针对目前网络教学平台答疑系统的缺陷,提出了一种答疑系统解决方案,并设计、实现了基于全文索引的在线答疑系统。
全文索引技术还存在一些弱点,如内容覆盖率、隐式语义提取等问题。为此,进一步的研究工作应该着眼于运用知识工程、人工智能、数据挖掘技术,使系统具有自组织、自学习和自动推理能力,将有望克服上述缺陷,提高答疑系统性能。
参考文献
1 邱 哲、符滔滔.开发自己的搜索引擎—Lucene 2.0+Heritrix.人民邮电出版社,2007.6:146~168
2 苏武华.汉语自动分词和自动标引方法研究.农业图书情报学刊,2004(7):104~106
3 印 鉴、陈忆群、张 钢.搜索引擎技术研究与发展.计算机工程,2005(14)
4 王慧芳.基于全文索引的在线答疑系统设计与开发.第十届全球华人计算机教育应用会议(GCCCE2006)论文集,2006
5 尹俊华.教育技术学导论.北京:高等教育出版社
6 祝智庭.现代教育技术.北京:高等教育出版社
7 赵 汀.基于Lucene API的中文全文数据库.Microsoft全文搜索技术白皮书,2007