1绪论
1.1课题研究背景
随着互联网的急速发展,国内的上网人数也出现了很大幅度的增长。知名的网络服务公司Netcraft对世界范围内的互联网站点进行了统计,截止2013年4月份站点总数已经达到了712,863,322个,和一月份相比增加了三千万。而且据CNNIC(中国互联网信息中心)公布的《中国互联网发展状况统计报告》表明,我国在2012年年底的网民数量比去年同期增加了5100万。网络上的信息来源于多重渠道和多种行业,有的来源于传统媒体、有的来源于在线新闻,而且信息的呈现方式也是多种多样的,有的以文本呈现,有的以图片呈现,还有一些以视频的形式存在。尤其是在教育领域,互联网为我们提供了丰富而全面的网络教学和学习资源。
在这种互联网环境下,人们的学习方式会发生较大的变化。只要用户有一台接入互联网的电脑,无论在什么时间段,无论在什么地点,用户都能够方便的通过互联网来获取所需要的学习资源,比如教案资源信息,考试资料信息,课后习题信息等。这种对资源的获取方式解决了传统教育中教学资源匮乏以及不能很好的呈现出理论知识的问题。但是教师和同学们在享受互联网带来方便的同时,也会遇到一些问题,网络资源极其丰富,用户进入互联网就如同进入迷宫一样,在寻找自己所需的学习资源上会花费较多的时间,有时甚至找不到自己所需要的资源。互联网上教育资源信息的网页数量巨大,用户在检索自己所需学习资源时会遇到困难。
....................
1.2搜索引擎概述
搜索引擎,是广泛的被网民用来搜索自己所需要的信息的一种工具。通常搜索引擎会索引巨量的网络资源(大部分是网页形式),这些网页资源中的信息会被搜索引擎记录,这样的搜索引擎就是我们非常熟悉的通用搜索引擎,国外有著名的Google、Infoseek;在国内有全球最大的中文搜索引擎Baidu、360搜索和Sougou等全文搜索引擎。
搜索引擎诞生于20世纪90年代,加拿大蒙特利尔大学的三名学生在查询文件的时候感觉很不方便,由于当时文件是分布在其他的ftp的主机上的,因此,他们想到能不能开发出一种能够自动查找文件分布的工具,经过精心设计,最后开发出了Archie[3]程序。
Archie是第一个能够自动搜索FTP站点文件的程序,如果用户能够输入精确的文件名,Archie就能够对文件列表进行检索,查询出能够提供下载该文件的ftp站点列表。因此,我们能够看到Archie程序已经具有了现代搜索引擎的雏形。受到Archie的影响,1993年Nevada System Computing Services大学开发了一个地鼠搜索工具Veronica。很快,第一个互联网爬虫World Wide Web Wanderer被Mathew Gray开发出来了,爬虫(Spider)是用来抓取互联网网页信息的工具。其实Mathew Gray最初只是想测量互联网的增长速度,但是很快他又升级了这个网络爬虫,来抓取实际的URL地址。
1994年,两名来自斯坦福大学的博士生,杨致远和David Filo一起创办了Yahoo。由于它收集的信息资源丰富,访问的人数越来越多,Yahoo的访问目录开始对一些简单的数据库查询进行开放。由于Yahoo的目录是人工进行添加数据的,所以,它算不上是真正的搜索引擎,只是一个对搜索支持的目录[4]。
...........
2垂直搜索引擎关键技术
2.1主题爬虫
网络爬虫按照抓取范围不同分为通用爬虫和主题爬虫,他们分别适用于通用搜索引擎和垂直搜索引擎中。一般情况下,网络爬虫是一段能够自动抓取网页的程序或软件。几乎所有的网络爬虫都是通过URL地址来确定对应网页的。首先,网络爬虫会得到一个初始地址,获取它所对应的网页内容,将网页内包含的URL地址加入到待抓取的URL队列中,不断的重复上述步骤,直至达到了停止条件或者所有的URL都抓取完毕为止。
其中通用爬虫所使用的爬虫算法为广度优先[6]算法,主要是为了尽可能多的对互联网进行覆盖;而主题爬虫则是尽可能多的抓取和主题相关的网页,这样抓取的资源更专业,更符合需求。
相对于通用爬虫来说,分别增加了计算主题相关度的模块,以及对URL相关度进行评价的模块。通常来说,主要是对上述两个模块的研究来完成对主题爬虫的研究。接下来对主题爬虫和通用爬虫共同拥有的模块进行研究,再分析下主题爬虫特有的两个模块。
网页解析模块:此模块主要的功能就是对上一步抓取的网页进行解析和处理,在处理过程中会对网页进行除噪操作和分词操作。最后把网页的文本信息和网页的链接提取出来,存储到网页库中去。
URL处理模块:此模块主要负责对URL进行各种处理操作,首先检查URL地址的合法性,把那些非法的URL链接去除掉;其次,把重复的URL链接进行删除,这种情况下,如果有一个链接已在待抓取的URL队列中,则将另一个URL删除。
.....................
2.2网络资源解析处理
2.2.1噪声去除
网络爬虫抓取的网络资源是原始的网页资源,上面除含有网页的主题,网页内容等有用信息外,还包含大量和网页主题无关的内容,常见的有广告、脚本代码、网页头部、网页底部、样式代码以及大量的HTML等标签元素。要想获得网页中有价值的信息,就必须对网页进行噪声清除。一般情况下,网页除噪是通过正则表达式的匹配规则来处理的。
2.2.2中文分词技术
汉语中,能够独立表达意思的语言成分是词[10],因此,在对网页进行深加工之前,应该将网页中文本内容包含的词语标识出来,接着才能对词语进行划分以及概念信息的抽取和主题分析等等。现阶段使用范围最广的方法是基于字典的分词方式[11]和基于统计方式的分词方法[12]。基于字典的分词方法,首先将网页中的文本段划分成语句,然后通过将句子进行正向、逆向或者正逆相结合的方式来和字典中已经存在的词条进行匹配,来划分出一个一个的词。而基于统计的方式,则是对文本块中相邻的两个字一起出现的频率进行统计,如果出现的频率大,则他们是词的概率就越大,然后把他们划分成词语。
这两种分词方式各有优缺点,基于字典的方法性能较高,但是对一些新出现的词汇具有较差的识别性甚至识别不出来。而基于统计的方式则在识别新出现词汇上具有明显的优势。在分词中经常使用的分词器有JE分词、CJKAnalyer、庖丁解牛分词器以及中科院开发的ICTCLAS中文分词器。
现在用的最多的是中科院开发的分词器,主要是因为ICTCLAS(Institute of Computing Technology,Chinese Lexical Analysis System)分词系统[13]。
...................
3系统的需求分析和设计.......................................................................................18
3.1需求分析阶段...................................................................................................18
3.2系统开发以及运行环境....................................................................................19
3.3系统整体框架图...............................................................................................19
3.4系统运行原理...................................................................................................20
3.5系统功能模块分析...........................................................................................20
3.6本章小结...........................................................................................................21
4主题爬虫的分析设计与实现...............................................................................22
4.1主题爬虫的分析...............................................................................................22
4.2主题爬虫的关键技术与设计过程....................................................................24
4.2.1并行抓取任务的设计....................................................................................24
4.2.2线程同步设计................................................................................................25
4.2.3数据库存储设计............................................................................................26
4.2.4链接的提取方法............................................................................................28
4.2.5停止协议........................................................................................................29
4.2.6爬行策略的研究............................................................................................30
4.2.7爬行策略的设计............................................................................................32
4.3验证改进效果...................................................................................................36
4.4本章小结...........................................................................................................38
........................
5系统的设计与实现
5.1模块的设计分析
主题爬虫抓取了与主题相关的网页资源,接下来要对这些网页资源进行解析、索引,最后用户在浏览器里面输入关键词进行检索。Lucene的索引和检索功能都非常强大,此处将两者合并在一起研究。
考虑到本文所开发的基于教育领域的垂直搜索引擎的系统需求和Lucene能提供的功能特性,系统的索引模块和检索模块至少应该达到以下设计目标:
(1)必须要能够方便的进行配置更改操作。主要是为了系统的升级方便,能够为了达到不同的系统要求目标来制定不同的配置。如灵活的数据库类型选择、索引存放路径的配置、索引方式的选择、检索组合方式等。
(2)由于Lucene索引的功能非常强大,因此,我们应该在此基础上构造出合理的索引方式,以求达到索引效率和质量的最大化,只有这样才能够提高后续的检索数据的效率。
(3)在网页资源索引之前进行预处理,以提高索引的效率,间接提高整个系统的效率。
(4)用户使用界面应该简洁易用,并且能对搜索结果进行分页显示并且显示在首页的是评分较高的网页。
Lucene作为搜索引擎的底层核心深受大家的喜爱,这主要源于Lucene设计架构以及性能的优良,被广泛应用于各种系统的全文搜索引擎之中。
但是Lucene只具有索引和检索的功能,并不具备网络爬虫的功能,所以,Lucene一般处在网络爬虫的下一层,图5.1为Lucene应用的设计框架图:通过图5.1可以很明显的看出,标准的Lucene架构存在着一些不足,如再次开发的效率较低;开发的系统没有较强的通用性,自己所开发的系统只能用于自己之前设定的特定领域;标准Lucene索引网页资源的方案不够健全,只是简单的对处理过后的网页资源进行索引存库,随着索引文件的逐渐增大,势必会对索引的性能产生较大的影响。
................
结论
互联网无时无刻不处在发展之中,搜索引擎技术也是如此,随着人们生活需求的多样化和专业化,对搜索引擎的要求肯定会越来越高。本文通过研究垂直搜索引擎系统的关键模块和技术,分析需求模块设计,开发了一个基于教育领域的垂直搜索引擎。系统采用业界流行的Java语言进行开发,由于Java系统的跨平台特点,使得系统不需要修改或者做少量修改便能够在其他平台上运行。作为搜索引擎的底层核心包Lucene,提供了丰富的API接口,方便进行升级和二次开发。总结一下本论文的主要工作:
(1)对搜索引擎的关键组成网络爬虫部分进行了研究,设计了一个基于Fish-search
和Shark-search算法的主题爬虫算法,经过验证能够达到较高的爬行效率。
(2)本文设计了一个网页除噪算法,将主题爬虫抓取的网页资源进行除噪,经过验证分析,该除噪算法能够达到较好的除噪效果。
(3)研究了索引的生成方法,使生成索引文件的大小降低了,质量提高了,也就提高了后续检索的效率。
(4)搜索页面设计的简单明了,同时对用户的搜索结果进行分页显示和对查询关键词进行了高亮显示,提高了用户体验。
(5)检索结果的排序还不是很好,未来应该对排序算法进行研究并改进。
(6)本文设计的主题爬虫,适用于研究学习型的小型系统,如果真正运用到商业上还需要对爬取算法和性能继续进行改进。
参考文献(略)