好文档 - 专业文书写作范文服务资料分享网站

互联网搜索引擎设计与实现(上)

天下 分享 时间: 加入收藏 我要投稿 点赞

互联网搜索引擎设计与实现(上)

下载引擎 + 文档预处理

互联网搜索引擎课程设计项目Ⅰ

目录

1.项目要求.................................................................................................................................................3 2. 系统环境 ..................................................................................................................................................3 3. 项目总体设计 ........................................................................................................................................3 4. 详细设计 ..................................................................................................................................................4

4.1 下载引擎 ......................................................................................................................................4 4.2 去标签和符号 .............................................................................................................................6 4.3 去停用词或找词干 ....................................................................................................................7 5. 运行结果 ..................................................................................................................................................9

5.1 下载文档模块 .............................................................................................................................9 5.2 文档预处理模块 ..................................................................................................................... 10 5.3 删除停用词模块 ..................................................................................................................... 12 5.4 自动化执行整个模块 ............................................................................................................ 13 6. 日志 ........................................................................................................................................................ 14 7. 收获与感想 .................................................................................................................................. 14 附录Ⅰ:下载引擎 ................................................................................................................................... 15 附录Ⅰ:中文文档预处理 ..................................................................................................................... 17 附录Ⅰ:英文文档预处理 ..................................................................................................................... 20 附录Ⅰ:停用词表转字典 ..................................................................................................................... 23 附录Ⅰ:删除停用词 .............................................................................................................................. 24 附录Ⅰ:自动化shell脚本 ................................................................................................................... 27

第 2 页

互联网搜索引擎课程设计项目Ⅰ

1.项目要求

(一)

建立并实现文本搜索功能

? 利用/调用开源搜索引擎Lucene(http://lucene.apache.org/)或者

Lemur(http://www.lemurproject.org/)实现文本搜索引擎。查阅相关资料,安装软件。 ? 对经过预处理后的500个英文和中文文档/网页建立搜索并实现搜索功能。 ? 通过上述软件对文档建立索引(Indexing),然后通过前台界面或者已提供

的界面,输入关键字,展示搜索结果。 ? 前台可通过网页形式、应用程序形式、或者利用已有的界面工具显示。 ? 必须实现英文搜索功能。中文搜索功能作为可选项。 (二)

比较文档之间的相似度

? 通过余弦距离(Cosine Distance)计算任意两个文档之间的相似度,列出文

档原文,并给出相似度值。 (三)

对下载的文档,利用K-Means聚类算法进行聚类。

? 将下载的500个中文/英文文档聚为20个类,并显示聚类之后所形成的三个

最大的类,及每个类中代表性的文档(即,离类中心最近的五个文档)。 ? 距离计算公式,可采用余弦距离,也可用欧式距离。

2. 系统环境

操作系统:Windows 10专业版

编程语言:Java1.8,HTML5, CSS3, Javascript

编程软件:Eclipse Photon Release (4.8.0)、HBuilder 8.8.0.201706142254

开源搜索引擎:Lucene5.5.5 JAR包: IK分词器:ik2012lucene4.jar Lucene中文分词器:lucene-analyzers-smartcn-5.5.5.jar Lucene 标准分词器:lucene-analyzers-common-5.5.5.jar Lucene核心包:lucene-core-5.5.5.jar Lucene搜索结果高亮标注:lucene-highlighter-5.5.5.jar、lucene-memory-5.5.5.jar Lucene短语查询:lucene-queryparser-5.5.5.jar 索引查看器:luke-5.5.0-luke-release

3. 项目总体设计

该项目是对项目一的补充,由于项目一爬取的内容为网页,为了能让系统检索的结果更好的在前端展示,本项目采用B/S架构,前端为WEB端,能够直接打开检索出来的源HTML文档。 在搜索引擎上,为了更好的保证该IR系统的稳定性,编程语言采用Java1.8。Java在开

第 3 页

互联网搜索引擎课程设计项目Ⅰ

源搜索引擎Lucene上技术已经非常成熟,较Python而言具有先天优势。虽然Apache公司也提供的Lucene的python版本,但各个版本之间的兼容性比较差,且在检索效率和矩阵运算的效率上显然不如Java。 项目前端为浏览器,用户通过浏览器与后端交互。关键字(词)查询时,用户在前端输入关键字,后端返回结果集,并显示在前端。文本相似度查询时,用户上传两个网页预处理之后的txt文档,后端接收文档内容,返回两篇文档的相似度。做聚类处理时,用户通过前端选择需要聚类的数据集合(英文/中文),返回聚类的结果并呈现给用户。 为了更好的满足以上内容,本项目采用MVC模式来设计本项目。

图1. 项目结构

最后,编写linux的shell脚本调用各个模块,将各个模块集成一个完整的自动化系统。

4. 详细设计 4.1 下载引擎

文档的下载通过网络爬虫实现,该过程调用urllib库。 urllib通过urllib.request.Request()函数模拟浏览器的请求体向服务器发出请求,通过urllib.request.urlopen(url)函数获取url链接的数据。 其次,现在大部分的url链接都采用了https安全协议,如果直接使用urllib.request.Request(url)打开https链接,是没法跳过安全认证直接获取数据的,因此,需要设置打开链接时跳过https认证,如下:

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}

req = urllib.request.Request(url, headers=headers) context = ssl._create_unverified_context()

respond = urllib.request.urlopen(req, context=context, timeout=0.5)

批量爬取html文件时,首先需要从一个url爬取数据,然后从爬取的数据中用正则表达式匹配url,并将返回的url列表添加到一个队列中去。 起始的url对爬取的速率和效率都至关重要,为了方便起见,我们直接把一个超链接比

第 4 页

互联网搜索引擎课程设计项目Ⅰ

较多的url作为起始url,如各大门户网站的主页,新闻网站主页等,这里以新浪新闻(https://news.sina.com.cn/)和环球时报(http://www.globaltimes.cn/)作为我们的起始url。 在浏览器中打开这两个链接,进入到开发者模式,查看其代码结构,如图:

图2. 新浪新闻首页结构(中文)

图3. 环球时报首页结构(英文)

如图所示,该url中存在大量以.html或.shtml格式结尾的url。该网址所有的url中,有些url属于POST请求,有些属于GET请求,POST请求需要接受特定的数据格式才能获取数据,因此需要过滤到属于POST请求的url,打开一个html文档属于GET请求,直接通过url就能获取数据,因此,我们只需要爬取这.html和.shtml两种格式结尾的url皆可。 当要爬取网页时,队列的队列头出队,用出队的url去爬取数据,匹配数据中的url,返回符合正则表达式规则的url列表,并将url列表中是以.html或.shtml格式的文件依次添加到队列尾。然后队列头出队,爬取下一个网页,依次循环,下载630个文档后结束。 打开url时,并不能保证所有爬取下来的url链接都能打开,为了减少不必要的等待,为每个url都设置一个响应响应时间是非常有必要的,为每个url都设置了0.5s的响应时间,当超过这个时限依旧未响应时,则丢弃这个url直接爬取下一个url。 批量下载数据的过程可能存在很多无法预料的问题,为了防止下载过程进行到一半时由于发生异常而中断,我们需要做好异常处理。

第 5 页

互联网搜索引擎设计与实现(上)

互联网搜索引擎设计与实现(上)下载引擎+文档预处理互联网搜索引擎课程设计项目Ⅰ目录1.项目要求.........................................................
推荐度:
点击下载文档文档为doc格式
7obat4pxon3qhtz4wh2h1h1yk7phau00sgg
领取福利

微信扫码领取福利

微信扫码分享