人工智能实验报告主题爬虫设计与实现

上传人:亦明 文档编号:141851501 上传时间:2020-08-13 格式:DOC 页数:12 大小:115.77KB
返回 下载 相关 举报
人工智能实验报告主题爬虫设计与实现_第1页
第1页 / 共12页
人工智能实验报告主题爬虫设计与实现_第2页
第2页 / 共12页
人工智能实验报告主题爬虫设计与实现_第3页
第3页 / 共12页
人工智能实验报告主题爬虫设计与实现_第4页
第4页 / 共12页
人工智能实验报告主题爬虫设计与实现_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《人工智能实验报告主题爬虫设计与实现》由会员分享,可在线阅读,更多相关《人工智能实验报告主题爬虫设计与实现(12页珍藏版)》请在金锄头文库上搜索。

1、人工智能实验报告主题爬虫设计与实现 人工主题学学专业学生指导北北京航航工智能题爬虫院浙浙业方向计计生名姓名导师教师北京航空航2航航空航能实验虫设计浙江工业大计算机科学航天大学计计xx年年6月月天天大学学验报告计与实大学交换生学与技术计算机学院月月成绩学学告实现现生生院院主题爬虫的设计与实现 一、引言互联网是一个庞大的非结构化的数据库,将数据有效的检索并组织呈现出来有着巨大的应用前景。 搜索引擎作为一个辅助人们检索信息的工具,但是这些通用性搜索引擎存在着一定的局限性。 不同领域、不同背景的用户往往具有不同的检索目的和需求,通用搜索引擎所返回的结果,包含大量用户不关心的网页。 所以需要一个能基于主

2、题搜索的,满足特定需求的网络爬虫。 为了解决上述问题,参照成功的网络爬虫模式,对网络爬虫进行研究,提供满足特定搜索需求的网络爬虫。 二、实验设计1.实验要求1)可以进行多线程进行抓取;2)可以进行面向主题进行抓取;3)可以分辨重复的的网页内容;4)可以计算主题相关性;5)可以处理网络延时等待的处理;2.实验环境配置1)系统硬件环境LENOVO-G470Intel Core(TM)i3-2330M2.20GHz2)操作系统环境Windows8.1专业版3)实验配置环境Java SEDevelopment Kit7Update45;Eclipse Kepler;MySQL Server5.6;3.

3、实验方案设计1)广度优先搜索策略广度优先搜索策略是指在抓取过程中,在完成当前层次的搜索后,才进行下一层次的搜索。 该算法的设计和实现相对简单。 在目前为覆盖尽可能多的网页,一般使用广度优先搜索方法。 也有很多研究将广度优先搜索策略应用于主题爬虫中,基本思想是认为与初始URL在一定链接距离内的网页具有主题相关性的概率很大。 另外一种方法是将广度优先搜索与网页过滤技术结合使用,先用广度优先策略抓取网页,再将其中无关的网页过滤掉。 这些方法的缺点在于,随着抓取网页的增多,大量的无关网页将被下载并过滤,算法的效率将变低。 2)深度优先搜索策略深度优先搜索策略是一种在开发网络爬虫早期使用得较多的方法,是

4、指网络蜘蛛会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。 当不再有其他超链可选择时,说明搜索已经结束。 3)最佳优先搜索策略最佳优先搜索策略按照一定的网页分析算法,预测候选URL与目标网页的相似度,或与主题的相关性,并选取评价最好的一个或几个URL进行抓取。 它只访问经过网页分析算法预测为“有用”的网页。 存在的一个问题是,在爬虫抓取路径上的很多相关网页可能被忽略,因为最佳优先策略是一种局部最优搜索算法。 因此需要将最佳优先结合具体的应用进行改进,以跳出局部最优点。 研究表明,这样的闭环调整可以将无关网页数量降低30%90%。 4)主题相关度建模

5、向量空间模型向量空间模型是由Salton等人于20世纪60年代末提出,是一种简便、高效的文本表示模型,其理论基础是代数学1。 向量空间模型把用户的查询要求和数据库文档信息表示成由检索项构成的向量空间中的点,通过计算向量之间的距离来判定文档和查询之间的相似程度。 然后,根据相似程度排列查询结果。 向量空间模型的关键在于特征向量的选取和特征向量的权值计算两个部分。 对于任一文档jd D,我们可以把它表示为如下t维向量的形式12(,)j jj tjdw ww=?其中,向量分量tjw代表第i个标引词ik在文档jd中所具有的权重,t为系统中标引词的总数。 在布尔模型中,tjw的取值范围是0,1;在向量空

6、间模型中,由于采用“部分匹配”策略,tjw的取值范围是一个连续的实数区间0,1。 在检索的前处理中,一篇文档中会标引出多个不同的标引词,而这些标引词对表达该篇文档主题的能力往往是不同的。 也就是说,每个标引词应该具有不同的权值。 如何计算文档向量中每个标引词的权值,不仅关系到文档向量的形成,也关系到后续的检索匹配结果。 标引词权重的大小主要依赖其在不同环境中的出现频率统计信息,相应的权重就分成局部权重和全局权重。 局部权重(Local Weight)tjl是按第i个标引词在第j篇文档中的出现频率计算的权重。 它以提高查全率为目的,对在文档中频繁出现的标引项给予较大的权重。 全局权重(Globa

7、l Weight)tjg则是按第i个标引词在整个系统文档集合中的分布确定的权重。 它以提高查准率为目的,对在许多文档中都出现的标引项给予较低的权重,而对仅在特定文档中出现频次较高的标引项给予较大的权重。 计算全局权重的典型方法就是逆文档频率IDF(Inverse DocumentFrequency)加权法()log/i igN n=其中,N为系统文档总数,in为系统中含有标引词ik的文档数。 向量间相似程度的度量方法有内积法(Inner Product)、Dice法(Dice Coefficient)、Jaard法(Jaard Coefficient)和余弦法(Cosine Coefficie

8、nt)。 较常用的度量方法是提问向量和文档向量间的内积法,其计算公式如下1Ni iiQTDT=?其中,iQT是检索提问中检索项i的权值,iDT是文档中标引项i的权值,N为总的项数。 当每个向量都通过余弦法进行加权后,则内积法转换为余弦法。 余弦法采用的相似度计算指标是两个向量夹角的余弦函数。 5)主题爬虫模型建立URL队列URL1URL2.URLn下载网页模块存储模块计算相关度提取网页链接线程取URL插入URL图1-1主题爬虫模型结构1)种子以及关键词的选取在初始化阶段,我们需要给爬虫提供初始的网址和一组与主题相关的关键词。 关键词的提取,我采用的是凭经验手动给出。 同时,每个关键词都需要指定

9、不同的权值,权值的设置方法有两种手工设置和特征提取。 特征提取是指给定一个跟主题有关的网页集合,由程序自动提取这些网页里面共同的特征,并根据频率确定权值。 遵循简洁有效的原则,我选取几组特定的网页,提取词频较高的前20个关键词,所有词的权值均相同。 2)URL队列的运行与维护对于单线程爬虫,可以使用简单的优先队列实现最佳有限算法,每次线程从队列中提取相关度最高的URL链接,运行结束后,将有效的链接插入队列中。 对于多线程爬虫,由于线程之间的耦合度很低,属于并行计算模型。 假若多个线程同时访问URL队列,就会发生异常情况,可能多个线程取到的URL均相同,这样就会间接浪费线程资源。 因为我们希望相

10、同的URL只需要被处理一次就可以了。 同时,在多个线程将有效URL插入队列时,URL队列在同一时间只能为一个线程服务,其余线程送入的URL将会被抛弃。 基于上述考量,我们需要采用给URL队列分配互斥锁,一旦某个线程获得URL队列的使用权,其余线程就忙等待,直到该互斥锁被撤销。 在设计过程中,我只采用一个等待队列,在这个队列中,URL等待被处理,新发现的URL被加入到该队列中。 不相关的URL均被抛弃,完成抓取的URL均存入数据库,不再建立完成队列记录访问的链接。 在Java VirtualMachine中,我们可以使用关键字synchronized,对需要访问的资源加锁。 当两个并发线程访问同

11、一个对象object中的这个synchronized同步代码块时,一个时间内只能有一个线程得到执行。 另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 /提取的URL入队public synchronizedvoid pushUrl()/线程从队列中读取一个URL publicsynchronized StringpopUrl()为了实现最佳优先策略,我们需要扩展URL,集成系统提供的接口Comparable,为其添加优先级的属性,自定义比较大小方法。 如果不采用该策略,系统默认的比较方法是,比较两个URL(String)的字典序大小,这显违背我们的最佳优先策略。 /*具有优先

12、比较的URL类*/public classPriorityURL implementsComparable.public doublepriority;Override/*实现两个URL之间大小的比较方法*/public intpareTo(PriorityURL p)if(priorityp.priority)return1;else if(priority 前面我们已经讨论至“向量空间模型”,在这里我们采用余弦度量法。 具体做法是,统计网页中关键词出现的频率,然后与我们初始的关键词按照公式12211cos,ni iinni iiiw =?,求解得余弦值,即可得到该网页的相关度。 指定一个阈

13、值threshold,当cos,threshold,可以认为该页面和主题是比较相关的,r的取值需要根据经验和实际要求确定,如果想获得较多的页面,可以把r设小一点,要获得较少的页面可以把r设的大一点。 在我们的程序中,默认将阈值r设置为0.9。 4)网页下载与链接提取模块Java提供了一组类用于网络通信java.URL,但是需要繁复的设置来维护一个socket通信。 本次实验只需要下载html纯文本文件,如果能尽量简单的设置网络通信规范,屏蔽基层类的复杂性,能有效减少程序编制时间,提高程序鲁棒性。 因此,我们采用开源Jsoup.jar插件,这个类库提供一组便捷的下载并解析HTML的API。 只要

14、预先给出URL链接,Jsoup库能下载该HTML文件。 事实上,我们还需要注意 Statuscode,只有当链接返回的状态值为200,才表明网页响应正常;若是返回的状态值为404Not Found,表示无法找到指定位置的资源,这时候Jsoup类库就会显示Exception,程序会异常终止。 常用状态表返回值含义200一切正常,响应报文跟在后面400Bad Request,请求出现语法错误403Forbidden,资源不可用404Not Found无法找到指定位置的资源502Bad Gateway,服务器收到无效响应?为了维持一个正常的链接,响应正确的链接,我们必须做必要的设置,可以参考/忽略链

15、接中出现的任何异常,保持程序能持续运行Jsoup.connect(url).ignoreHttpErrors(true);?若是通过代理服务器上网的需要设置系统代理,而且必须在软件中用代码定义,否则仅仅是在Windows操作系统网络设置修改代理,仍会出现java.UnknownHostException这个错误,至于设置方法可以参考/设置代理网络地址System.setProperty(.proxyHost,127.0.0.1);/设置代理端口号System.setProperty(.proxyPort,8182);?由于网络的异构性,与实验环境网络不稳定型,导致一个socket极易因为连接超时,导致java.SocketTimeoutException异常,为此我们需要修改默认设置的超时时间,可以参考/设置超时时间为10s Jsoup.connect(url).timeout

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号