CN103914538A - 基于锚文本上下文和链接分析的主题抓取方法 - Google Patents

基于锚文本上下文和链接分析的主题抓取方法 Download PDF

Info

Publication number
CN103914538A
CN103914538A CN201410128171.2A CN201410128171A CN103914538A CN 103914538 A CN103914538 A CN 103914538A CN 201410128171 A CN201410128171 A CN 201410128171A CN 103914538 A CN103914538 A CN 103914538A
Authority
CN
China
Prior art keywords
main frame
priority
link
represent
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410128171.2A
Other languages
English (en)
Other versions
CN103914538B (zh
Inventor
郑小林
陈德人
林臻
郭华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN201410128171.2A priority Critical patent/CN103914538B/zh
Publication of CN103914538A publication Critical patent/CN103914538A/zh
Application granted granted Critical
Publication of CN103914538B publication Critical patent/CN103914538B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及互联网搜索技术,旨在提供基于锚文本上下文和链接分析的主题抓取方法。该甚于锚文本上下文和链接分析的主题抓取方法包括步骤:计算链接的全局优先级、计算链接局部优先级和计算链接最终优先级。本发明能够快速的估算出网页的质量,能获取链接的上文,并根据上文提高链接主题相关度预测的准确率。

Description

基于锚文本上下文和链接分析的主题抓取方法
技术领域
本发明是关于互联网搜索技术,特别涉及基于锚文本上下文和链接分析的主题抓取方法。
背景技术
随着互联网的飞速发展,各种互联网产品层出不穷,社交网络,即时通讯,网络购物,个人博客,垂直社区等等,这些产品改变了以往人们获取信息的方式。尤其是web2.0时代的到来,使得人人都是信息的产生者。CNNIC发布的《第31次中国互联网络发展状况统计报告》显示,中国的互联网普及率超过四成,网民已经达到5.64亿。
网络上的信息也在爆炸性的增长,根据研究显示,在21世纪初,Google索引的网页为20亿,而当时网络的规模为40亿到100亿左右。网页的增长速度显然远远超过了搜索引擎索引的速度,这就导致了很多网页根本不会通过搜索引擎呈现给大家。
Google或白度等搜索引擎是大家获取网络的资源的主要入口,但研究显示,通用性的搜索引擎存在一定的局限性:
a)不同领域、不同背景的用户往往其有不同的检索目的和需求,通用搜索擎所返回的结果包含大量用户不关心的网页。
h)通用搜索引擎的目标是尽可能大的网络覆盖率,有限的搜索引擎服务器资源与无限的网络数据资源之间的矛盾将进一步加深。
c)万维网数据形式的丰富和网络技术的不断发展,图片、数据库、音频视频多媒体等不同数据大量出现,通用搜索引擎往往对这些信息含密集且具有一定结构的数据无能为力,不能很好地发现和获取。
d)通用搜索引擎大多提供基于关键字的检索,难以支持根据语义信息提出的查询。
用户在搜索的时候,往往出发点是某一个主题领域的信息,而通用搜索引擎会返回大量无关的主题内的信息,这样就导致用户查的信息的准确率和召回率都偏低。为了解决这个问题,大量的垂直搜索引擎应运而生。而主题爬虫是这些主题搜索的基础和关键部分,直接决定了主题搜索的广度和深度,具有很高的研究价值和实际意义。
主题爬虫是一种根据已知主题而爬行下载与其相关页面的程序。与通用网络爬虫不同的是,主题爬虫并不试图抓取互联网上尽可能多的网页,而是试图尽可能多地抓取与主题相关网页。因此主题爬行策略是最为关键的一个研究热点,主题爬虫抓取与用户主题相关的网页的同时尽可能少的遍历不相关的网页,使搜索的范围下幅度缩小,提高资源的利用率。
主题爬虫与通用爬虫最主要的区别在于主题爬虫需要判断抓取到的网页是否属于某个主题,并且需要预测通过哪个url更加可能获取主题相关的网页。从逻辑上来看,主题爬虫主要是多了两个判别过程:文档是否属于主题领域和待抓取的哪个URL更加可能贴近主题。
Chakrabarti等人首先提出了主题爬虫的概念,之后各国学者对主题爬虫的研究越来越多,经过多年的发展,已经有了大批的研究成果。按照主题判断策略,主要可以分为三类:根据网页内容进行判断的主题爬虫;根据链接结构进行判断的主题爬虫:根据锚文本和超链接进行判断的主题爬虫。不管哪一类主题爬虫,均使用了文本分类方法对主题进行识别。
根据网页内容进行判断的主题爬虫:这是最直观最简单的思路,由Chakrabarti等人提出,需要在爬虫的运行过程中把下载器下来的网页进行主题相似度的评分,评分使用朴素贝叶斯分类器,计算出的分数作为网页中的URL的优先级分数,调度器根据这个分数进行调度,于是那些与主题相似度高的网页中抽取出的URL会被优先抓取。
根据Gyongyi等的研究,仅仅根据网页内容进行判断会使爬虫很容易被垃圾信息干扰,并且对每个网页进行分类也非常耗赀计算资源。随着研究的进行,链接上下文的信息,也就是锚文本,被考虑了进来,以帮助快速合理的进行决策。
根据锚文本和超链接进行判断的主题爬虫:这个方面最具代表性的就是llersovici等提出的Shark Scarch算法,它由Dc等提出的Fish Scarch算法发展而来。Fi sh Scarch算法把网页的抓取看作是鱼的觅食和繁衍过程,大体思路如下,每个URL用一条鱼代表,假如这个URL的网页跟主题相关,那么鱼就会觅食和并繁衍下一代(此页面包含的URL),假如URL跟主题不相关,鱼不能觅食,于是就被饿死,这种算法使用二值判断来划分,Shark Search算法对其进行了改进,根据三个因子对子节点进行模糊评分:链接文本,链接上下文和对父节点的相关性的继承。但是这种算法没有利用网页的结构特征,链接上下文区分不够合理,没有使用链接分析网页质量等,根据苏等的研究,算法会导致同一个网页的子链接相关度区分不明显。
基于链接分析的高质量主题爬虫:除了上面介绍的两个方向之外,还有一些研究关注了网页链接结构,也就是网络图的结构,试图从链接分析上获取有关主题的信息。
Chakrabarti等对Kleinberg等提出的HITS算法进行了改进,使在爬虫运行过程中进行周期性的“主题蒸馏”步骤以找到更好的hub页面。这个算法中爬虫会重新访问以及访问过的页面,对于好的hub页画会马上提高他链接到的页面的优先级。
管等指出这个算法的局限性:这个算法需要存储已经下载页面的web图,并且需要迭代的访问和修改这个web图,随着爬虫的运行,web图越来越大,每次迭代的代价都变得非常大,严重影响爬虫的可扩展性。
为此,他们设计了一种叫做OTIE(On-line Topicai Importance Estimation)的算法,具有较好的可扩展性,并且在连接分析的过程中考虑了网页的内容。他的直观思想和pagerank类似:高质量的主题相关网页是那些被其他的高质量主题相关网页所引用的网页。所以,OTIE在页面间传递一种“质量”,这种质量叫做金钱(cash)(cash的概念由Page等提出)。OTIE算法通过链接结构和链接周围一个窗口内的文本,以及父节点的本身的质量来确定子链接的质量,并且通过迭代抓取已经抓取队列中的最高质量的链接来在运行中修正质量的传递不是问题。实验表明,这种方法比shark-search算法略好。
但这个方法没有解释为什么只需要重新抓取最高质量的网页就可以解决网络动态发现过程中的链接质量传递不是的问题,此外,这个方法使用了链接周围的一个窗口来预测链接与主题的相关度,对于窗口的定义缺乏合理性
发明内容
本发明的主要目的在于克服现有技术中的不是,提供一种快速通用并且效果良好的主题爬虫技术。为解决上述技术问题,本发明的解决方案是:
提供基于锚文本上下文和链接分析的主题抓取方法,假设网络中有n个主机,网络上的主机构成了一个有向图,主机相互之间的链接构成了图的边,每个主机就是图中的节点;使用两个向量C[1,...,n]和H[1,...,n]分别表示每个主机的状态,C[i]表示主机i从最后一次访问之后到现在积累的cash值,H[i]表示主机i从一开始到最后一次抓取的时候积累的cash值;
在开始链接网页时,在主机的所有链接网页中,即主机的子网页中,要选择链接网页质量最高的进行优先链接,网页质量通过计算链接最终优先级来判断,链接最终优先级的具体计算包括两部分,第一部分是主机的优先级,即链接的全局优先级;第二部分是链接的局部优先级;最后链接的最终优先级是链接的全局优先级和局部优先级的加权和:
遍历开始前,先给予种子主机初始cash值,种子主机即指在有向图的遍历过程中选取的起点,然后开始对有向图中的主机进行遍历,即开始链接网页进行抓取,在遍历的过程中,每次抓取网页后,设主机为i,并把主机的cash值,即C[i],均等地分给主机链接到的子链接上去,然后把C[i]加到H[i]上,C[i]清零;
其中,n是指主机的数目、i指任意的主机编号;
主机i的子链接的最终优先级计算步骤具体包括:
(1)计算链接的全局优先级
链接的全局优先级是指host-priority(i),即主机i的优先级分数,它也是主机所有的子网页的全局优先级分数,那么一个主机i的全局优先级分数,根据网络情况分别用下述两种方式进行计算:
方式A:若主机i处在静态网络(静态网络就是结构不会改变的网络)中,使用下面的公式一进行计算:
host - priority ( i ) = ( H [ i ] + C [ i ] ) / ( Σ j H [ j ] + Σ j C [ j ] )   公式一;
其中,H[i]表示主机i从一开始到最后一次抓取的时候积累的cash值,C[i]表示主机i从最后一次访问之后到现在积累的cash值,表示所有主机的历史cash值的和,表示所有的主机的当前cash值的和,j是求和中的任意主机的下标:
方式B:若主机i处在动态网络(动态网络就是网络节点数量不确定的网络,并且网络也在变化中,网络中的节点可能会增加,也可能会减少)中,引入一个变量T,设两个时间点t和t-T,用Ht-T,t[i]来表示在t-T到t这个时间段内主机i积累的cash值(即指Ht-T,t[i]=Ht[i]-Ht-T[i]),用Xt,T[i]表示主机i的全局优先级分数,使用下式进行计算:
  公式二;
其中,表示对于任意的i,Xt,T[i]表示主机i的全局优先级分数,ΣjHt-T.t[j]指所有的Ht-T,t[j]的和,其中j是求和中的任意主机的下标:
在这种情况下计算得到的Xt,T[i]即为主机i的全局优先级分数:
为了获得Xt,T[i],采用插值法来计算Ht-Tt[i]:
用G[i]表示主机i最后一次被访问的时间,那么C[i]就表示从G[i]到当前时间t
之间主机i积累的cash值,并通过下面的公式计算Xt,T[i]的值:
H t - T , t [ i ] = H t - T - T , t - T &times; T - ( t - G [ [ i ] ) T + C [ i ] , t - G [ i ] < T C [ i ] &times; T t - G [ i ] , t - G [ i ] &GreaterEqual; T   公式三;
其中,G[i]表示主机i最后一次被访问的时间,T是指窗口时间段,取值为3天,t指当前时间:
至此,可将通过公式三计算的到的Ht-T,j[i]代入公式二,即可得到Xt,T[i],即作为动态网络中,主机i的全局优先级分数:
(2)计算链接局部优先级
设主机i上的任意链接为1,分别通过下述步骤计算链接局部优先级:
步骤A:计算链接1的上下文,记为context(1):
首先,根据链接1所在的HTML页面中,两个相邻内容元素之间的HTML标签的数量和深度,来计算两个内容元素之间的距离;所述内容元素是含有href属性的HTMI.标签;所述HTML标签是HTML代码中用“<”和“>”括起来的内容;
两个内容元素之间的距离计算,具体包括下述步骤:
(a)标签深度的计算:用deep表示HTML标签的深度,且设定deep的初始值为0,然后从头开始遍历链接1所在的HTMI.页面:如果遍历到的当前标签不是闭合标签,则把deep的值加1,如果遍历到的当前标签是闭合标签,则把deep的值减1:然后再继续获取下一个标签,重复上述遍历过程,直到遍历完整个链接1所在的HTML页面,最终得到deep的值即为标签深度;所述闭合标签是指标签内含有“/”的标签;
(b):设a和b表示链接1所在的HTML页面中的任意两个内容元素,用S(a,b)表示两个内容元素a和b之间的内容距离,采用下面的公式四进行计算:
S ( a , b ) = max { &Sigma; k = X a X b | max { y a , y b } - f a , b ( k ) | , &Sigma; k = X a X b | min { y a , y b } - f a . b ( k ) | }
公式四:
其中,Xa和Xb分别表示内容元素a、b在遍历中出现的顺序编号,顺序编号是指从第一个遍历的顺序编号为1,之后依次遍历到依次加1,所得到的编号,ya和yb表示a和h的深度,通过步骤(a)计算得到,fa,b(k)表示内容元素a、b之间的顺序编号为k的元素的标签深度值,这个值也已经在步骤(a)中得到,max{ya,yb}表示ya和yb的最大值、min{ya,yb}表示ya和yb的最小值;
(c):抽取链接的上下文:
首先把链接1所在的HTML页面中的内容元素分块,具体分块方法是遍历链接1所在的HTML页面中的所有内容元素,把步骤(b)中计算得到的任意两个内容元素a、b之间的内容距离,即S(a,b),为0的内容元素分到一个块中:所述块的形式化定义如下:设定G来表示块,块是网页元素的集合,块的集合具有下面的属性: &ForAll; a &Element; G : &ForAll; b &Element; G , S ( a , b ) = 0 , 并且对于任意的块Gc和Gd
然后计算块间的距离:用表示块间距离,并定义块间距离如下面的公式五所示: S g ( G c , G d ) = min ( &ForAll; a &Element; G c , &ForAll; b &Element; G d , S ( a , b ) ) 公式五,也就是说两个块之间内容元索的最小距离便是两个块的距离:其中,表示块Gc和Gd间距离min表示取最小值;
最后抽取链接上下文:设任意的块为c,取这个块前边挨着的块为p,采用公式五计算c和p的块间距离,如果p块内的内容元素个数小于3并且c,p间的块间距离小于20,则p块为c的上文块,否则c的上文块设为空,抽取上文块内的所有文木,作为context(1),即得到链接1的上下文;
步骤B:计算链接1的内容优先级,用sim(1)表示:
sim(1)用于表示链接1的主题相似度,通过锚文本及锚文本的上下文,以及父亲页面计算得出,设链接1所在的页面为pagel:
sim(I)=μ×sim_real(anchor(I)+context(I))+(1.0-μ)×sim_real(pagel)  公式六:
anchor(1)表示链接1的锚文本,context(1)表示链接1在的链接上下文,且通过步骤A计算得到,pagel为链接1的父页面,μ是权衡因子,且μ的值为0.6:
其中sim_real是一个计算文本与主题相似度的方法,例如sim_real(pagel)表示链接1所在页面的文本的主题相似度,sim_real(anchor(I)+context(1))表示把链接1的锚文本和上下文文本连接起来后的主题相似度;
sim_real(J)通过Rocchio分类算法计算,具体方法为:使用Rocchio分类算法分别计算J的文本与正向和负向两个原型向量的距离,分别记为pDistace和nDistance,sim_real(J)=pDistance-nDistance;其中,J是指pagel或者sim_real(anchor(1)+context(I)),分别计算得到sim_real(pagel)和sim_real(anchor(I)+context(1)):
步骤C:计算链接局部优先级,用insite-priori ty(1)表示链接1的局部优先级:
用structure-priority(1)表示链接1的结构优先级分数,insite-priority(1)通过下述公式七进行计算:
insite-priority(1)=λ×structure-priority(I)+(1-λ)sim(1)  公式七;
其中,链接1的结构优先级分数计算为levell表示链接1的层级,层级就是一个链接在主机中的层次(首页为1,首页的子页面为2,依次递增),λ为权衡因子,且λ的值为0.4,sim(1)通过步骤B计算得到:
至此,计算得到的insite-priority(1)值,即为链接i的链接局部优先级分数;
(3)计算链接最终优先级
通过步骤(1)和步骤(2)获取了主机优先级分数和局部优先级分数后,用Hostl来表示抓取到的第i个主机,用Hosti,l来表示主机i上的1链接,Hosti,l的优先级分数,通过下述公式八进行计算:
Hosti,t=α×(host-priority(i))+(1.0-α)×(insite-priority(1))  公式八;
其中,host-priority(i)表示主机i的全局优先级分数,即通过步骤(1)计算得到,insite-priority(1)表示链接1在主机i中的局部优先级分数,即通过步骤(2)计算得到,α是权重因子,用来调节两部分的比重,且α的值为0.4:
重复上述过程,直至计算完成所有主机i的链接的最终优先级分数,子链接(子链接就是指主机中的链接,例如主机i中的链接1就是i主机的子链接)最终优先级分数高的进行优先链接。
作为进一步的改进,所述步骤(1)的主机优先计算和步骤(2)的链接局部优先级的计算是并行进行的。
作为进一步的改进,所述cash(金钱)传递的方式来计算主机的优先级,其基本思想如下,给予种子主机一定的初始cash值(种子主机即在有向图的遍历过程中选取的起点),然后开始对主机进行遍历,在遍历的过程中把当前主机的cash值分配给此主机链出的主机;最后根据主机积累的cash值判断主机的优先级。
本发明的关键点在于:本发明的解决方案在逻辑上包括两步:第一步是链接优先级分数的计算,这步包含两个并行的部分:主机优先级分数的计算部分和链接局部优先级计算部分:第二步是链接主题相关度的排序,这一步将第一步中得出的两种分数加权后进行排序。
主机优先级分数的计算,链接局部优先级计算中的链接上下文抽取是本发明的关键。另外,这些部分的有机结合以及处理阶段的合理性也是本发明的关键。
本发明的逻辑架构如图1所示,两个虚线框包含了第一步链接优先级计算中的两个部分和第二步分数的加权,左上角的虚线框包括第一步中的主机优先级计算方法和第二步加权和的计算,右下角的虚线框中包含了第一步中链接局部优先级的计算方法。
与现有技术相比,本发明的有益效果是:
本发明能够快速的估算出网页的质量,能获取链接的上文,并根据上文提高链接主题相关度预测的准确率。
附图说明
图1为本发明算法整体流程,
图2为主机优先级计算中cash分配的活动图。
图3为链接局部优先级计算的UML活动图。
具体实施方式
下面结合附图与具体实施方式对本发明作进一步详细描述:
(一)主机优先级的计算和链接局部优先级的计算
这两部分的计算是并行进行的,分别进行介绍。
(1)主机优先级的计算。
网络上的主机构成了一个有向图:主机相互之间的链接构成了图的边,每个主机就是图中的节点。这里使用cash(金钱)传递的方式来计算主机的优先级,其基本思想如下:给予种子主机一定的初始cash值(种子主机就是我们在图的遍历过程中选取的起点),然后开始对主机进行遍历,在遍历的过程中把当前主机的cash值分配给此主机链出的主机。最后根据主机积累的cash值判断主机的优先级。
具体来说,选n个种子主机,均等的分配cash,也就是说每个主机有1/n,为了保证web图的强连通性,人为的加上一个虚拟主机:所有其他的主机部指向这个主机,这个主机也指向所有其他的主机cash的分配策略跟前文提到的类似:每抓取一个主机的某个页面的时候,就把这个主机的cash分配给其链接到的其余的主机,并且记录到历史信息中去。最后以cash的历史量来计算主机的优先级分数。
假设网络有n个主机,这个算法中使用两个向量:C[1,…,n]和H[1,…,n]来分别代表每个主机的状态。C[i]表示主机i从最后一次访问之后到现在积累的cash值,H[i]表示主机i从一开始到最后一次抓取的时候积累的cash值。每次抓取网页后,设其主机为i,把主机的cash也就是C[i]均等的分给自己链接到主机上去,然后把C[i]加到H[i]上,C[i]清零。这个过程可以参考图2。
其中,n是指主机的数目、i指任意的主机编号;
在开始链接网页时,在主机的所有链接网页中,即主机的子网页中,要选择链接网页质量最高的进行优先链接,网页质量通过计算链接最终优先级来判断,链接最终优先级的具体计算包括两部分,第一部分是主机的优先级,即链接的全局优先级:第二部分是链接的局部优先级。最后链接的优先级是这两部分的加权和,这里分别进行介绍:
(1)链接的全局优先级计算
链接的全局优先级是指host-priority(i),即主机i的优先级分数,它也是主机所有的子网页的全局优先级分数,那么一个主机i的全局优先级分数,根据网络情况分别用下述两种方式进行计算:
方式A:若主机i处在静态网络(静态网络就是结构不会改变的网络)中,使用下面的公式一进行计算:
host - priority ( i ) = ( H [ i ] + C [ i ] ) / ( &Sigma; j H [ j ] + &Sigma; j C [ j ] )   公式一;
其中,H[i]表示主机i从一开始到最后一次抓取的时候积累的cash值,C[i]表示主机i从最后一次访问之后到现在积累的cash值,表示所有主机的历史cash值的和,表示所有的主机的当前cash值的和,j是求和中的任意主机的下标:
方式B:若主机i处在动态网络(动态网络就是网络节点数量不确定的网络,并且网络也在变化中,网络中的节点可能会增加,也可能会减少)中,引入一个变量T,设两个时间点t和t-T,用Ht-T,t[i]来表示在t-T到t这个时间段内主机i积累的cash值(即指Ht-T,t[i]=Ht[i]-Ht-T[i]),用Xt,T[i]表示主机i的全局优先级分数,使用下式进行计算:
  公式二;
其中,表示对于任意的i,Xt,T[i]表示主机i的全局优先级分数,ΣjHt-T,t[j]指所有的Hi-T,j[j]的和,其中j是求和中的任意主机的下标;
在这种情况下计算得到的Xt,T[i]即为主机i的全局优先级分数;
为了获得Xt,T[i],采用插值法来计算Ht-T,t[i]:
用G[i]表示主机i最后一次被访问的时间,那么C[i]就表示从G[i]到当前时间t之间主机i积累的cash值,并通过下面的公式计算Xt,T[i]的值:
H t - T , t [ i ] = H t - T - T , t - T &times; T - ( t - G [ [ i ] ) T + C [ i ] , t - G [ i ] < T C [ i ] &times; T t - G [ i ] , t - G [ i ] &GreaterEqual; T   公式三;
其中,G[i]表示主机i最后一次被访问的时间,T是指窗口时间段,取值为3天,t指当前时间:
至此,可将通过公式三计算的到的Ht-T,t[i]代入公式二,即可得到Xt,T[i],即作为动态网络中,上机i的全局优先级分数;
(2)链接局部优先级的计算。
链接局部优先级的计算如图3所示,它使用一个混合的计算方法,包含了结构优先级和内容优先级,链接的局部优先级是很多方面分数的加权和,这里分别予以介绍,设主机i上的任意链接为1,分别通过下述步骤计算链接局部优先级:
步骤A:计算链接1的上下文,记为context(1);
首先,根据链接1所在的HTML页面中,两个相邻内容元素之间的HTML标签的数量和深度,来计算两个内容元素之间的距离:所述内容元素是含有href属性的HTML标签:所述HTML标签是HTML代码中用“<”和“>”括起来的内容;
两个内容元素之间的距离计算,具体包括下述步骤:
(a)标签深度的计算:用deep表示HTML标签的深度,且设定deep的初始值为0,然后从头开始遍历链接1所在的HTML页面:如果遍历到的当前标签不是闭合标签,则把deep的值加1,如果遍历到的当前标签是闭合标签,则把deep的值减1:然后再继续获取下一个标签,重复上述遍历过程,直到遍历完整个链接1所在的HTML页面,最终得到deep的值即为标签深度:所述闭合标签是指标签内含有“/”的标签:
(h):设a和h表示链接1所在的HTML页画中的任意两个内容元素,用S(a,b)表示两个内容元素a和b之间的内容距离,采用下面的公式四进行计算:
S ( a , b ) = max { &Sigma; k = X a X b | max { y a , y b } - f a , b ( k ) | , &Sigma; k = X a X b | min { y a , y b } - f a . b ( k ) | }
公式四:
其中,Xa和Xb分别表示内容元素a、h在遍历中出现的顺序编号,顺序编号是指从第一个遍历的顺序编号为1,之后依次遍历到依次加1,所得到的编号,ya和yb表示a和b的深度,通过步骤(a)计算得到,fa,b(k)表示内容元素a、b之间的顺序编号为k的元素的标签深度值,这个值也已经在步骤(a)中得到,max{ya,.yb}表示ya和yb的最大值、min{ya,yb}表示ya和yb的最小值;
(c):抽取链接的上下文:
首先把链接1所在的HTMI.页面中的内容元素分块,具体分块方法是遍历链接1所在的HTML页面中的所有内容元素,把步骤(b)中计算得到的任意两个内容元素a、b之间的内容距离,即S(a,b),为0的内容元素分到一个块中;所述块的形式化定义如下:设定G来表示块,块是网页元素的集合,块的集合具有下面的属性: &ForAll; a &Element; G : &ForAll; b &Element; G , S ( a , b ) = 0 , 并且对于任意的块Gc和Gd
然后计算块间的距离:用表示块间距离,并定义块间距离如下面的公式五所示: S g ( G c , G d ) = min ( &ForAll; a &Element; G c , &ForAll; b &Element; G d , S ( a , b ) ) 公式五,也就是说两个块之间内容元素的最小距离便是两个块的距离:其中,表示块Gc和Gd间距离,min表示取最小值;
最后抽取链接上下文:设任意的块为c,取这个块前边挨着的块为p,采用公式五计算c和p的块间距离,如果p块内的内容元素个数小于3并且c,p间的块间距离小于20,则p块为c的上文块,否则c的上文块设为空,抽取上文块内的所有文本,作为context(1),即得到链接1的上下文;
步骥B:计算链接1的内容优先级,用sim(1)表示:
sim(1)用于表示链接1的主题相似度,通过锚文本及锚文本的上下文,以及父亲页面计算得出,设链接1所在的页面为pagel
sim(I)=μ×sim_real(anchor(I)+context(1))+(1.0-μ)×sim_real(pagel)  公式六:
anchor(1)表示链接1的锚文本,context(1)表示链接1在的链接上下文,且通过步骤A计算得到,pagel为链接1的父页面,μ是权衡因子,且μ的值为0.6:
其中sim_real是一个计算文本与主题相似度的方法,例如sim_real(pagel)表示链接1所在页面的文本的主题相似度,sim_real(anchor(1)+context(1))表示把链接1的锚文本和上下文文本连接起来后的主题相似度:
sim_real(J)通过Rocchio分类算法计算,具体方法为:使用Rocchio分类算法分别计算J的文本与正向和负向两个原型向量的距离,分别记为piistance和nDistance,sim_real(J)=pDistarce-nDistance:其中,J是指pagel或者sim_real(anchor(I)+context(I)),分别计算得到sim_real(pagel)和sim_real(anchor(I)+context(I))。
Rocchio分类算法的过程如下:
首先需要建立主题库,从搜狗实验室下载搜狗的分类数据,该数据集中共有10类数据,包括汽车,财经,IT,健康,体育,旅游,教育,招聘,文化和军事,每一类中含有8000个文档。
从每一类中随机选取400个共4000个文档作为综合性的文档(即二分类问题中的负向类),然后每一类文档随机分成两份,每份4000个,一份用于训练,一份用于检测。
之后使用卡方统计,选出最具有区分度的N个i词,在本文中N取2000,卡方统计公式:
&chi; 2 ( t k , c i ) = N ( a ki d ki - b ki c ki ) 2 ( a ki + b ki ) ( a ki + c ki ) ( b ki + d ki ) ( c ki + d ki )
ci表示类别i,tk表示第k个单词,N表示所有文档的总数;aki为在ci中单词tk出现的频率;bki为非ci类别中tk出现的频率;cki是在类别ci中不出现tk的频率:dki是非ci类中不出现tk的频率。
注:这里的频率是指文档频率。
这2000个词便构成了主题的向量空间,对于前边给定的训练集,首先使用tf-idf计算其向量值供算法使用。
Rocchio算法首先计算每个类的原型向量,如果类cj的原型向量用表示的话,那么其第k个分量tjk可由下面的公式计算得出:
t jk = &beta; ( 1 / | R c | ) &Sigma; d l &Element; R c d ik - &gamma; ( 1 / | R c &OverBar; | ) &Sigma; d l &Element; R &OverBar; c d ik
Rc表示正向文本类的集合,表示负向文本类的集合di表示文本集合中的一个文档,dik表示di文档中的第k个词项(term)的值,β和γ分别表示正向样本和负向样本在分类过程中起的作用。
在本发明中,先计算正向类,也就是属于某一主题类的原型向量,这时β为1,γ为0.然后计算负向类,也就是不属于主题的类的原型向量,这时β为0,γ为1.对于一个给定的待判断文本,分别计算其与正向类和负向类的距离,如果距离正向类较近,那么判为属于主题类,否则判为不属于主题类。
使用Rocchio分类算法分别计算pagel的文本与正向和负向两个原型向量的距离,分别记为pDistance和nDistance,sim_real(pagel)=pDistance-nDistance,向量间距离的计算使用业界标准的文本向量距离计算方法。
步骤C:计算链接局部优先级,用insite-priority(1)表示链接1的局部优先级;
用structure-priori ty(1)表示链接1的结构优先级分数,insite-priority(1)通过下述公式七进行计算:
insite-priority(1)=λ×structure-priority(I)+(1-λ)sim(I)  公式七;
其中,链接1的结构优先级分数计算为level1表示链接1的层级,层级就是一个链接在主机中的层次(首页为1,首页的子页面为2,依次递增),λ为权衡因子,且λ的值为0.4,sim(1)通过步骤B计算得到:
至此,计算得到的insite-priority(1)值,即为链接i的链接局部优先级分数;
(3)计算链接最终优先级
通过步骤(1)和步骤(2)获取了主机优先级分数和局部优先级分数后,用Hostl来表示抓取到的第i个主机,用Hosti,l来表示主机i上的1链接,Hostt,j的优先级分数,通过下述公式八进行计算:
Hosti,j=α×(host--priority(i))+(1.0-α)×(insite-priority(I))  公式八;
其中,host-priority(i)表示主机i的全局优先级分数,即通过步骤(1)计算得到,insite-priority(1)表示链接1在主机i中的局部优先级分数,即通过步骤(2)计算得到,α是权重因子,用来调节两部分的比重,且α的值为0.4:
重复上述过程,直至计算完成所有主机i的链接的最终优先级分数,子链接(子链接就是指主机中的链接,例如主机i中的链接1就是i主机的子链接)最终优先级分数高的进行优先链接。
综合上面的说明,主题抓取算法总体描述如下:
算法从抽象意义上讲是经典的生产者消费者模型:开启两个线程包括抓取线程和主机优先级计算线程,以及一个链接缓存池,抓取线程充当了消费者,他从链接缓存池中获取待抓取链接,抓取此链接的HTML页面,然后抽取这个页面中的URL,经过查重后计算待抓取链接的局部优先级,然后加入到链接库中:主机优先级计算线程充当了生产者,一边计算主机的优先级,一边将链接库中的链接取出,按照上面(3)的方式加权处理后加入到链接缓存池中供抓取线程使用。
最后,需要注意的是,以上列举的仅是本发明的具体实施例。显然,本发明不限于以上实施例,还可以有很多变形。本领域的普通技术人员能从本发明公开的内容中直接导出或联想到的所有变形,均应认为是本发明的保护范围。

Claims (3)

1.基于锚文本上下文和链接分析的主题抓取方法,其特征在于,假设网络中有n个主机,网络上的主机构成了一个有向图,主机相互之间的链接构成了图的边,每个主机就是图中的节点;使用两个向量C[1,...,n]和H[1,...,n]分别表示每个主机的状态,C[i]表示主机i从最后一次访问之后到现在积累的cash值,H[i]表示主机i从一开始到最后一次抓取的时候积累的cash值;
在开始链接网页时,在主机的所有链接网页中,即主机的子网页中,要选择链接网页质量最高的进行优先链接,网页质量通过计算链接最终优先级来判断,链接最终优先级的具体计算包括两部分,第一部分是主机的优先级,即链接的全局优先级第二部分是链接的局部优先级:最后链接的最终优先级是链接的全局优先级和局部优先级的加权和;
遍历开始前,先给予种子主机初始cash值,种子主机即指在有向图的遍历过程中选取的起点,然后开始对有向图中的主机进行遍历,即开始链接网页进行抓取,在遍历的过程中,每次抓取网页后,设主机为i,并把主机的cash值,即C[i],均等地分给主机链接到的子链接上去,然后把C[i]加到H[i]上,C[i]清零:
其中,n是指主机的数目、i指任意的主机编号:
主机i的子链接的最终优先级计算步骤具体包括:
(1)讣算链接的全局优先级
链接的全局优先级是指host-priority(i),即主机i的优先级分数,它也是主机所有的子网页的全局优先级分数,那么一个主机i的全局优先级分数,根据网络情况分别用下述两种方式进行计算:
方式A:若主机i处在静态网络(静态网络就是结构不会改变的网络)中,使用下面的公式一进行计算:
host - priority ( i ) = ( H [ i ] + C [ i ] ) / ( &Sigma; j H [ j ] + &Sigma; j C [ j ] )   公式一;
其中,H[i]表示主机i从一开始到最后一次抓取的时候积累的cash值,C[i]表示主机i从最后一次访问之后到现在积累的cash值,表示所有主机的历史cash值的和,表示所有的主机的当前cash值的和,j是求和中的任意主机的下标;
方式B:若主机i处在动态网络(动态网络就是网络节点数量不确定的网络,并且网络也在变化中,网络中的节点可能会增加,也可能会减少)中,引入一个变最T,设两个时间点t和t-T,用Ht-T,t[i]来表示在t-T到t这个时间段内主机i积累的cash值(即指Ht-T,t[i]=Ht[i]-Ht-T[i]),用Xt,T[i]表示主机i的全局优先级分数,使用下式进行计算:
  公式二;
其中,表示对于任意的i,Xt,T[i]表示主机i的全局优先级分数,∑jHt-T,t[j]指所有的Ht-T,j[j]的和,其中j是求和中的任意主机的下标;
在这种情况下计算得到的Xt,T[i]即为主机i的全局优先级分数;
为了获得Xt,T[i],采用插值法来计算
用G[i]表示主机i最后一次被访问的时间,那么C[i]就表示从G[i]到当前时间t之间主机i积累的cash值,并通过下面的公式计算Xt,T[i]的值:
H t - T , t [ i ] = H t - T - T , t - T &times; T - ( t - G [ [ i ] ) T + C [ i ] , t - G [ i ] < T C [ i ] &times; T t - G [ i ] , t - G [ i ] &GreaterEqual; T   公式三;
其中,G[i]表示主机i最后一次被访问的时间,T是指窗口时间段,取值为3天,t指当前时间:
至此,可将通过公式三计算的到的Ht-T,t[i]代入公式二,即可得到Xt,T[i],即作为动态网络中,主机i的全局优先级分数;
(2)计算链接局部优先级
设主机i上的任意链接为1,分别通过下述步骤计算链接局部优先级:
步骤A:计算链接1的上下文,记为context(1):
首先,根据链接1所在的HTML页面中,两个相邻内容元素之间的HTML标签的数量和深度,来计算两个内容元素之间的距离;所述内容元素是含有href属性的HTML标签;所述HTML标签是HTML代码中用“<”和“>”括起来的内容;
两个内容元素之间的距离计算,具体包括下述步骤:
(a)标签深度的计算:用deep表示HTML标签的深度,且设定deep的初始值为0,然后从头开始遍历链接1所在的HTML页面:如果遍历到的当前标签不是闭合标签,则把deep的值加1,如果遍历到的当前标签是闭合标签,则把deep的值减1:然后再继续获取下一个标签,重复上述遍历过程,直到遍历完整个链接1所在的HTMI.页面,最终得到deep的值即为标签深度;所述闭合标签是指标签内含有“/”的标签;
(b):设a和b表示链接1所在的HTML页面中的任意两个内容元素,用S(a,b)表示两个内容元素a和b之间的内容距离,采用下面的公式四进行计算:
S ( a , b ) = max { &Sigma; k = X a X b | max { y a , y b } - f a , b ( k ) | , &Sigma; k = X a X b | min { y a , y b } - f a . b ( k ) | }
公式四;
其中,Xa和Xb分别表不内容元素a、b在遍历中出现的顺序编号,顺序编号是指从第一个遍历的顺序编号为1,之后依次遍历到依次加1,所得到的编号,ya和yb表示a和b的深度,通过步骤(a)计算得到,fa,b(k)表示内容元素a、b之间的顺序编号为k的元素的标签深度值,这个值也已经在步骤(a)中得到,max{ya,.yb}表示ya和yb的最大值、min{ya,yb}表示ya和yb的最小值:
(c):抽取链接的上下文:
首先把链接1所在的HTML页面中的内容元素分块,具体分块方法是遍历链接1所在的HTML页画中的所有内容元素,把步骤(b)中计算得到的任意两个内容元素a、b之间的内容距离,即S(a,b),为0的内容元素分到一个块中:所述块的形式化定义如下:设定G来表示块,块是网页元素的集合,块的集合具有下面的属性: &ForAll; a &Element; G : &ForAll; b &Element; G , S ( a , b ) = 0 ,并且对于任意的块Gc和Gd
然后计算块间的距离:用表示块间距离,并定义块间距离如下面的公式五所示: S g ( G c , G d ) = min ( &ForAll; a &Element; G c , &ForAll; b &Element; G d , S ( a , b ) ) 公式五,也就是说两个块之间内容元素的最小距离便是两个块的距离:其中,表示块Gc和Gd间距离,min表示取最小值:
最后抽取链接上下文:设任意的块为c,取这个块前边挨着的块为p,采用公式五计算c和p的块间距离,如果p块内的内容元素个数小于3并且c,p间的块间距离小于20,则p块为c的上文块,否则c的上文块设为空,抽取上文块内的所有文本,作为context(1),即得到链接1的上下文;
步骤B:计算链接1的内容优先级,用sim(1)表示:
sim(1)用于表示链接1的主题相似度,通过锚文本及锚文本的上下文,以及父亲页面计算得出,设链接1所在的页画为pagel
sim(1)=μ×sim_real(anchor(1)+context(1))+(1.0-μ)×sim_real(pagel)  公式六:
anchor(1)表示链接1的锚文本,context(1)表示链接1在的链接上下文,且通过步骤A计算得到,pagel为链接1的父页面,μ是权衡因子,且μ的值为0.6;
其中sim_real是一个讣算文本与主题相似度的方法,例如sim_real(page1)表示链接1所在页面的文本的主题相似度,sim_real(anchor(1)+context(1))表示把链接1的锚文本和上下文文本连接起来后的主题相似度:
sim_real(J)通过Rocchio分类算法计算,具体方法为:使用Rocchio分类算法分别计算J的文本与正向和负向两个原型向量的距离,分别记为pDistance和nDistance,sim_real(J)=pDistance-nDistance;其中,J是指pagel或者sim_real(anchor(1)+context(I)),分别计算得到sim_real(pagel)和sin_real(anchor(1)+context(1));
步骤C:讣算链接局部优先级,用insiLe-priority(1)表示链接1的局部优先级;
用structure-priori ty(1)表示链接1的结构优先级分数,insi te-priori ty(1)通过下述公式七进行计算:
insite-priority(1)=λ×structure-priority(1)+(1-λ)sim(1)  公式七;
其中,链接1的结构优先级分数计算为levell表示链接1的层级,层级就是一个链接在主机中的层次(首页为1,首页的子页面为2,依次递增),λ为权衡因子,且λ的值为0.4,sim(1)通过步骤B计算得到;
至此,计算得到的insite-priority(1)值,即为链接i的链接局部优先级分数;
(3)计算链接最终优先级
通过步骤(1)和步骤(2)获取了主机优先级分数和局部优先级分数后,用Hosti来表示抓取到的第i个主机,用Hosti,j来表示主机i上的1链接,Hosti,t的优先级分数,通过下述公式八进行计算:
Hosti,t=α×(host-priority(i))+(1.0-α)×(insite-priority(1))  公式八;
其中,host-priority(i)表示主机i的全局优先级分数,即通过步骤(1)计算得到,insite-priority(1)表示链接1在主机i中的局部优先级分数,即通过步骤(2)计算得到,α是权重因子,用来调节两部分的比重,且α的值为0.4:
重复上述过程,直至计算完成所有主机i的链接的最终优先级分数,子链接(子链接就是指主机中的链接,例如主机i中的链接1就是i主机的子链接)最终优先级分数高的进行优先链接。
2.根据权利要求1所述的基于锚文本上下文和链接分析的主题抓取方法,其特征在于,所述步骤(1)的主机优先级的计算和步骤(2)的链接局部优先级的计算是并行进行的。
3.根据权利要求1所述的基于锚文本上下文和链接分析的主题抓取方法,具特征在于,所述cash(金钱)传递的方式来计算主机的优先级,其基本思想如下:给予种子主机一定的初始cash值(种子主机即在有向图的遍历过程中选取的起点),然后开始对主机进行遍历,在遍历的过程中把当前主机的cash值分配给此主机链出的主机:最后根据主机积累的cash值判断主机的优先级。
CN201410128171.2A 2014-04-01 2014-04-01 基于锚文本上下文和链接分析的主题抓取方法 Active CN103914538B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410128171.2A CN103914538B (zh) 2014-04-01 2014-04-01 基于锚文本上下文和链接分析的主题抓取方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410128171.2A CN103914538B (zh) 2014-04-01 2014-04-01 基于锚文本上下文和链接分析的主题抓取方法

Publications (2)

Publication Number Publication Date
CN103914538A true CN103914538A (zh) 2014-07-09
CN103914538B CN103914538B (zh) 2017-02-15

Family

ID=51040218

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410128171.2A Active CN103914538B (zh) 2014-04-01 2014-04-01 基于锚文本上下文和链接分析的主题抓取方法

Country Status (1)

Country Link
CN (1) CN103914538B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104376406A (zh) * 2014-11-05 2015-02-25 上海计算机软件技术开发中心 一种基于大数据的企业创新资源管理与分析系统和方法
CN106980677A (zh) * 2017-03-30 2017-07-25 电子科技大学 面向行业的主题搜索方法
CN110223206A (zh) * 2019-06-11 2019-09-10 广州蓝鸽软件有限公司 课文专业方向确定方法及系统和解析课件匹配方法及系统
CN110347896A (zh) * 2019-06-12 2019-10-18 国网浙江省电力有限公司电力科学研究院 一种基于PageRank算法的医疗数据爬取方法及系统
CN110532450A (zh) * 2019-05-13 2019-12-03 南京大学 一种基于改进鲨鱼搜索的主题爬虫方法
CN111797945A (zh) * 2020-08-21 2020-10-20 成都数联铭品科技有限公司 一种文本分类方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100578500C (zh) * 2006-12-20 2010-01-06 腾讯科技(深圳)有限公司 一种网页分类方法及装置
CN101452463A (zh) * 2007-12-05 2009-06-10 浙江大学 定向抓取页面资源的方法和装置
CN103226578B (zh) * 2013-04-02 2015-11-04 浙江大学 面向医学领域的网站识别和网页细分类的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
黄仁等: "基于主题相关概念和网页分块的主题爬虫研究", 《计算机应用研究》 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104376406A (zh) * 2014-11-05 2015-02-25 上海计算机软件技术开发中心 一种基于大数据的企业创新资源管理与分析系统和方法
CN104376406B (zh) * 2014-11-05 2019-04-16 上海计算机软件技术开发中心 一种基于大数据的企业创新资源管理与分析方法
CN106980677A (zh) * 2017-03-30 2017-07-25 电子科技大学 面向行业的主题搜索方法
CN106980677B (zh) * 2017-03-30 2020-05-12 电子科技大学 面向行业的主题搜索方法
CN110532450A (zh) * 2019-05-13 2019-12-03 南京大学 一种基于改进鲨鱼搜索的主题爬虫方法
CN110223206A (zh) * 2019-06-11 2019-09-10 广州蓝鸽软件有限公司 课文专业方向确定方法及系统和解析课件匹配方法及系统
CN110223206B (zh) * 2019-06-11 2023-12-08 广州蓝鸽软件有限公司 课文专业方向确定方法及系统和解析课件匹配方法及系统
CN110347896A (zh) * 2019-06-12 2019-10-18 国网浙江省电力有限公司电力科学研究院 一种基于PageRank算法的医疗数据爬取方法及系统
CN110347896B (zh) * 2019-06-12 2021-09-21 国网浙江省电力有限公司电力科学研究院 一种基于PageRank算法的医疗数据爬取方法及系统
CN111797945A (zh) * 2020-08-21 2020-10-20 成都数联铭品科技有限公司 一种文本分类方法

Also Published As

Publication number Publication date
CN103914538B (zh) 2017-02-15

Similar Documents

Publication Publication Date Title
CN103226578B (zh) 面向医学领域的网站识别和网页细分类的方法
CN103914538A (zh) 基于锚文本上下文和链接分析的主题抓取方法
Özel A web page classification system based on a genetic algorithm using tagged-terms as features
CN101751438B (zh) 自适应语义驱动的主题网页过滤系统
CN110717049A (zh) 一种面向文本数据的威胁情报知识图谱构建方法
CN101694658B (zh) 基于新闻去重的网页爬虫的构建方法
CN104933164A (zh) 互联网海量数据中命名实体间关系提取方法及其系统
Matsubara et al. Regime shifts in streams: Real-time forecasting of co-evolving time sequences
US20080168041A1 (en) System and method for focused re-crawling of web sites
CN104199833B (zh) 一种网络搜索词的聚类方法和聚类装置
CN106296312A (zh) 基于社交媒体的在线教育资源推荐系统
CN106201465A (zh) 面向开源社区的软件项目个性化推荐方法
CN111914087B (zh) 一种舆情分析方法
CN105930469A (zh) 基于Hadoop的个性化旅游推荐系统及方法
CN105574047A (zh) 一种基于网站主页特征分析的中文网站分类方法和系统
CN102646095B (zh) 一种基于网页分类信息的对象分类方法和系统
CN101493819A (zh) 一种搜索引擎作弊检测的优化方法
CN108984706A (zh) 一种基于深度学习融合文本和结构特征的网页分类方法
CN103886020A (zh) 一种房地产信息快速搜索方法
CN103761286B (zh) 一种基于用户兴趣的服务资源检索方法
Zeng et al. Multi-grain hierarchical topic extraction algorithm for text mining
Sendhilkumar Developing a conceptual framework for short text categorization using hybrid CNN-LSTM based Caledonian crow optimization
CN103823847A (zh) 一种关键词的扩充方法及装置
CN1766871A (zh) 基于上下文的半结构化数据语义提取的处理方法
CN106372147B (zh) 基于文本网络的异构主题网络构建和可视化方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant