郑楚彬林小译实验报告.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
郑楚彬林小译实验报告

课程作业任务书 课程名称:算法设计训练项目名称:中文全文搜索引擎的设计与实现实验时间:2011.12.19~2011.12.30实验班级:10计本1指导教师:马震远 计算机科学 学院 网络中心 实验室 二〇一一 年 十二 月 29 日 广东技术师范学院实验报告 学院计算机学院专业计算机科学与技术班级10计本01班成绩组别第1完成人郑楚彬第2完成人林小译学号2010034243013学号2010035544026实验地点:网络中心机房实验日期:2011/12/29指导教师签名: 项目名称: 中文全文搜索引擎的设计与实现 1.项目概述 功能:实现一个中文全文搜索引擎,能够快速检索中文关键字在文本集中出现的位置。并实现简单的布尔查询短语,还有简单的短语查询。 平台:个人PC机,vc++6.0。 编程语言:C、C++; 项目周期:2011年12月19日~2011年12月28日。 本程序实现 (A)对特定目录下的文件进行查找,并以一定的数据结构为文本集建立索引。 查询到的结果能给出特定文档的路径。 (B)实现了查询特定的词语,并能输出摘要,和文本信息。 (C)实现了根据词语在各个文本中出现的次数不同,进行排序。 (D)实现了简单的BOOL查询。 (E)实现了短语查询. (F)记录词在文档中的位置信息,查询该词时,能返回该词在文档中出现的摘要并用不同颜色显示查询词. 程序运行截图: 2.设计思想 本程序的设计思想是根据每个词语都相当一个字符串(测试集已经分好词),而每个字符串又可以生成关键码。 我们可以通过建立哈希表,之后根据关键码就可以找到指定的字符串的信息。设计一个结构体来存储这些信息,如词频,位置,因为所查找的文档比较大,所以采用开散列来节省内存分别动态的开辟两个结构体链表,一个存储不同的词,一个存储一个的位置信息。 程序最关键的是建立好哈希表,这样查找的时候就很方便、快捷。 查询则根据关键码在哈希表进行查询即???。 接下来就是一些功能上的添加,如在实现分类算法,使得查询结果能够像google一样将最相关的结果排在前,我们根据另外用一个结构体来存储查找到的信息,然后进行排序,则可以输出根据词频排序的结果。 记录词在文档中的位置信息,查询该词时,能返回该词在文档中出现的摘要并用不同颜色显示查询词。 简单的布尔查询,用两个变量来判断即可实现。 短语查询根据位置来进行判断。 3. 特色之处 根据对特定的字符串生成特定的关键码,然后进行快速查找。在内存上操作,最多能实现300M左右文档的处理,而且读入的速度相对较快。 4.组员的分工和每个人的工作量 组长负责整个程序思路大框架的设计如建立哈希表,查找指定的词语,分类算法,组员负责测试文本及实现一些功能,如简单的布尔查询和根据词频排序等。 整个程序遇到的困难有:如何表示中文的关键码,尽可能使关键码的范围变大,减少冲突。 在内存建立哈希表操作遇到最多的问题是内存不足,导致溢出,最终通过建立动态链表解决。 在读入文件的时候采用前期是采用FREAD()这个函数,但后来发现读进来的一个字符串很难再处理成一个个词语出来,因为一整块读进来的话有很多乱码要处理,而且文件指针很容易指乱了,这样造成在后期的工作中经常出现BUG。经过测试,还是觉得采用FSACNF()这个函数来读入词语,这样的话在文件指针方面就比较容易处理,在后期工作的时候很方便。 在输出摘要的过程中,为了查找到的词语能明显的区分出来,在网上找了一个实现改变指定词语颜色的函数。实现了在返回的时候一不同的颜色显示出来。 在实现简单的布尔查询,能够找出同时含有指定的两个词语的文档。 (5)程序的改进 在前期工作中,由于采用数组,导致不能读取大文档,经过改良之后程序实现了最多能 读取300多M左右的文档,并能够快速查询。 程序经过全体组员的共同努力,从最初的只能统计词语的频数,到能够实现摘要的输出, 并最终实现了根据词频进行排序,一步步的完善功能。 在逻辑查询方面做的就还不够完善,只能实现简单的布尔查询,不能实现更复杂的逻辑查询。 由于时间有限,并没有花太多时间在界面的设计上,所以相对来说,界面还是不够友好。 整个程序由于是采取内存操作,所以只能做静态索引,相对动态索引还是有一定的劣势。 不能实现对建立的索引进行永久保存。 (6)小组总结 前期工作一定要先设计好整个程序的框架,设计比盲目的敲写代码寻找灵感更重要

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档