第2章 多源异构数据处理关键技术

2.1 多源异构数据的产生与收集

2.1.1 多源异构数据的产生

随着大数据时代的到来,数据的产生已经完全不受时间、地点的限制。人类社会的数据产生方式大致经历了3个阶段,而正是数据产生方式的巨大变化才最终导致大数据的产生。

(1)运营式系统阶段

数据库的出现使得数据管理的复杂度大大降低,实际中数据库大都为运营系统所采用,作为运营系统的数据管理子系统。比如超市的销售记录系统、银行的交易记录系统、医院病人的医疗记录系统等。人类社会数据量第一次大的飞跃正是从运营式系统广泛使用数据库开始的。这个阶段最主要的特点是数据往往伴随着一定的运营活动而产生并被记录在数据库中,比如超市每销售一件商品就会在数据库中产生一条相应的销售记录,如交易编号、商品编号、销售数量、销售价格。通过查找交易编号和商品编号可以快速查找到销售的所有记录。入库表主要实现入库商品的信息,如入库编号、入库商品编号、单额、总额、入库日期、入库数量以及入库状态。通过查找入库编号,就可以了解入库商品的所有信息。这种数据的产生方式是被动的。

(2)互联网系统阶段

互联网的诞生促使人类社会数据量出现第二次大的飞跃。但是真正的数据爆发产生于Web 2.0时代,而Web 2.0的最重要标志就是用户原创内容(User Generated Content,UGC)。这类数据近几年一直呈现爆发式增长,主要有两个方面的原因:一方面是以博客、微博为代表的新型社交网络的出现和快速发展,使得用户产生数据的意愿更加强烈,另一方面是以智能手机、平板电脑为代表的新型移动设备的出现,这些易携带、全天候接入网络的移动设备使得人们在网上发表自己意见的途径更为便捷。这种数据的产生方式是主动的。

常见的UGC网站有如下类型。

微博:如Twitter、新浪微博等。微博应该是目前最流行的互联网应用之一,它解决了信息的实时更新问题。手机等便携设备的普及让每一个微博用户都可能成为第一现场的信息发布者。

视频分享网络:如 YouTube、优酷土豆等。这类网站以视频的上传和分享为中心,也存在好友关系,但相对于社交网络,这种关系很弱,更多是通过共同喜好而结合。

照片分享网络:如Flickr、又拍网等。这类网站的特点与视频分享网站类似,只不过主体是照片、图片等。

社区、论坛:如百度贴吧、天涯社区等。这类网站的用户往往因共同的话题而聚集在一起。

社交网络:Twitter、Facebook、QQ、微信等。这类网站的好友大多在现实中也互相认识。用户可以更改状态、发表日志、发布照片、分享视频等,从而了解好友动态。

(3)感知式系统阶段

人类社会数据量第三次大的飞跃最终导致了大数据的产生,并且我们正处于这个阶段。这次飞跃的根本原因在于感知式系统的广泛使用。随着技术的发展,人们已经有能力制造极其微小的、带有处理功能的传感器,将这些设备广泛地布置于社会的各个角落,通过这些设备对整个社会的运转进行监控。这些设备会源源不断地产生新数据,这种数据的产生方式是自动的。

当前的传感器网络在科学研究、环境监测、武器装备、工农业生产、日常生活等领域具有非常广阔的应用前景,将使整个社会发生又一次变革。在科学研究领域,传感器网络提供了一种新型的研究手段,可以揭示以往无法或难以观察的现象,可以应用于地震、火山活动过程、生态系统微观行为的观察等研究。传感器网络能够监测温度、湿度、亮度、压力、噪声、物体移动、速度、方向等多种环境状态,可用于森林火警监测、城市空气质量监测、洪水监测等。在军事领域,传感器网络可应用于战场监测及武器装备试验,还可以实现对军用物资的管理,并能够监视士兵的健康状况。传感器网络与农业结合,对农作物和环境进行监测,相应调整水分、肥料和杀虫剂的使用量,以达到低耗费、低污染、高产出,实现所谓的精细农业。在城市中每个车辆上附加一个或多个传感器,监测车辆位置、速度、道路状况和车辆密度等信息,在车辆行驶过程中,这些传感器与经过的其他车辆相互交换信息,驾驶员可以根据交换的信息选择道路,估计到达时间,而城市交通管理部门在对这些信息收集的情况下,可以对整个城市范围的交通状况进行监控。

总而言之,数据产生经历了被动、主动和自动3个阶段。这些被动、主动和自动产生的数据共同构成了大数据的数据来源,但其中自动式数据才是大数据产生的最根本原因。正如谷歌公司的首席经济学家Hal Varian所说,数据是广泛可用的,所缺乏的是从中提取知识的能力。数据收集的根本目的是根据需求从数据中提取有用的知识,并将其应用到具体的领域之中。不同领域的大数据应用有不同的特点,表2-1列举了几种典型大数据应用及其特征。

表2-1 典型大数据应用及其特征

2.1.2 多源异构数据的收集

目前,关于数据收集的研究主要包括两大方面:互联网的数据收集与物联网的数据收集。其中,互联网的数据又包括社交网络、Web、多媒体资源等方面的数据;物联网的数据主要采用无线传感网络与移动群智感知技术进行收集。接下来,将对互联网以及物联网方面的数据收集进行研究。

2.1.2.1 互联网数据的收集

社交网络具有用户大众化、数据内容碎片化、信息传播快速化等特点,用户可以使用智能手机、电脑等随时随地分享和获取数据。其次,社交网络取代传统网络媒体形成虚拟的社会网络,蕴藏着海量的数据信息,不仅是人们分享信息、休闲娱乐的工具,同时也是人们获取知识、建立人际关系的有效途径。社交网络的数据较多地反映了人们生产生活的各种社会现象,以及对某些社会问题的观点和意见。表2-2给出了在社交网络上收集的数据类型的例子,主要收集的数据有用户信息、用户关系信息(包括用户粉丝和用户关注)、微博信息等。

表2-2 数据类型表

社交网络数据的收集可以通过网络爬虫(Crawler)以及利用开放的API两种方式。

网络爬虫是主要以 HTTP 请求的方式获取初始的互联网页面,并顺着此页面的超链接不断抓取,并自动抓取网页信息的程序。世界上第一个网络爬虫——互联网漫游者,出现于1993年,由美国麻省理工学院(MIT)的学生马林·格雷(Matthew Gray)编写。网络爬虫的数据爬取思路为:互联网是网页之间的相互链接,可以把它看成是一个有向图,有向图的节点就是互联网中的网页,而有向图的边,即节点之间的连线就是网页之间的超链接,这样整个互联网就形成了一个巨大的网状图。理论上,网络爬虫的工作流程和数据结构中的图的遍历一样,首先,从一个或者多个初始节点开始,根据得到的页面内容之间的超链接,找到其他的节点,不断重复这个过程,直到最终爬取到整个互联网的网页。图2-1所示为网络爬虫的工作原理。

图2-1 网络爬虫的工作原理

但是实际上不可能爬取到互联网的所有数据,只能说通过优化尽可能多地爬取网络数据,这就需要使用一些搜索策略来实现高数据量采集的目标。爬虫采集网页信息一般可以分为广度优先搜索(Breadth First Search,BFS)策略、深度优先搜索(Depth First Search,DFS)策略和最佳优先搜索策略3种。下面对这3种搜索策略进行具体的介绍。

(1)广度优先搜索策略

广度优先搜索策略是按照目录层次的深浅进行搜索,首先从某一或某些特定种子节点(网页)开始搜索目录层次较浅的节点,当同一层次的所有节点搜索结束,再进行下一层次的搜索,直至所有层次搜索结束。这种搜索策略可以保证节点覆盖率的广度,即能够覆盖网络中的多个领域范围;同时也可以对搜索的深度进行控制。当搜索的维度比较高时,就可以通过控制搜索深度,解决层次较深的网络在短时间内无法结束搜索的问题,避免了系统陷入死循环中,但是,这需要较长时间才能搜索到网络层次较深的网页节点。

(2)深度优先搜索策略

深度优先搜索策略指的是从某一种子节点开始不断地深入搜索分支的下一层次的节点,直到搜索到没有超链接的节点或形成回路,即无法再继续下一层次搜索,搜索完成后返回该分支的上一层次节点,从而进行该分支的其他分支节点的搜索,所有节点都被遍历完成后,则搜索任务完成。这种搜索策略可以保证对某一领域的深度挖掘,即能够尽可能多地搜索到某一特定领域的数据。因此,深度优先搜索策略比较适用于站内搜索或垂直搜索等应用环境。但是,当网络分支的层次较深时,就会造成无法退出某一分支的搜索,从而影响爬行的效率,造成巨大的资源浪费,同时给服务器带来一定的压力。因此,使用网络爬虫获取数据时一般不会优先使用深度优先搜索策略。

(3)最佳优先搜索策略

最佳优先搜索策略是根据网页的分析算法,对将要搜索的网页节点和目标网页节点的关联性或相似程度进行预测判断,然后从中选取评价最高的某一或某些网页节点进行下一步的搜索。这种策略只挖掘那些经过网页分析算法并预测选出的“有用”网页节点,这就有可能造成许多相关的页面节点在爬虫抓取过程中被当作“无用”页面节点而被忽略,因为这种搜索策略仅仅是一种局部最优搜索策略。因此,采用最佳优先搜索策略需要结合具体的应用情况并加以优化,从而跳出局部最优点的局限。

上述的几种搜索策略各有利弊,在使用网络爬虫获取数据时一般不会单独使用一种搜索策略,而是将两种及以上策略结合使用。在实际的挖掘过程中,网络爬虫首先需要从已知的网页作为入口节点开始访问互联网数据,这个入口页面节点一般是指各大网站的首页或 Sitemap 页面等具有代表性的页面,通过对这个入口页面节点的超链接分析,从而更大范围地挖掘整个互联网的数据。从这个入口节点出发利用深度优先搜索策略,通过超链接分析,挖掘下一层次网页节点的数据,为了保证获取数据的广度,可以结合广度优先搜索策略,最大限度地获取多个领域层次的数据。而是否结合最佳优先搜索策略进行数据采集依据实际的应用情况而定。一般情况下,通过网络爬虫多维度获取数据时要对网络数据进行多维度的限制,一般维度限制在3~5层,并结合广度优先搜索和深度优先搜索两种搜索策略来尽可能多地获取互联网上海量的数据资源。

目前典型的网络爬虫框架主要有如下两种。

1.基于Scrapy开源框架的网络爬虫

Scrapy是利用Python语言编写的网络爬虫框架。Scrapy最初的设计目的是页面抓取,或者说是网络抓取,当然也可以用来获取各种接口返回的数据。Scrapy作为爬虫框架,使得爬虫的设计和工作变得快速、简单,同时具有高度的扩展性和顽健性,所以Scrapy在爬虫设计中被广泛使用。

Scrapy中的网络通信,完全使用的是异步网络库Twisted,其具体内部原理实现的整体架构如图2-2所示。

图2-2 Scrapy的整体架构

① Scrapy Engine:为爬虫的引擎驱动部分,负责处理数据流以及触发事务。

② Scheduler:接收Engine发送过来的Request,调度至处理队列,并在Engine再次请求时返回。可以类比为以URL为元素的优先队列,决定了爬虫下一个将要抓取的目标或者网页,同时该部分还要负责URL去重。

③ Downloader:当爬虫获取某个网页时,该部分将此网页内容下载至本机,并返回给爬虫。该部分以异步方式工作,所以在多线程模型中将发挥很大的作用。

④ Spiders:整个爬虫项目中的核心部分,用于从特定的网页结构中提取目标信息,即所谓的实体(Item)。在设计中,用户规定爬虫可以提取网页中的 URL并返回,使其自动运行获取。

⑤ Item Pipeline:Pipeline负责处理爬虫从网页中抽取的实体,比如结构化数据、转存数据库等。当目标被爬虫获取并解析后,就会被发送到Pipeline,经过其中自定义的方法进行依次处理。

⑥ Downloader Middlewares:位于Engine和Downloader之间,负责处理这二者之间的Request以及Response。

⑦ Spider Middlewares:位于Engine和Spider之间,处理爬虫的响应输出和请求输入。

⑧ Scheduler Middlewares:位于Engine和Scheduler之间,负责从Engine发送到网站或者服务器的请求和响应。

⑨ Request:是一个 HTTP 请求的类,对于爬虫而言是一个很重要的类。通常在Spider中创建这样一个请求,在Downloader中执行这样的一个请求。

⑩ Response:Scrapy最终返回的结果对象。

Scrapy的运行流程基本如下。

① 首先,Engine 从Scheduler中调取一个URL作为爬取过程的初始目标。爬虫将从URL开始抓取。

② Engine将URL封装为Request传送给Downloader,Downloader将资源下载到本机,封装为Response。

③ Spider接收Response并调用回调函数。

④ 如果从该Response中接收到实体,则交给Pipeline做后续处理。

⑤ 如果解析的结果为URL,则将URL发送给Scheduler等待被调用抓取。

2.基于Nutch框架的分布式网络爬虫

Nutch是一个开源Java 实现的网络搜索引擎框架,它是最早用到MapReduce的项目(Hadoop原来是Nutch的一部分)。如今,MapReduce编程方式占据了Nutch核心结构的大部分,它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。Nutch主要分为两个部分:网络爬虫和查询。网络爬虫的主要作用是从网络上抓取网页数据并建立索引;查询则主要是利用这些索引检索用户所提交的关键词并产生和返回查找结果。两大部分之间的交汇点是索引,耦合度相对较低。Nutch 爬虫系统的工作流程、原理以及 Nutch 爬虫的基本结构如图2-3所示。

图2-3 Nutch爬虫的系统结构

① 生成列表:根据网页数据库生成一个待抓取网页的链接(即URL)列表。

② 下载线程Fetcher类:在根据确定的待抓取URL列表进行网页抓取时,需要注意的是,如果有多个下载线程,就必须对应生成多个待抓取URL列表,也就是一个Fetcher类的线程对应一个待抓取列表。

③ 更新网页数据库:Nutch在前一次爬虫结束以后会自动更新网页数据库,根据更新后的网页数据库生成新的待抓取URL列表。

④ 重复上述步骤进行下一轮抓取任务。

这个循环进行的过程可以描述为“产生—抓取—更新”循环。

上述过程是Nutch爬虫框架的基本工作流程及基本原理。在Nutch爬虫实现数据抓取的基本系统中,主要完成对待抓取URL列表的抓取和更新。Nutch数据采集过程如图2-4所示。

图2-4 Nutch数据采集过程

3.利用开放的API方式收集

为了方便开发者进行二次开发,很多互联网公司都会提供开放的API给开发者,如新浪微博、腾讯微博、百度地图等。腾讯微博开放平台是腾讯公司给开发者提供的一个获取信息的平台,下面以腾讯微博开放平台为例进行简要介绍。开发者可以根据开放平台提供的API更加方便地获取微博数据。开放平台提供了非常全面、详细的API文档,API见表2-3。

表2-3 腾讯微博API

通过腾讯微博API,用户可以实时地获取微博的相关数据,包括用户资料、用户之间的关系、微博信息、地理位置信息等。而在利用API获取数据之前,要先在腾讯微博开放平台申请应用,图2-5是在开放平台创建应用的流程。首先,用户注册腾讯微博账号登录开放平台,填写基本信息提交审核及电子邮箱验证,通过审核后获得开发者身份,然后创建自己的应用,选择应用类型,创建完成后获得一个 AppKey 和一个 AppSecret,这是平台为开发者提供的用户身份凭证。开发者在调用API进行二次开发时,需要提供身份凭证,同时也方便统计应用的调用频率,从而避免开发者过于频繁地调用API,发生恶意攻击腾讯的事件。

图2-5 开放平台创建应用的流程

通过API获取数据,从理论上讲是一个HTTP轮询(Polling)协议,若用户在同一时间段内访问API的次数过多,就会导致资源服务器崩溃等重大的安全问题。为了保证服务器的负载平衡,要对API的调用权限进行分层。

API 调用权限指在一个特定时间内访问 API 的请求数量,即限制了调用速率。不同应用级别的授权等级也不同。腾讯 API的调用权限等级分为初级授权、高级授权以及腾讯合作方授权,不同等级的授权方式的 API调用权限次数限制见表2-4。

表2-4 API的调用权限次数限制

2.1.2.2 Web数据收集

计算机信息技术和网络技术的发展,使今天的Web成为信息发布、交互和获取的主要工具。与此同时,随着 Web 上信息量的急剧增加,如何自动地从 Web上发现、抽取和过滤信息是一个迫切需要解决的问题。Web上的数据收集是根据用户对于某些信息的需求自动收集Web上的相关信息(包括文本、多媒体信息等)的过程。比如,要了解国内几个主要高校的最新科研信息,系统可以根据这个要求自动查询各高校Web网站上的相关页并返回相关信息。所得的数据集既可以作为最后的结果呈给用户,也可以作为对其进行分析、挖掘的材料,在这个意义上Web数据收集是Web数据挖掘的第一步,因此研究Web数据收集具有一定的意义,以下将对目前Web数据收集的几种方法进行介绍。

1.基于XML技术对Web数据进行收集

目前网络上信息的主要组织形式是以超文本标记语言(Hyper Text Markup Language,HTML)格式存储的半格式化 Web 页面,本节介绍一种基于 XML技术对Web数据进行收集的方法。因为HTML页面只是描述数据的表现形式,不描述数据含义及结构,计算机无法自动识别,因此传统的Web页面数据抽取采用半自动的方式,需要人工介入。XML的出现为自动化Web数据抽取带来了希望,XML是面向语义的语言,能够较好地被计算机所识别,因此对由XML表示的数据进行自动化数据抽取是完全可能的。首先把 Web上HTML页面转化为XML格式,通过XQuery强大的数据查询能力对构建的XML文档库进行查询,查询得到的结果经过 Internet 传送到用户浏览器,从而完成用户所需数据的收集。

图2-6所示的是基于XML技术的Web数据收集的系统模型,它包括4个主要问题:在某个站点通过超链接找到目标HTML页(页面导航),从这个HTML页面中取得相关信息(数据抽取),过滤这些信息并提高它们的结构化(XML 文档的存储),根据用户需求查询相关信息(XML文档的查询)。

图2-6 基于XML的Web数据收集系统模型

(1)页面导航

在数据收集过程中会遇到两种HTML页——包含所需数据的HTML页和链接到所需数据页的HTML页。对于Web站点的导航规则,可以经过仔细分析目标站点,结合所需数据的特点进行手工编写或者借助于一些半自动化的工具编写。

(2)数据抽取

根据用户需求,抽取相关 HTML 页面上的信息。当前许多 Web 站点上的HTML代码格式并不完整,换句话说,HTML对格式完整并没有什么严格要求,解析HTML的浏览器,如IE或Netscape都可以容忍一定格式上的缺陷。因此,首先要把这种格式非良好的HTML文档转变成格式良好的XML文档。其次通过分析XML文档提取用户所需的信息。

(3)XML文档的存储

XML数据的存储技术目前已获得广泛研究,除一些通用的存储系统外,一些专用的存储系统也相继出现,如斯坦福大学研制的Lore系统是较为突出的一个。XML数据存储有3种方式:存储于文件系统中、存储于数据库系统中(关系型数据库或者面向对象的数据库)、建立专门的存储系统。

(4)XML文档的查询

XQuery(XML Query,XML查询)是一种新型的查询工具,用来从类XML文档中提取信息,类XML文档可以理解成一切符合XML数据模型和接口的实体,它们可能是文件或RDBMS。XQuery具有强大的查询、检索功能,它通过各种由关键字、符号、操作数构成的表达式完成查询。

2.基于元搜索技术的Web数据收集

元搜索技术是搜索引擎技术发展的产物。搜索引擎为信息的检索提供了很大的便利,但是互联网的数据量过于庞大,而且每天都以很快的速度增长,搜索引擎索引网页的速度已经远远赶不上网页增长的速度,所以每个搜索引擎的网页覆盖率还是不够的。怎么才可以为用户提供更多、更全的信息?基于这种需求,元搜索技术便应运而生。它将各类搜索引擎的数据进行整合,尽可能多地返回与用户检索请求相关的数据,因此数据的覆盖率和准确率要比在单一搜索引擎的检索要好,这就是元搜索的优势所在。一个常见的元搜索引擎结构如图2-7所示。

图2-7 元搜索引擎结构

由图2-7可知,元搜索引擎在接收到用户的搜索请求之后,将请求进行处理,转化成每个成员搜索引擎可以接受的请求格式,然后通过合理的调度算法调用各个成员引擎。各成员收到请求之后进行独立的检索,最后把检索结果返回元搜索引擎。元搜索引擎再对所有的结果进行整合,消除重复选项,根据特定算法进行排序后返给用户,元搜索技术进行数据收集的流程如下。

(1)请求转化

用户提交的只是一组检索关键词,元搜索引擎需要将它们转化成不同成员引擎可以接受的URL请求形式。不同的搜索引擎都会拥有自己的规则语法特点,因此元搜索引擎应该为每一个成员引擎对象定制一套链接生成规则。同时需要利用每种搜索引擎提供的高级检索功能,如指定字段检索、布尔检索、短语检索、包含或排除检索等功能,使得返回结果更加有针对性。通过这一步所产生的链接,往往称为种子链接,它们是整个元搜索引擎工作的基础。

(2)成员调度

不同成员引擎的网页覆盖能力不同,返回的数据在数量上以及质量上都有所差异。因此,元搜索引擎在开始工作时,一定要结合自身情况以及各个成员引擎的特点,做出适当的调度选择,最大限度地提高元搜索结果的精度与广度。一般在选择策略上,会分成系统选择和用户选择两种。系统选择是指由系统根据每个成员引擎的数据获取能力以及历史任务的结果反馈来选择几个搜索引擎进行工作。用户选择是指系统会为用户提供一个可选择的成员列表,用户根据自己的喜好自行选择数据的来源。后者实现起来比较简单,但是数据收获的效果具有一定的随意性,因为每个用户的主观评价都不太一致。前者实现起来比较复杂,但是数据收获的效果会更好,因为它引入了反馈机制。

(3)结果整合

获取到各个成员引擎返回的数据结果之后,元搜索引擎会对这些搜索结果进行去重、重排序等处理,最后再以页面的形式展现给检索用户。对于同一批检索的关键词,每个成员引擎返回的数据中会存在一定比例的相同数据,这时就需要对整体的数据进行去重处理。常用的去重算法有:基于词频特征的Shingling算法、对文档进行指纹计算的SimHash算法以及对文本串进行分析的SpotSig算法等。去重操作结束之后,需要根据每个文档与检索关键词的相关性进行排序,把与主题最相关的最先返回给用户。

3.多媒体资源收集

目前所说的多媒体资源主要包括文本资源、图片资源、音频资源、视频资源、动画资源等几类。Web网页中是采用HTML来描述的。HTML是一种简单、通用的文本标记语言,可以制作包含文本、图像、声音、视频、动画等内容的网页,并可以提供各网页之间的链接。Web 中的各种多媒体资源通过 HTML 嵌入网页中,Web 浏览器下载 HTML 标记过的文件,并对文件中的标记进行解释,使用户在屏幕上看到结构化的包含文字、图像或其他各种多媒体资源的网页页面。HTML通过标签描述各种资源,且每个标签都有它各自的含义。例如,文字用<hn>标签标记的为标题,用<p>标签标记的为一段落内容。项目列表标签为<ul>、<ol>等,<table>标签用于建立表格布局。各种媒体资源使用的标记如下:Web 网页中的超链接标记用<a>标签来标识超链接文本,以用于网页的区域划分。图片标记用<img>标签,视频或者flash动画用<embed>标签或<object>标签,并可在属性中判断多媒体类型。音频资源用<audio>标签。Web 多媒体资源具体收集过程如下。

(1)网页标题

通过分析<title>标签得到网页标题,网页标题是对该网页内容的概括,网页开发者为了使网页被更多人访问,一般会给一个符合网页内容的标题。

(2)网页内容描述

在网页头部一般都会有<meta>标签,其中Name的属性值分为Description、Keywords等,分别代表网页描述及关键字,主要是用来对该页面的内容进行介绍,提高各类搜索引擎的搜索命中率。

(3)网页字符集

通过在网页头部<meta>标签中读取http-equiv="charset"值,会得到该页面使用的字符编码,一般中文网页字符编码是UTF-8和GB2312。当在读取某个多媒体资源时,地址出现http://www.baidu.com/image/%E8%8B%B9%E6%9E%9Cpicture.jpg,其中,由于处理编码与网页编码不一致,%E8%8B%B9%E6%9E%9C需要进行编码转换,统一编码。

(4)多媒体资源路径获取

图片类型资源采用<img>标签嵌入网页中,其 src 属性的值表示该图像的地址,通过提取<img>标记src属性的值来采集该图片。动画和视频资源URL的获得则是通过分析<embed>标记src属性的值。在分析一个包含某一特定类型的多媒体资源网页时,可能网页里包含多个多媒体资源,所以首先需要定义一个链表,用来存放该网页内多媒体资源的地址。

(5)多媒体资源路径转换

多媒体资源路径在网页中表示的路径不尽相同。在采集前需要将路径进行统一,路径表示有以下几种方式。

当网页地址http://www.aaa.com/abc.html[1]中有图片地址<imgsrc=“b.jpeg”>时,要采集该图片的地址为http://www.aaa.com/b.jpeg。

当网页地址 http://www.aaa.com/abc.html 中有图片地址<imgsrc=“/images/b.png”>时,要采集该图片的地址为http://www.aaa.com/images/b.png。

当网页地址 http://www.aaa.com/service/tupiang/abc.html 中有图片地址<imgsrc=“../../imgs/b.jpeg”>时,要采集该图片的地址为 http://www.aaa.com/imgs/b.jpeg。

4.通用Internet数据库的数据收集

由于现有各种数据库访问方法没有统一的协议标准,因此用户需要使用不同的方法对不同的数据库进行访问,很不方便。此外,各种数据库之间也不能实现数据的共享和交流,这就极大地妨碍了Internet数据资源的流通。通用Internet数据库访问的模式结构由Internet数据库访问客户端应用程序、Internet数据库访问服务器和数据库3部分组成,如图2-8所示。同其他数据库发布系统相比,该系统的特点是在数据库和客户端之间增加了一个接口层——Internet 数据库访问服务器层。该服务器层一方面通过JDBC或ODBC和数据库交互,另一方面通过约定的Internet数据库连接(Internet Data Base Connection,IDBC)协议和客户端交互。客户端只需要连接到服务器上,就可以透明地访问服务器所发布的有关数据库的数据记录,而不必考虑具体的DBMS和OS的要求和限制,这样就可实现通用 Internet 数据库访问服务系统的功能。服务器部分和客户端部分的程序通过TCP/IP建立连接,依照本方案中提出的IDBC协议进行通信。IDBC协议同FTP、TELNET等其他协议一样占据固定端口,接收客户端的连接请求,并根据客户的查询条件返回查询结果。

图2-8 通用Internet数据库访问模式的结构

整个系统的详细结构如图2-9所示。

图2-9 通用Internet数据库访问模式的详细结构

从图2-9中可以看到,该模式的数据库访问分为3层:客户层、服务器层和数据库层。服务器端程序包括服务器配置和服务器运行两部分。其工作原理为:服务器配置根据用户需要配置所要发布的数据库的具体内容及描述,生成配置文件。服务器运行程序启动后,获取配置文件中的配置数据,启动一个后台程序,初始化数据源,系统进入等待状态,并通过一个固定端口接收客户端的连接请求。一旦接收到请求,就为客户生成一个代理线程,该代理线程通过服务器与客户端的SOCKET连接,打开一个数据输入流和一个数据输出流。线程启动后,首先将数据库结构描述信息从输出流发送到客户端,以动态产生查询条件输入窗口,然后输入流接收客户端的查询请求事件(SQL 数据库查询条件语句),通过 JDBC或者 IDBC 连接到相应的数据库进行数据查询,并通过数据输出流输出数据查询结果。客户端有浏览器下的AppLET和独立运行的应用程序两种形式,这两种形式都通过客户端的编程接口对远程数据库的数据进行查询。客户端程序启动时,首先通过输入服务器的IP地址实现与数据库发布服务器的连接,并获取当前发布的数据库的结构描述信息,然后根据这些描述信息动态产生查询条件输入窗口,根据用户输入的查询条件产生标准的SQL传送给服务器代理线程。结果显示,窗口接收服务器的查询结果数据并自动生成图表显示出来。系统处理过程的数据流程如图2-10所示。

图2-10 通用Internet数据库访问模式的数据

2.1.2.3 物联网数据收集

目前,随着社会的发展和科技水平的提高,物理世界的联网需求与信息世界的扩展需求催生出一种新型的网络——物联网(Internet of Things,IoT)。物联网是一种基于互联网、传统电信网等信息载体,让所有能被独立寻址的普通物理对象实现互联互通的网络,近年来受到国内外学术界和工业界的广泛关注和研究。物联网已广泛应用于智能家居、智能交通、智能消防、环境监测、物流快递、食品溯源、工业监测、酒店管理、健康护理等多个领域。物联网的数据类型包括各种传感器采集到的数据,如传感器数据、RFID数据、二维码数据等。物联网的体系架构如图2-11所示。自底向上分别为感知层、网络层、应用层,各层的具体功能介绍如下所述。

图2-11 物联网的体系架构

① 感知层解决的就是人类世界和物理世界的数据获取问题,包括各类物理量、标识、音频、视频数据。感知层一般包括数据采集和数据短距离传输,即首先通过传感器、摄像头、RFID读写器等设备采集外部物理世界的数据,通过蓝牙、红外、ZigBee、工业现场总线等短距离有线或无线传输技术进行协同工作或者传递数据到网关设备。也可以只有数据的短距离传输这一部分,特别是在仅传递物品的识别码的情况下。

② 网络层是在现有网络的基础上建立起来的,它与目前主流的移动通信网、国际互联网、企业内部网、各类专网等网络一样,主要承担着数据传输的功能,特别是当三网融合后,有线电视网也能承担数据传输的功能。网络层能够把感知层感知到的数据无障碍、高可靠、安全地进行传送,它解决的是感知层所获得的数据在一定范围内,尤其是远距离的传输问题。

③ 应用层是物联网发展的驱动力和目的。应用层的主要功能是把感知和传输来的信息进行分析和处理,做出正确的控制和决策,实现智能化的管理、应用和服务。这一层解决的是信息处理和人机界面的问题。

1.基于无线传感器网络的物联网数据收集

无线传感器网络(Wireless Sensor Networks,WSNs)是由大量小型、低成本的传感器节点组成的多跳无线自组织网络,主要用于采集和传播环境数据。近年来,无线传感器网络已经应用在环境监测、医学研究、军事和日常生活等多个领域。无线传感器网络是一种全新的信息获取方式,能够实时监测和采集网络部署区域的多种数据信息,并且将采集的数据信息发送到网关节点。无线传感器网络具有快速部署、抗毁性强、实时性等特点,有着越来越广泛的应用前景。目前,无线传感器网络已经被成功应用到包括军事、自然环境监测、工业生产监测、医疗保健及人类其他日常生活等在内的多个研究领域。

无线传感器系统由传感器节点、汇聚节点(Sink Node)以及终端用户管理节点三大部分组成,如图2-12所示。通过在监测区域随机部署大量传感器节点,节点间以自组织方式构成无线网络,从而对环境进行全面监测。传感器节点采集到的数据沿相邻传感器节点逐跳地进行传输,转发给距离汇聚节点更近的节点或者直接转发到汇聚节点,然后再通过卫星、互联网或者无线接入服务器将环境数据传送给终端用户管理节点。同时,终端用户管理节点也可通过汇聚节点对网内其他传感器节点进行远程实时控制。

图2-12 无线传感器网络的体系结构

2.基于移动群智感知的物联网数据收集

(1)移动群智感知概述

目前,传统的传感器网络主要包括有线静态传感器网络和无线传感器网络。这两种感知网络都需要为某个特定的应用任务在某个特定的区域进行专门的部署和维护,因此,在物联网大规模、细粒度和全面透彻的感知中,部署和维护成本非常高。另外,传统的传感器网络通常只支持某种单一的应用,而数据被多种应用同时使用的场景则很少被考虑到。这就造成了多种上层应用所需要的同一种/类底层数据被多次感知、分析、使用,最终导致资源的浪费。随着无线通信和传感器技术的发展,以及无线移动终端设备的广泛普及,普通用户使用的移动设备(如智能手机和平板电脑等)集成了越来越多的传感器,拥有越来越强大的计算和感知能力。利用众多普通用户现有移动设备中的传感器进行感知,通过已部署的移动互联网(如蜂窝网和Wi-Fi等)进行数据传输,形成了一种新兴的感知网络,即移动群智感知(Mobile Crowd Sensing,MCS)。

移动群智感知网络由于利用现有的感知设备和已部署的通信网络,不需要专门的部署和维护,从而大幅降低了部署维护成本。同时,由于手机等移动设备使用的普适性以及用户的自然移动性,移动群智感知网络能以非常低的成本实现大规模和细粒度的感知。另外,移动群智感知为了高效地支持多种应用,需要明确对通用数据的需求,并能够支持数据在多种应用之间的重用。因此,移动群智感知网络能很好地解决当前大规模感知网络成本高的难题,从而受到广泛关注和研究,并在环境感知、公共基础设施感知以及社会感知等方面取得一定的研究成果和进展。

移动群智感知的发展历史如下所述。

群体智慧:十多年前,美国人Surowiecki写了一本书,名为《群众的智慧》,其中提出了一种普遍现象——将群体的意见聚集后所做出的决定往往比任何一名群体成员单独做出的决定要好。书中指出了使群体变聪明的4个关键因素:观点的多样性、思维的独立性、分散性和意见的聚集。

众包:2005年,来自《连线》杂志的两位资深编辑Jeff Howe和Mark Robinson创造了“众包”这个词。众包被定义为通过向一群人,特别是来自一个网络社区的人收集资源来获取所需服务或内容的方法[1]。一个典型的例子是维基百科,来自世界各地的贡献者共同创造了世界上最大的百科全书。与移动群智感知相比,众包着重于在线人群的参与。

参与式感知:最接近移动群智感知的概念是参与式感知, 2006年由Burke等提出。将日常移动设备组成参与式感知网络,使公众和专业用户能够收集、分析和分享信息。参与式感知强调参与用户身份的明确性。近年来,随着移动感知和移动互联网技术的发展,使用移动设备解决群体问题的范围已经扩大。为此,从两个方面扩展了参与式感知的定义,并提出了移动群智感知的新概念。一方面,移动群智感知的数据源来自移动设备的感知数据和移动社交网络的用户数据。另一方面,移动群智感知明确了用户参与,移动群智感知使用普通用户携带的移动设备组成参与式感知网络,用于数据的收集和共享。

群体智慧和众包都依赖于人的智慧,而参与式感知和移动群智感知探索人机智能的融合。参与式感知强调参与用户身份的明确性,而移动群智感知中参与感知的用户身份既可以是明确的也可以是不明确的。另外,参与式感知收集的数据仅限于线下的移动设备,而移动群智感知则同时利用线下移动设备提供的数据以及用户在社交网络中在线产生的数据。通过底层的数据收集,移动群智感知的数据可以为上层多种应用提供服务。

(2)移动群智感知的系统架构

移动群智感知网络将普通用户的移动设备(手机、平板电脑等)作为基本感知单元,通过移动互联网进行有意识或无意识的协作,实现感知任务分发与感知数据收集,完成大规模的、复杂的社会感知任务。它既为物联网提供了一种全新的感知模式,同时也带来了一系列新的挑战,逐渐成为国内外的研究热点。与传统的无线传感器网络相比,移动群智感知网络的一个最重要的特点是“以人为中心”,就是说人将参与整个感知过程,既是感知数据的“消费者”,又是感知数据的“生产者”。移动群智感知系统架构[2]如图2-13所示,感知层完成数据的采集,无论是参与式感知还是移动群智感知,都由终端采集用户数据并上传。处理应用层通常是为了发现某种知识或者统计某种结果而对大数据进行深层分析。

图2-13 移动群智感知系统架构

① 感知层。感知层是移动群智感知网络中数据获取的基本层和核心层。它利用智能手机等移动设备上集成的大量传感器对物质性质、环境状态、行为模式和人的状态等信息进行感知。例如,加速度传感器可感知物体运动的加速度以及城市道路的平坦程度等信息,麦克风可感知城市的噪声污染水平,GPS传感器和Wi-Fi信号检测器可以感知物体的位置和速度等。

② 传输层。传输层主要负责把下层(感知层)感知的数据传输到云中心服务器。移动群智感知网络利用已部署的网络设施进行数据传输。由于用户众多,且每个用户的设备以及所能连接的网络各不相同,因此,传输层包含的网络众多。互联网以及下一代互联网是移动群智感知网络传输层的核心网络,各种无线网络也被广泛利用。例如,无线广域网(包括现有的移动通信网络和其升级技术3G以及4G)是移动群智感知网络中将用户手机感知的数据传送到中心服务器的主要方式。随着当前Wi-Fi大面积部署和使用,无线局域网可为一定区域内(如家庭、校园、街道和商场等)的用户提供通信网络。无线个域网(如蓝牙)也可将部分用户的感知数据通过其他用户的中继,传输到中心服务器。此外,由于有些用户在某些场景或某些时间内不能获取任何网络,因此,容迟网络(Delay Tolerant Network,DTN)技术也可被用来将感知数据传送到中心服务器。

③ 数据收集层。在这一层,感知平台的数据收集模块通过激励用户参与、进行用户选择和任务分配等实现感知任务的分配与数据的收集。

④ 数据处理层。本层主要用于对大量的原始数据进行数据清洗、融合、处理和分析,最终一些数据将通用于非特定的应用,一些数据则用于特定的群智感知应用。

⑤ 应用层。本层通过友好的用户交互界面和 App 等为用户提供多种类型的应用服务。

3.移动群智感知的生命周期

通常,移动群智感知的生命周期包括:根据需要创建移动群智感知应用程序,向参与者分配感知任务,在个体参与者的移动设备上执行任务(感知、计算和上传),以及收集和处理感知数据。因此,可以将移动群智感知的生命周期分为4个阶段[3],即任务创建、任务分配、个体任务执行和群智数据集成,如图2-14所示。

图2-14 移动群智感知的生命周期的4个阶段

下面介绍每个阶段的关键功能。

(1)任务创建

移动群智感知组织者通过向参与者提供相应的移动感知应用程序,然后将其安装在参与者的智能手机中,以完成移动群智感知任务的创建。任务创建阶段的工作重点在于简化移动群智感知组织者的移动群智感知任务和相应移动应用程序的创建,通常通过提供易于理解的领域特定语言(DSL)。

(2)任务分配

在组织者创建移动群智感知任务和相应的移动任务应用程序之后,下一个阶段是任务分配,即招募参与者并为他们分配在其移动设备上运行的个人感知任务。找到足够、合适的群智感知参与者是这个阶段的核心问题。一个广泛使用的招募群智感知参与者的方法是利用传统的众包平台,如亚马逊劳务众包平台。现有的研究工作还提出了各种方案来选择参与者的子集,以实现不同的优化目标,如确保区域覆盖,最小化任务完成时间和参与者数量,选择高信誉/性能参与者。

(3)个体任务执行

一旦接收到所分配的感知任务,参与者将尝试在预定的移动群智感知任务持续时间内与其他任务并行完成。这个阶段被称为个体任务执行阶段,可以进一步分为感知、计算和数据上传3个子阶段。

(4)群智数据集成

该阶段将所有参与者收集的数据流作为输入、汇总数据,并以适当的格式向最终用户提供他们所需要的内容。对于一些移动群智感知应用,这一阶段的数据处理非常简单——中央服务器存储数据,并为用户提供接口,以便进行数据查询和共享。而有些移动群智感知应用采用复杂的算法来整合数据、调整数据,从大量原始的群智数据中提取高级和集体的智慧。

4.移动群智感知的关键技术

(1)移动群智感知网络共性平台

目前,学术界和工业界已经设计和开发了各种各样的移动群智感知应用。实际上,这些应用通常具有相似或者部分重叠的功能,需要相同的或者相互关联的感知数据,因此,面临着数据收集、资源分配、能量节约、用户激励、安全与隐私等一系列共同的问题与挑战。现阶段这种相互独立的开发模式十分低效,造成了很大的资源浪费。因此,设计移动群智感知网络共性平台一直是移动群智感知网络领域急需解决的基本问题。

(2)激励机制

移动群智感知应用依赖大量普通用户参与,而用户在参与感知时会消耗自己的设备电量、计算、存储、通信等资源并且承担隐私泄露的威胁,因此必须设计合理的激励机制对用户参与感知所付出的代价进行补偿,这样才能吸引足够的用户,从而保证所需的数据收集质量。

(3)移动群智感知数据的分析挖掘

移动群智感知数据来自不同的用户、不同的传感器,必须将这些海量数据进行智能的分析和挖掘,才能有效地发挥价值,形成从数据到信息再到知识的飞跃。目前,研究的技术主要有:大数据存储与处理技术、数据质量管理技术以及多模态数据挖掘技术。不同的用户、不同的传感器所釆集的感知数据是在不同维度上被感知的对象,需要针对不同模态信息关联性,整合不同模态挖掘结果,从而获取对感知对象的全面理解。

(4)信任、安全和隐私

人类参与感知任务也带来了一定的信任问题。移动群智感知参与者很可能向系统提供不正确甚至虚假的数据。例如,当移动设备被参与者不恰当地放置时,可能会收集错误的录音;当分配有噪声感测任务时,参与者可能将手机放在口袋里;同时,恶意用户为了自己的利益可能会故意污染感知数据;缺乏控制机制来保证数据源的有效性和数据的准确性可能导致信息可信度问题。因此,我们必须开发信任保存和异常检测技术,以确保获得的数据的质量。例如,Huang 等提出了基于Gompertz函数的信誉系统,该系统能够评估所收集数据的可信度。

为了激励用户参与,移动群智感知系统必须能够提供有效的隐私保护机制,以便参与者可以方便、安全地使用他们的设备共享高质量的数据。

5.移动群智感知的基本特点与典型应用

在传统的无线传感器网络中,人仅仅作为感知数据的最终“消费者”。相比而言,移动群智感知网络最重要的特点是人将参与感知、传输、数据分析、应用决策等整个系统的每个过程,既是感知数据的“消费者”,也是感知数据的“生产者”。这个“以人为中心”的基本特点为物联网的感知和传输手段带来了前所未有的机会,具体表现如下所述。

(1)网络部署成本更低

首先,城市中已有大量的移动设备或车辆,无须专门部署。其次,人的移动性可以促进感知覆盖与数据传输。一方面,随着移动设备的持有者随机地到达各个地方,这些节点即可随时随地进行感知;另一方面,由于移动节点之间的相互接触,这些节点可以使用“存储携带转发”的机会传输模式在间歇性连通的网络环境中传输感知数据。

(2)网络维护更容易

首先,网络中的节点通常具有更好的能量供给,具有更强的计算、存储和通信能力;其次,这些节点通常由其持有者进行管理和维护,从而处于比较好的工作状态。例如,人们总是可以随时根据需要对自己的手机等移动设备进行充电。

(3)系统更具有可扩展性

我们只需要招募更多的用户参与即可满足系统应用规模的扩大。

基于以上优点,移动群智感知网络成为物联网新型的、重要的感知手段,可以利用普适的移动感知设备完成那些仅依靠个体很难实现的大规模的、复杂的社会感知任务。具体来讲,移动群智感知网络的应用已经涉及如下典型领域。

(1)环境方面的应用

在环境方面的应用包括Common Sense[4]、Creek Watch[5]、Ear-Phone[6]和iMap[7]等。Common Sense 使用可以与手机通信的手持空气质量传感器收集空气污染数据(如二氧化碳、氮氧化物),将数据进行分析和可视化后通过 Web发布;Creek Watch是IBM在2010年11月发布的iPhone应用,人们路过河流时,可以花费几秒钟的时间搜集水质数据,包括流量、流速和垃圾数量,后台服务器汇总数据后在网站上公布;Ear-Phone 根据噪音级别通过手机监测对人类听力有害的噪音污染,绘制成噪音地图后通过 Web共享;iMap使用手机采集人的时间—地点轨迹,并使用已有模型计算空气中二氧化碳的含量和PM2.5的值,实现间接环境监测功能。

(2)公共设施方面的应用

在公共设施方面的应用,包括交通拥堵情况的检测、道路状况的检测(如道路坑洼、噪音)、寻找停车位、公共设施报修(如消防栓、交通信号灯、井盖等)和实时交通监测与导航等。例如,ParkNet[8]使用GPS和安装在右侧车门的超声波传感器检测空停车位,并共享检测结果;CMS系统收集由公交车乘客的手机采集的数据,对公交车舒适程度做出评级,并通过网站发布;Zhou P等[9]设计了Android平台下的公交车到站时刻预测系统;GBus应用允许个人使用移动设备收集公交车站点信息,包括站点名称、图片和描述;EasyTracker[10]应用使用安装有地图的智能手机,从GPS轨迹中提取高密度点以获取公交站点,并采集各站点公交到站时刻,计算公交站点间运行时间,从而预测公交到站时刻。

(3)社会方面的应用

在社会方面的应用包括社交网络应用以及社会感知。例如,腾讯提供的根据个体之间的共同好友而进行的好友推荐机制;Ubigreen[11]应用通过手机感知和用户参与的形式半自动采集用户出行习惯,鼓励用户绿色出行;im2GPS[12]应用构建自己的 GPS 照片知识库,使人们可以通过拍摄照片查询自己所处的位置;DietSense[13]应用允许用户在社交群中分享个人饮食习惯,人们可以比较自己的饮食习惯并向他人提出建议;BikeNet[14]应用根据个体提供的自行车骑行路线的 GPS 轨迹、空气质量、噪声质量等数据计算出最适合自行车骑行运动的路线。