摘 要:针对目前主题爬虫采用“启发式”搜索策略出现的“近视”缺点,提出了一种基于蚁群算法的主题爬虫搜索策略。该方法将蚁群算法引入到主题爬虫的搜索策略中,并对蚁群算法中信息素的更新计算进行了改进,使其具有一定的自适应性。通过与其他搜索策略的比较实验,结果表明该算法能够更好地提高爬虫的全局搜索能力。
关键词:主题爬虫;蚁群算法;搜索策略;信息素
主题网络爬虫是根据一定的网页分析算法,过滤与主题无关的链接,保留主题相关的链接并将其放入待抓取的超链接队列中,然后根据一定的搜索策略从队列中选择下一步要抓取的网页链接,并重复上述过程,直到达到系统的某一条件时停止。所有网络爬虫抓取的网页将会被系统存储,进行一定的分析、过滤,并建立索引[1]。相对于通用爬虫,主题爬虫搜索的内容只限于特定主题或专门领域,因而被通用网络爬虫广泛采用的基于广度或深度优先算法已不再适用。目前,主题网络爬虫通常采用启发式搜索策略,每次选择“最有价值”链接进行优先访问,但是这类策略容易过早陷入Web搜索空间中局部最优子空间的陷阱,缺乏全局性,从而导致整体回报率不高[2]。
蚁群算法不仅能够智能搜索和全局优化,而且还具有鲁棒性、正反馈、分布式计算、易于与其他算法结合等特点。利用正反馈原理,可以加快进化过程。分布式计算使该算法易于并行实现,个体之间不断进行信息交流和传递,有利于找到较好的解,不容易陷入局部最优。易与多种启发式算法结合,可改善算法的性能。稳健性强,故在基本蚁群算法模型的基础上进行修改,便可用于其他问题。
结合蚁群算法,本文针对主题爬虫搜索策略上的不足,提出了一种基于蚁群算法的主题爬虫搜索策略。由于对蚁群算法进行了改进,所以提出的算法还具有一定的自适应性。
1 蚁群算法模型
蚁群算法是群集智能体现的一个典型例子,该算法是意大利学者Marco Dorigo[3]等人在1991年受蚂蚁觅食行为的启发而提出的。
蚁群算法借鉴和吸收了现实世界中蚁群的行为特征:蚂蚁属于群居昆虫,个体行为极其简单,而群体行为却很复杂。相互协作的一群蚂蚁很容易找到从蚁巢到食物源的最短路径。此外,蚂蚁还能够适应环境的变化,例如在蚁群的运动路线突然出现障碍物时,它们能够很快地重新找到最优路径。蚂蚁个体之间在觅食过程中通过信息素来进行信息传递,信息素随着时间的推移会逐渐挥发。蚂蚁在觅食过程中能够感知信息素的存在及其强度,并以此来指导自己的运动方向,倾向于朝着信息素强度高的方向移动,即选择该路径的概率与当时这条路径上信息素强度成正比。信息素强度越高的路径,选择它的蚂蚁就越多,则在该路径上留下的信息素的强度就更大,而强度大的信息素又吸引更多的蚂蚁,从而形成一种正反馈。通过这种反馈,使得大部分蚂蚁都会走这个最佳路径。
正反馈的副作用就是当许多蚂蚁都选中同一条路径时,该路径中的信息素量会迅速增大,从而使得多只蚂蚁集中到某一条路径上,造成一种堵塞和停滞现象,表现在使用蚁群算法解决问题时就容易导致早熟和局部收敛。
2 基于蚁群算法的搜索策略
2.1 算法思想