v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
关于互联网信息采集的思考
cf2000
cf2000
2
218
2003-02-11T07:38:00Z
2003-02-11T07:38:00Z
4
368
2101
a
17
4
2580
9.2812
7.8 磅
0
2
关于互联网信息采集的思考
[本文放在这儿以便能集思广益。有建议请发送到karymay@163.net。欢迎访问我的主页http://www.websamba.com/karymay/]
Internet的快速发展给我们提供了丰富的信息,但同时也提出了如何有效加以利用的难题, “丰富的数据与贫乏的知识”问题日益突出。当前对数据进行挖掘的方法一般称为“知识发现”或“数据挖掘”。知识发现涉及到数据收集、数据清洁、数据输出等过程,是统计学、模式识别、人工智能、机器学习等学科相结合的产物。可以认为是这样一个过程:从异构数据源收集信息并转换为用户需要的信息的过程。
信息来源的异构性是网络信息难以再利用的焦点所在。由于网络信息的异构性,导致了互联网信息再利用的“采集难”、“整理难”。国内外很多公司和企业都投入了大量的财力物力进行研发。现在也出现了很多工具和产品,通用型的如Google搜索引擎,比较专业的如mp3搜索引擎。专门用于采集的如《信息仓库》。象Teleplort pro、或者Google后台的Robot程序等可以列入信息收集范畴,本人负责开发的CGRobot程序则有一定的数据重整功能。但是这些产品通常专业化程度很高,不适合于小型企业和个人用户使用。而象Teleport pro虽然个人用户也会使用,但是下载下来的(页面)数据通常需要耗费大量的精力来编辑才能再利用。到目前为止,还没有出现一个既适合个人用户使用,又适合企业使用的比较方便的数据采集和整理工具。
本文试图从另一个角度来进行数据挖掘。也就是认为虽然Internet上的数据虽然非常庞杂,但对于具体的网站和网页,却是有结构的。如果忽略原有的结构关系,尽管思路简单明了,但是受限于人工智能的技术,即使是最先进的系统,也无法满足当前用户应用的大部分需求。
那么如果我们能剖析到原有网站本身具有版面元素的关系、页面之间的关系,然后根据用户的指令,将这些元素之间的关系转换为用户需要的数据,那么我们说采集系统是有效利用了网站制作人的智慧和用户的智慧。
一.网页的特性
本文中把在网页显示时能够表现给用户的元素称为网页元素,包括在视觉、听觉、以及窗口事件相关的元素。它和网页的具体内部元素有一定关系。但是本文更多的是从用户的角度出发。如果不从用户角度出发,则只怕会使得软件难于使用或者功能太弱。
1.网页元素本身具有的属性
1).网页元素具有空间属性。空间属性既表现在网页显示时的平面关系(x、y轴)中,也表现于z轴上。例如一个网页元素可以覆盖另一个元素或者网页的背景等。
2).网页元素具有时间属性。一个网页元素可以不断的运动,还可以在一定的时间显示出来等。
3).网页元素具有事件属性。网页元素可以响应鼠标事件等。
4).网页元素还可以是运动的;也可以表现为听觉方面的(音乐)。
2.网页元素之间的关系
1).空间位置上往往具有相对性。一个网页元素的位置会影响到另一个网页元素。
2).时间上可能具有顺序关系。例如一个元素只有显示后才能显示另一个元素;或者一个元素点击后另一个元素才会发生变化等。
如果把网页元素的概念推广,则可以认为一个窗口也是属于一个(复合的)网页元素。窗口的标题、状态行、URL,等也是属于网页元素。但是在具体设计的时候需要恰当的界定网页元素概念的范围,以避免出现根本无法实现或者很难实现的情况。
3).父子关系。父元素是由子元素复合而成的。在平面显示上通常表现为父元素完全包含子元素(虽然这种关系有时候也会被打破)。
二.信息采集
信息采集表现为用户指定需要采集的内容、这些内容映射到数据库中的哪一部分、以及其他一些采集规则,然后采集系统根据用户提供的这些信息进行采集。很重要的一点是软件系统的易用性。提高易用性的手段可以有多种,例如象Teleport或者CGRobot的采集规则限制;CGRobot的自动提取方法、以及现在的指定网页版面元素及其关系等等。为了形成一个有竞争力的系统,这些手段应该都提供。
现在只考虑网页元素及其关系。这时事实上需要用户告诉采集系统:需要经过哪些步骤(或者事件)然后才采集出什么元素,并把该元素放置到数据库某一部分中。这里面涉及到三个步骤:1) 用户设定采集需要经历的过程;2)
用户设定采集什么样的元素;3)
用户设定这个元素放置到数据库中的哪儿。
下面举个简单的例子,这个例子事实上用其他的方法采集更为方便。
假定我们需要采集下面图1中A区域的所有文档,并且提取图2中的作者,译者和标题以及正文。同时假定我们只能从http://www.websamba.com/karymay进入采集。那么采集过程可以定义为:
导航到(http://www.websamba.com/karymay);
点击“翻译作品”区域;
当A区域重新加载完毕时
{
对于A区域中每个链接
{
点击该链接;
当出现B区域时 //B区域需要用户定义。
『
将B区域中font size大于XX的作为标题。
查找B区域中文本,将“译者:”后面的文本作为译者。
』
}
}
注意B区域中没有再定义子区域。当然也可以给B区域定义为三个区域,即标题,正文,译者。标题区域将规则设置为字体大于多少并且其空间位置位于最上部;而译者可以定义为包含“译者:”字符串的行。
图1
图2
三.信息再整理
当采集的数据放置到数据库中的时候。我们说这时候已经基本上满足用户的需要了。但是可能还存在一些问题。比如由于规则定义不够细致而把不该采集的也采集进来了等。这时用户需要对数据进行手工整理。当考虑实现一个功能强大的系统的时候,还应该考虑信息如何能够灵活的再整理。但是本文就不再讨论这些了。
四.一些规则
1.设计系统时需要不断的提出需求,然后修改系统的定义。如此迭代以便系统具有强大的功能并且是易用的。
2.网站页面和用户需求的映射只有用户自己知道,程序是不知道的。程序只是需要提供一个用户能够将需求告诉程序的通道。有效的利用网站创建者的智慧和用户的智慧远比程序本身具有智能来的简单。
3.优秀的设计来源于对现实的模仿。本文虽然没有讨论数据存储和再整理,但是实现时必须考虑。用户需求的复杂性也导致了数据存储和再整理的复杂性。
4.采集系统是把Internet信息结构映射为用户需求的工具。
5.总是要向前看。还要考虑XML。