当前位置:文档之家› 信息检索与搜索引擎课程报告

信息检索与搜索引擎课程报告

《信息检索搜索引擎技术》
期末考试报告
学期: 2016-2017学年第一学期
任课教师:***
专业年级:计科133
学号: ************、 ************、
201310405330、 201310405325 学生姓名:李然、毛子铭、张倩、黄枫
目录
一、系统概述 (3)
二、系统需求分析 (3)
2.1功能需求分析 (3)
三、程序实现 (4)
3.1 爬虫的实现 (4)
3.1.1 对网页进行分析 (4)
3.1.2编写爬虫 (5)
3.2索引的实现 (7)
3.2.1分词的实现 (7)
3.2.2索引的建立 (8)
3.2.3检索索引 (9)
3.3向量空间模型的实现 (10)
3.3.1向量空间模型概述 (10)
3.3.2建立向量空间模型 (11)
3.4利用Lucene打分机制对文档打分 (13)
四、测试 (14)
五、心得体会 (17)
一、系统概述
随着互联网的迅猛发展、WEB信息的增加,用户要在信息海洋里查找自己所需的信息,就像大海捞针一样,搜索引擎技术恰好解决了这一难题。

搜索引擎是指互联网上专门提供检索服务的一类网站,这些站点的服务器通过网络搜索软件或网络登录等方式,将Intenet上大量网站的页面信息收集到本地,经过加工处理建立信息数据库和索引数据库,从而对用户提出的各种检索做出响应,提供用户所需的信息或相关指针。

用户的检索途径主要包括自由词全文检索、关键词检索、分类检索及其他特殊信息的检索。

本系统基于HTMLUNIT框架,构建爬虫,基于LUCENE 框架,构建索引,利用向量空间模型向量化表示文档间的相关性,利用
LUCENE给相关文档打分。

二、系统需求分析
2.1功能需求分析
该系统分为四个功能模块:
(1)爬虫模块
(2)索引模块
(3)向量化表示模块
(4)打分模块
具体实现分工如下:
①爬虫模块:该模块采用Htmlunit框架,主要负责爬取网页内容,在
本地建立文档库,以便于索引功能模块,将文档库里的文档内容建立成索引。

(毛子铭所做)
②索引模块:该模块采用Lucene框架,功能分为两块:一是建立索
引,将爬取的内容建立成索引。

二是检索索引,即提供给用户检索索引。

(张倩所做)
③向量化表示模块:该模块采用向量空间模型,其功能是将查询文本
和文档向量化表示,以一种直观的表示方法,展示出文档间的相似度。

(李然、黄枫合做)
④打分模块:该模块采用Lucene打分系统,计算查询文本和文档的相
似度,并对其文档打分。

(李然、黄枫合做)
三、程序实现
3.1 爬虫的实现
3.1.1 对网页进行分析
(1)我们首先,对网页进行分析,昆工新闻上每一则新闻,都有相应的链接,通过点击链接查看相应的新闻。

<1> 昆工新闻网页截图
<2> 新闻内容截图
(2)在浏览器中,查看新闻网的代码,确定我们所需要的内容并用XPATH表达式定位其内容。

<3> 新闻代码截图
3.1.2编写爬虫
(1)在这里,我们使用了HtmlUnit作为我们爬虫的框架,并指定内容,对昆工新闻网进行爬取。

<4> 部分代码展示
(2)编写XPATH表达式,定位所抓取的内容,在爬取过程中,首先要找到新闻的标题,然后,再模拟点击标题的动作,进入新闻页面。

(3)爬取内容,并将其写入文本文档中。

<5> 写入文档
<6>爬取内容
3.2索引的实现
3.2.1分词的实现
(1)在建立索引之前,分词是必不可少的步骤,我们所采用的是基于Lucene 框架的IK分词技术分词。

<7> 部分代码展示
(2)对爬取的内容,进行分词测试。

<9>测试
3.2.2索引的建立
(1)索引的建立,我们也是基于Lucene框架建立的倒排索引,分词技术的不同索引的差别也是很大,因此,分词技术的选取一定要合理。

<10> 部分代码展示
3.2.3检索索引
(1)在这里,我们对爬取好的内容,已经建立好了索引,我们分别测试了“宇宙”、“人民”这两关键词进行检索。

可以看见,符合“人民”这个关键词的文档有2个,符合“宇宙”这个关键词的文档不存在。

<12> 索引
<13> 索引结果3.3向量空间模型的实现
3.3.1向量空间模型概述
向量空间模型将文档映射为一个特征向量V(d)=(t
1,ω
1
(d);…;t
n
, ω
n
(d)),
其中t
i (i=1,2, …,n)为一列互不雷同的词条项,ω
i
(d)为t
i
在d中的权值, 一
般被定义为t
i 在d中出现频率tf
i
(d)的函数,即。

在信息检索中常用的词条权值计算方法为TF-IDF 函数,其中N为所有文档的数目,ni为含有词条ti的文档数目。

TF-IDF公式有很多变种,下面是一个常用的TF-IDF公式:
根据TF-IDF公式,文档集中包含某一词条的文档越多,说明它区分文档类别属性的能力越低,其权值越小;另一方面,某一文档中某一词条出现的频率越高,说明它区分文档内容属性的能力越强,其权值越大。

两文档之间的相似度可以用其对应的向量之间的夹角余弦来表示,即文档di,dj的相似度可以表示为:
进行查询的过程中,先将查询条件Q进行向量化,主要依据布尔模型:当
ti在查询条件Q中时,将对应的第i坐标置为1,否则置为0,即:
从而文档d与查询Q的相似度为:
根据文档之间的相似度,结合机器学习的一些算法如神经网络算法,K-近邻算法和贝叶斯分类算法等,可以将文档集分类划分为一些小的文档子集。

在查询过程中,可以计算出每个文档与查询的相似度,进而可以根据相似度的大小,将查询的结果进行排序。

向量空间模型可以实现文档的自动分类和对查询结果的相似度排序,能够有效提高检索效率;它的缺点是相似度的计算量大,当有新文档加入时,则必须重新计算词的权值。

3.3.2建立向量空间模型
(1)将文档的前十五个关键字作为key并将文件的内容作为value存Treemap 中
<14> 部分代码展示
(2)求两个词项的并集
<15> 部分代码展示(3)求两个词项的交集
<15> 部分代码展示(4)计算文章相似度
<16> 部分代码展示
(5)计算公式:
3.4利用Lucene打分机制对文档打分
(1)在这里,我们是基于Lucene框架,利用其自带打分系统,对查询文本和文档计算它们的相似度,再进行打分。

Lucene打分公式如下:
(2)计算查询文本(TermQuery)与文档的相似度进行打分。

(3)在查找“人民”这两个关键词后出现两个相关文档,它们分别的得分为0.47782254和0.3901917,这说明第一个文档更符合查询
<17> 打分
四、测试
<18> 测试截图1
<19> 测试截图2
<20> 测试截图3
<21> 测试截图4
<22> 测试截图5
<23> 测试截图6
<24> 测试截图7
<25> 测试截图8
<26> 测试截图9
五、心得体会
此次报告要求实现第一个信息检索系统,涉及到多线程编程、排序、网络爬虫等多项技术。

多线程是提高效率的一个非常重要的途径,比如计算机并行计算等,本次实验完成了多线程的任务,对网络间通信以及搜索引擎如何实现向海量用户在很短时间内提供服务有了更深刻的认识。

通过实验我也认识到了多线程编程的边缘。

在下一步的研究学习之中有很大助力。

在此基础之上建立检索,通过对于索引的检索,一方面可以加深对于索引的深层认识,另一方面又可以是我们运用知识与学习知识相结合,可以使我们学的更好,运用的有理可循。

搜索引擎的处理对象是互联网网页,日前网页数量不计其数。

所以搜索引擎首先面临的问题就是:如何能够设计出高效的查询以及下载系统。

网络爬虫是搜索引擎中很关键也很基础的构建,通过网络爬虫的设计,加深了我对实验原理的理解,同时也加强了自身的实践能力。

相关主题