《互联网搜索引擎》
搜索引擎文本预处理
设计与实现
任课教师:
姓 名:
XX 老师
X X X
学 号:
XXXXXXXXXX
专 业:
班 级:
XXXXXXX
XXXXXXXXX
二 O 一 八 年 四 月
1
目录
第一章
第二章
第三章
绪论 .................................................................................................................................................... 3
1.1 搜索引擎出现的背景及意义 ......................................................................................................3
1.2 搜索引擎的发展历史及趋势 ......................................................................................................3
1.3 本文设计要求 ..................................................................................................................................4
1.4 论文结构 ...........................................................................................................................................4
系统结构 ...........................................................................................................................................5
2.1 概述.........................................................................................................................................................5
2.2 系统结构................................................................................................................................................5
2.2.1 爬虫 ...........................................................................................................................................6
2.2.2 信息处理 ..................................................................................................................................6
2.2.3 信息存储 ..................................................................................................................................6
2.3 开发语言................................................................................................................................................6
2.4 小结.........................................................................................................................................................7
爬虫 .................................................................................................................................................... 7
3.1 概述.........................................................................................................................................................7
3.2 爬虫结构分析...................................................................................................................................... 7
3.2.1 爬虫使用框架 ........................................................................................................................ 8
3.2.2 爬虫开发环境 ........................................................................................................................ 9
3.2.3 爬虫模块.............................................................................................................................9
3.3 小结...................................................................................................................................................... 11
信息处理 ........................................................................................................................................ 12
4.1 概述...................................................................................................................................................... 12
4.2 中文文档处理....................................................................................................................................13
4.2.1 停用词过滤处理................................................................................................................. 13
4.2.2 切词处理 ............................................................................................................................... 13
4.2.3 情感词性分析 ......................................................................................................................15
4.2.4 关键词提取.......................................................................................................................... 15
4.2.5 汉语模式词性标注 ............................................................................................................ 15
4.2.6 词频统计 ............................................................................................................................... 16
4.3 英文文档处理....................................................................................................................................17
4.3.1 停用词过滤处理................................................................................................................. 18
4.3.2 特殊字符过滤处理 ............................................................................................................ 18
4.3.3 文档字符化.......................................................................................................................... 19
4.3.4 词性还原、词干化处理 ................................................................................................... 19
4.3.5 词频统计 ............................................................................................................................... 21
4.4 系统运行过程展示.......................................................................................................................... 22
4.5 小结........................................................................................................................................................26
总结 ..................................................................................................................................................26
5.1 总结...................................................................................................................................................... 26
附录......................................................................................................................................................................... 27
第四章
第五章
2
第一章 绪论
1.1 搜索引擎出现的背景及意义
随着互联网的迅速发展,搜索引擎已经成为人们必不可少的一部分。搜索引擎以其强大
的抓取能力,抓取范围现阶段已经覆盖了全网百分之二十的网页。Google(谷歌)的网页
覆盖量有 60 亿左右,百度也达到了十亿左右,而且他们形成了他们自己的生存方式(出售
技术、竞价排名、植入广告等等)。Google 被誉为互联网最伟大的公司,百度成为中国第二
大互联网公司,这都宣告着搜索时代的大发展,搜索引擎给在互联网遨游的人们带来了巨大
的方便。
在没有搜索引擎的时代,用户希望寻找某方面的信息成为了一个极其重要的问题。或者
是网站之间的连接寻址找,可以这样说,脱离的搜索引擎的网站,就像是信息海洋中的一个
个的孤岛,用户必将面临巨大的搜索成本,同时也必将付出大量的时间和精力来获取自己想
要的结果。
而搜索引擎的出现改变了上述的现象,它通过程序的自动搜寻并建立索引,将这些信息
孤岛联系了起来,我们可以比喻的说形成了一张巨大的蜘蛛网,每一条丝都包含了大量的信
息,并且运用分布式计算的巨大力量,能够让用户从海量数据中过滤到无用信息,获取自己
想要的信息。搜索引擎不仅仅节省了用户的时间,通过挖掉搜寻成本这堵大墙,它让许许多
多的不可能成为可能。
1.2 搜索引擎的发展历史及趋势
搜索引擎经历了三代的更新和发展:
第一代:搜索引擎出现于 1994 年。这类搜索引擎一般都索引少于 1000000 个网页,极
少少重新手机网页并自主自动地进行刷新索引。而且其检索速度非常慢,一般都要等待 10
秒甚至更长的时间。
第二代:第二代搜索引擎出现在 1996 年。这类搜索引擎系统大多采用分布式方案(多
个微型计算机协同工作)来提高数据规模、响应速度和用户数量,它们一般都保持一个大约
50000000 个网页的索引数据库,每天能够响应 10000000 次用户的检索请求。
第三代:其出现年限至今没有一个明确的划分。第三代搜索引擎是对第二代搜索引擎在
技术上的改进,主要增加了互动性和个性化等的高级技术,为用户使用搜索引擎获取信息获
得了更好的体验。至于互动性的评价标准是什么,以及第三代搜索引擎与第二代搜索引擎相
比,到底增加了多少价值,目前并没有非常令人信服的研究结论。这也是目前所谓的第三代
搜索引擎并没有表现出太多优势的原因之一。
现在,网络上有很多著名的搜索引擎,比如,Google,百度,yahoo 等等,百度从 2005
年诞生到现在成为全球最大的中文搜索引擎,可想而知,其发展的速度之快,人们对于搜索
引擎的需求是多么的巨大。百度的日点击率目前还真的不能用一个确切的数字来表征,但是
3
我们可以计算一下,截至 2017 年 8 月底,中国网民规模达到了 7.51 亿人。每个网民上网点
击百度的次数应该不少于十次吧,所以我们可以看一下其日点击率是多么的惊人。
搜索引擎经过几年的发展,越来越贴近人们的需求,搜索引擎的技术也得到了很大的反
战。搜索引擎在将来的发展趋势大概有以下几个方面:
1, 提高对用户的输入的理解;
2, 对检索的结果进行更加个性化的处理;
3, 确定搜集返回,提高针对性;
4, 提供更优化的检索结果;
1.3 本文设计要求
本文在深入分析难过过搜索引擎基本原理、架构设计和核心技术的基础上,结合可扩展
的 scrapy 框架、开源搜索引擎 lucene 的实现原理以及多种分词技术,设计并实现了一个可
扩展可复用的小型搜索引擎文本预处理系统。本文的具体工作有以下几个方面:
1. 详细论述了系统结构,系统的设计原则以及目标。明确系统的功能,设计出详细的
系统流程图。
2. 分析了网络爬虫的工作原理,利用可扩展的 scrapy 框架设计出爬虫的部分详细流程
图,并设计实现了系统的爬虫部分。
3. 详细设计了系统的信息处理部分,并且给出了设计流程图。完成了设计的要求,编
程实现了对所下载的文档进行自动预处理:对于英文文档,将各个单词进行字符化,
删除英文停用词,并通过调用 Porter Stemming 功能,实现文档词干化;对于中文
文档,删除停用词,通过 jieba 分词技术实现文档分词,进行字符化处理。
4. 在完成要求功能的基础上,对中文文档:通过 snownlp 技术实现了文本情感词性的
分析,文本关键词的提取功能,通过 pynlpir 技术实现了对切词后的文本进行汉语
词性的标注,并通过字典的处理来实现了对切词后的文本进行词频的统计,为后面
的分析处理做准备;对于英文文档:在词干化处理的过程中,加入了 nltk.stem 词
性还原技术,文本字符化过程中通过 wordnet 实现了对单词的验证,并进行了单词
大小写的转换以及加入了单词的长度限制,为后面的词干化提供了更加有效准确的
处理数据,并通过字典实现了对切词后的文本进行词频的统计。
1.4 论文结构
本文共分为五章
第一章, 绪论。主要阐述了论文的研究背景与意义、搜索引擎的发展现状、发展趋
势、论文的主要工作和组织结构;
第二章, 系统结构。主要对整个系统的概念和功能进行了描述,并且对系统的各个
部分进行了一个大概的介绍,并给出了系统流程图;
第三章, 爬虫。对系统中的爬虫部分的原理进行了详细的说明,对爬虫部分详细设
4
计了流程图,并给出爬虫的部分代码实现以及代码解析。
第四章, 信息处理。对信息处理部分的原理进行了详细的描述,详细设计了流程图,
给出了信息处理部分的代码的实现以及解析,并对结果进行了展示。
第五章, 总结和展望。对整个系统的设计过程和项目进行了总结,并且分析了系统
现有的不足,对不足之处给出了将进行改进的建议。
第二章 系统结构
2.1 概述
搜索引擎文本预处理就是指通过爬虫获取网页文档,并对所下载的文档进行各种处理,
最后变成能被搜索引擎进行识别索引的文档的系统,是为后续实现搜索引擎的功能的一个基
础性数据准备的工具。本系统有三大优势:
1. 本系统采用可扩展的 scrapy 框架,可以根据自己后续的需求进行功能扩充,非常方
便;
2. 本系统实现了将所有步骤集成为一个完整的自动化系统,通过运行调度程序 start.py
文件便可以实现从网页爬取数据、分析数据、存储数据、处理数据等多个功能一步
完成。
3. 本系统采用了大数据分析主流编程语言 Python 来进行系统的实现,其语法清晰,
易于操作纯文本文件,使得整个系统的处理效率更高,性能更稳。
2.2 系统结构
搜索引擎文本预处理系统的结构分为爬虫,数据存储,信息处理,调度四个部分,系统
结构图如 2-1 所示:
图 2-1 系统流程图
5
2.2.1 爬虫
爬虫也可以称作“网络爬虫程序”,“Web 爬虫”,“网络蜘蛛”,“网络机器人”等等各
种称谓。网络爬虫是一个自动化提取网页或者网页中的内容到本地的程序,它为搜索引擎从
万维网上下载网页,是搜索引擎的一个重要组成部分。而传统的爬虫都是从一个或者若干个
初始网页的 URL 开始,获得初始网页上的 URL,在抓取网页的过程中,不断从当前网页上
面抽取新的 URL 放入队列中,直到满足系统的一定停止条件。
2.2.2 信息处理
本系统中的信息处理指两部分:第一部分是指从万维上下载了网页,对网页中包含的信
息进行有选择性地提取和处理,其中包括提取网页中包含的 url。为爬虫的继续提供所需要
的 url,这个是非常重要的,因为没有新的 url 出现的话,爬虫程序就会停止爬取数据,这样
就无法获取自己想要的全面的信息;第二部分则是指对已经爬取好的内容进行处理,比如对
中文进行切词,过滤以及关键词提取等操作,对英文进行切词,过滤以及词频统计等操作,
为后面的排序和索引部分提供相应的信息。
2.2.3 信息存储
信息存储是整个系统中对信息处理的结果进行数据收集的一个过程。也是包含两部分的
信息存储:第一部分是指存储从下载的网页中提取的信息进行原始信息的存档处理,以便为
第二步的信息处理提供数据支撑;第二部分是指对已经存储好的原始文档进行数据预处理,
其中包括对中文的去停用词,特殊字符过滤以及切词、词频统计等处理,也包括对英文的去
停用词,过滤特殊字符,单词字符化以及词频统计等处理。
2.3 开发语言
本文在开发语言上选择的是 Python 语言。Python 语言是数据科学家十分喜爱的编程语
言,其内置了很多由 C 语言编写的库,操作起来更加方便,Python 在我网络爬虫中的传统
应用领域,在大数据的抓取方面具有先天优势,目前,最流行的爬虫框架 Scrapy 框架,HTTP
工具包 urlib2,HTML 解析工具 Beautifulsoup,XML 解析器 lxml,等等,都是能够独当一面
的 Python 类库。
Python 十分适合数据抓取工作,对于大数据的处理,具有以下的优势:
1, 异常快捷的开发速度,代码量少;
2, 丰富的数据处理包,使用起来十分方便,只需要通过导入类库包进行调用即可;
3, 内部类型使用成本低;
4, 百万级别数据可以采用 Python 处理;
6
2.4 小结
Python 适合大数据的抓取、载入和分发,相比与其他语言更加简单、高效;而我们本
文所要求的对中文把文本和英文文本进行数据预处理,用 Python 语言是再适合不过了。再
加上可扩展的 Scrapy 框架,可以使得我们的整个系统非常稳定,在后期维护以及功能的扩
充方面也有很大的优势。但是 Python 可能也是具有一定的局限性的,在进行大数据处理的
过程中,执行效率不高,Python 线程有 gil,多线程的时候只能在一个核上跑,浪费了多核
服务器,因为,设计大数据处理时,可以用 Python 作为整个流程的框架,核心 CPU 密集操
作可以采用 C 语言等编程语言。
第三章 爬虫
3.1 概述
网络蜘蛛(Web Spider),是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么 Spider
就是网上四处爬的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页的,从网站某一个页面
(通常是首页)开始,读取网页的,找到在网页中的其它链接地址,然后通过这些链接地址
再来寻找下一个网页,这样一直循环下去,知道把这个网站上所有的网页都抓取完毕为止。
如果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都
抓取下来。
而对于搜索引擎来说,想要抓取互联网上所有的网页是几乎不可能的事情,从公布的数
据来看,容量最大的搜索引擎也不过是抓取了整个网页数量的百分之四十左右。这其中的原
因之一就是抓取技术的瓶颈,无法遍历所有的网页,有许多网页无法从其他网页的链接中找
到;另一个原因是存储技术和处理技术的不足,如果按照每个页面的平均大小为 20k(包含
图片),100 亿网页的容量是 100x2000G 字节,即使能够存储,下载也存在问题(按照一台
机器每秒下载 20k 来计算,需要 340 台机器不停的下载一年时间,才能把所有的网页下载
完毕)。同时,由于数据量太大,在提供搜索引擎的时候也会存在效率方面的问题。因此,
许多搜索引擎的网络蜘蛛只是抓取那些重要信息的网页,而在抓取的时候评价重要性主要是
依据的某个网页的链接深度。
3.2 爬虫结构分析
爬虫部分分为 URL 管理器、网页下载、网页解析、数据存储、日志记录、异常处理、
爬虫调度七个模块,爬虫部分的流程图如图 3-1 所示,在本章中将对爬虫的工作原理进行详
细的介绍:
7
图 3-1 爬虫流程图
3.2.1 爬虫使用框架
本系统爬虫部分使用的是可扩展框架 Scrapy。Scrapy 是一个为了爬取网站数据,提取
结构性数据而编写的应用框架。Scrapy 是一个使用 Python 编写的,轻量级的,简单轻巧,
并且使用起来非常得方便。Scrapy 底层使用了 Twisted 异步网络库来处理网络通讯。整体框
架大致如图 3-2 所示:
图 3-2 Scrapy 框架
8