j中的关键词条,Wi,j为该词条
对应的权重。权重是用以刻画关键词在描述文本内容时所起作用的重要程度,权值越大,表示该关键词在文本中的份量越大。然后给出TF-IDF的计算公式:
Wi,j?tfi,j?idfi??tfi?ji,j?idfi?2
19
第三章 电子游戏资源自动搜集的关键技术及改进
其中,Wi,j为词i在文本dj 中的权重,而 tfi,j 为词i在文本dj中的词频,分母为归一化因子。
经过机器自动摘录的关键词库,还要进行人工整理并提交专家评判,最后存入TopicLib表。 3.1.2 种子库设计
由于主题爬虫是面向选定主题的,所以初始种子的赋予应该来自本领域,否则主题爬虫无法展开爬行工作。种子库(CoreURL表)的建立,可以直接从样本网页中选取的面向电子游戏主题的质量较高的种子URL作为初始爬行站点。这个过程通常由人工完成筛选,这样得到的初始化种子的可信度会更高,从而保证爬虫一开始就具有较高的主题相关性。程序在运行过程中会随时保持种子库的更新。
为了主题爬虫所用到的种子库不断有新的种子加入,使之不断可以抓取到新的内容,考虑采用以下三种方式:
1、种子网站的友情链接。
我们基于这样一种假设,如果一个网页相关度很高,则由它链出的某些链接相关度也比较高,比如一个网站的友情链接。手工从样本网页中选取的质量高的URL,提取它的友情链接(链出链接)存放到种子库作为种子URL遍历。
2、在下载的网页库中,统计主机名相同的最多的网址作为种子网址。
主题爬虫在抓取网页后会对之进行相关度判定(相关则入库保存,否则舍弃,具体内容将在3.1.3小节介绍),对于数据库中符合条件的站点,统计主机名相同的最多的URL作为种子URL添加。比如,发现数据库中形如“http://lt.game.cdream.com/*.*”的URL地址数量排在前几位,那它的主机名“http://lt.game.cdream.com/”就认为是很重要,加入到种子库,作为种子URL遍历。
3、用户的检索词,如果没有相关内容,则作为关键词抓取相关内容。
前台交互设计中,允许用户输入检索词,查询相关游戏,如果在数据库中找不到游戏名称,则认为此游戏根本不在资源库中,则将其输入的检索词放入关键词库抓取相关内容。
3.1.3 相关度判定
比起综合性爬虫,主题爬虫加入了相关度判定模块。主题相关度的分析是主题爬虫设计的关键,目前,对于相关度的判定策略主要有两种:基于内容的评价与基于链接结构的评价[28]。基于内容评价的策略是一种根据主题与页面文本内容的相似度来评价网页价值高低的策略。但这种策略的不足之处在于没有考虑到Web页面之间的链接关系。相比之下,基于链接结构的策略则考虑到了Web页面的这种半结构化的特征,该策略正是通过对Web页面之间的相互引用关系来确定链接的重要性,其代表性方法有Page-Rank方法
[16]
[17]
与HITS方法。
由于只考虑页面链接之间的相互引用关系,这种策略存在着“主题漂移”的缺陷。基于此,本系统采取了一种基于综合价值的判定策略,将上述两种方法结合起来对页面的价值进行计算。
20
第三章 电子游戏资源自动搜集的关键技术及改进
一、基于文本内容的判定
在基于内容评价的策略中,我们采用的是使用一个关键词库来分析。基于关键词的主题相关度分析,在主题爬虫设计中取得了较好的效果,主要思路是:首先在领域专家的参与下,通过不同方法确定一组带有权重的并且能够代表受限领域的关键词组成关键词库,用它表示确定的主题;然后对页面进行关键词提取,采用向量空间模型算法计算网页的主题相关度决定页面的取舍。
前述的基于关键词的方案是基于向量空间的算法(VSM),取得了较好的爬行精度,论证了VSM进行主题相关度计算的可行性与有效性。在判定页面相关度时,本文采用了VSM算法。
具体步骤如下:
Step1:关键词库的个数n作为关键词向量空间的维数,用W表示关键词的权重,W=(W1,W2,……,Wn),Wi作为每一维分量的大小;
Step2:关键词向量空间为:???W1,W2,?,Wn?,i?1,2,?,n ;
Step3:分析页面,统计词频。以出现频率最高的词为基准,其频率用Fi?1表示,通过频率比,求出其它关键词的Fi;
Step4:页面主题用向量空间用?表示,???F1W1,F2W2,?,FnW?,i?1,2,?n; Step5:用两个向量夹角的余弦表示页面的主题相关度x:
x?????????F1W1?F2W2???FnWnW1?W2222222n2???W2nF1W1?FW2???FWn22222
Step6:指定一个阈值m,当当x?m时就可以认为该页面和主题是比较相关的,m的取值需要根据经验和实际要求确定,如果想获得较多的页面,可以把m设小一点,要获得较少的页面可以把m设的大一点。 二、基于链接结构的相关度判定
我们知道,基于内容评价的策略仅依靠关键词频进行主题匹配,在对电子游戏式网站进行抓取时查准率低,执行效果比较粗糙。如果在使用VSM进行内容匹配之前,能够使用某种方法预先判定出此网页相关,那将会极大减少程序运行时间,减小系统开销,因此下面介绍一下基于链接结构的策略。
这种策略属于Web结构挖掘研究的范畴。Web结构挖掘主要是从Web的半结构化和链接关系中推导出有用的规则,用来指导网页采集工作提高采集效率。根据科学引文分析理论,文档之间的互联数据中蕴涵着丰富有用的信息,在通常的搜索引擎中由于考虑到结构的复杂性,仅将Web看作是一个平面文档的集合,忽略其结构信息。挖掘页面的结构和Web结构,可以用来提高检索的性能。
文献[18]提出了一种链接分析方法,将页面之间的链接关系分成五种类型:
21
第三章 电子游戏资源自动搜集的关键技术及改进
downward——下行链,目标页面是当前页面的下级页面; upward——上行链,目标页面是当前页面的上级页面; horizontal——水平链,目标页面和当前页面处于同一目录; crosswise——交叉链,目标页面和当前页面不在同一路径上; outward——外向链,目标页面和当前页面不在同一站点。
通常情况下,下行链的目标页面是对当前页面的详细描述,属于2.3.1节提到的资源类页面;上行链的目标页面是对当前页面的概括,类似索引类页面;水平链的目标页面和当前页面属于同一领域内容;交叉链和外向链主要表示和锚点信息指向内容相关。对于水平链接和下行链接,是重点取回的对象,而上行链接、交叉链接和外向链接则要根据具体情况进行判定(比如对比标记之间的锚文本等)。此方法在相关应用领域确实提高了爬行精度,但开销相比来说比较大。
根据本系统的实际情况,结合前面对电子游戏类样本网页的分析,我们发现绝大多数的网站所提供的结构相似的水平链网页,它们的URL也是类似。仔细分析一下,产生这种特点的原因是由于结构相似网页是由一个程序自动生成的。程序按查询数据库中相应的信息并填写到URL相应的位置然后返回给用户。因此我们看到的大部分网页结构是相似的,只是具体内容上有区别。
例如,“http://www.unxue.com/game.php?type=shizi”是云雪网提供的一类识字学字游戏,“http://www.unxue.com/game.php?action=down&bh=shizi-1”与“http://www.unxu e.com/game. php?action=down&bh=shizi-8”是两款具体的游戏,因此我们得出以下两点结论:
①该网站上关于识字学字类游戏资源页面URL都满足这样一种模式:“http://www.unxue.com/game.php?action=down&bh=shizi-\\d+” 。根据这一模板,在使用VSM算法比对页面文本内容前,直接判定些页面为目标页面进行抓取。这样,处在水平链的资源类页面仅从URL就可以判别而与具体网页的内容无关,利用这一点可以使我们大大提高网页分析的速度。
②统计网页数据库中此类链接的数量,如果大于一个给定的阈值,则将“http://www.unxue.com”作为种子URL添加种子库。
在这里需要一个函数来判定两个URL的相同字符数,因为只有两个URL相似字符数非常大时程序才会分析这种结构。定义两个URL相似度函数URL(i,j):
URL(i,j)?a?sim(i,j)len(i)?b?sim(i,j)len(j)
其中,sim(i,j)表示两个URL字符串前面顺序共有的字符数量,len(i)与len(j)表示两个URL的字符串长度,a、b两个是归一化因子,将URL(i,j)在0、1之间取值,一般取a=b=0.5。人工定义一个阈值r,当URL(i,j)?r时,两个网页被判定成相同页面,入库保存。根据需要,本系统设计的r=0.9,后期可以根据实际情况修改此值。 三、基于综合策略的判定
以上共介绍了二种相关度分析的策略,第一种对网页文本内容进行关键词匹配,开销比
22
第三章 电子游戏资源自动搜集的关键技术及改进
较大;第二种基于链接结构的分析,开销较小。
在系统建设过程中,当抓取到一个页面,首先看该页面所在的域名是否具有模板,若有则应用URL链接相似度分析方法分析该页面的URL与该域名的模板URL的相似度是否大于设定的相似度阈值,若大于则认为是一个主题页面,反之则认为该页面不是主题页面。若该域名没有URL模板,则应用VSM方法判断该页面是否是主题相关的页面,若是,则把该页面的URL作为该域名的模板并将该页面加载入库,若不是则抛弃。这样能够有效地节省系统的开销,提高系统的运行效率。
3.1.4 线程机制
主题爬虫eGameCrawler采用多线程机制,并行下载提高收集效率,分担服务器负担
[19]
。
其实从本质上讲,eGameCrawler程序是靠计算机在多个线程之间快速切换达到同时执行多个操作的效果。它每发出一个URL请求,总是要等待页面下载完毕,然后再请求下一个URL。eGameCrawler能够同时请求多个URL,显然能够有效地减少总下载时间。
为此,在设计程序的时候,我们用PageWorker类封装下载单个URL的操作,每当创建该类的一个实例,它就进入循环,等待URL队列中下一个URL可用,这要由其它线程解析文档查找链接才能获得。PageWorker类利用ProcessBegin()和ProcessEnd()方法来确定整个下载操作的开始与终结。
程序将设置线程数量的功能与程序本身分离开,以XML独立文件控制,允许用户自己确定要使用的线程数量。在实践中,线程的最佳数量受许多因素影响,像机器配置,网络带宽等。如果你的机器性能较高,有两个以上的处理器,可以设置较多的线程数量;反之,如果普通PC机、网络带宽有限,设置太多的线程数量其实不一定能够提高性能。
23
第三章 电子游戏资源自动搜集的关键技术及改进
3.2 电子游戏主题信息抽取
通过主题爬虫eGameCrawler抓取下来的游戏式主题网页存放在一级数据库中,作为原始信息。一级数据库中的电子游戏信息以网页形式存在,为半结构化信息,需要对其进行信息抽取,之后结构化存放在二级数据库中作为资源库。
所谓信息抽取(Information Extraction,简称IE),是指对原文档信息内容和结构的分析,从中抽取指定的事件、事实等信息,形成结构化的有价值的数据并存入数据库,供用户查询和使用的过程。也就是从文档中抽取用户感兴趣的事件、实体和关系,被抽取出来的信息以结构化的形式描述,然后存储在数据库中,为情报分析和检测、比价购物、自动文摘、文本分类等各种应用提供服务具有极大的应用空间。
[20]
。目前,信息抽取技术在军事、经济、医学、科学研究等领域
电子游戏教学资源库的信息来源于互联网上的信息,是从半结构化的Web文档中得到电子游戏的描述信息,依次填入资源库元数据要求的模块内。因此,3.2.1节首先对Web信息抽取作了介绍。在3.2.2对本系统用到的信息抽取技术作了具体介绍。
3.2.1 Web信息抽取综述
Web信息抽取(Web Information Extraction,简称为Web IE),是将互联网作为信息源的一类信息抽取,就是从半结构化的Web文档中抽取数据。其核心是将分散Internet上的半结构化的HTML页面中的隐含的信息点抽取出来,并以更为结构化、语义更为清晰的形式表示,为用户在Web中查询数据、应用程序直接利用Web中的数据提供便利。
3.2.1.1 抽取对象分析
Web信息抽取技术的研究对象主要分为三种:
① 结构化文本(Structured Text),它是指按照一定格式严格生成的文本如数据库中的文本信息等。对此类文本的信息抽取非常容易准确率也非常高。
② 自由文本(Free Text),它是指文本中文字合乎于自然语法规则的文本,如新闻报道、科技文献、政府文件等。面向这类对象的抽取技术的现有水平不可与人的能力同日而语,但这并不意味着信息抽取技术不可行。目前来说,其抽取规则的制定多是基于人工编制或使用机器学习技术。
③ 半结构化文本(Semi-structured Text),它是一种介于结构化文本和自由文本化文本之间的数据,文本不完全符合自然语法规则,而且通常比较简短,没有固定格式,如电报报文、分析报表、简短广告文等。
随着互联网的普及,出现了大量的网页,其中绝大多数都属于半结构化文本。处理这类文本的信息抽取技术叫Web信息抽取技术,目前已经成为了信息抽取技术的一个重要分支。本文中针对电子游戏信息用到的信息抽取技术主要是针对网页,因此属于Web信息抽取的范畴。
需要运用