zoukankan      html  css  js  c++  java
  • 获取更多的数据

    获取更多的数据

    在很多情况下,已有的数据就足以为自己的应用构建出有价值的智能。但在某些情况下,在应用中构建有价值的智能组件可能需要访问外部的信息。图1.6mashup网站HousingMapshttp://www.housingmaps.com)的截图。结合craigslisthttp:// www.craigslist.com)的房屋数据和Google的地图服务(http://code.google.com/apis/ maps/index.html),用户可以在这个网站中查看任何地理区域内待售或待租的房屋。

     

    类似的,新闻网站也可以把新闻及事发地结合在一起,能从地图中获取位置信息,这对任何应用而言都是一种进步。但这并不意味着这是一个智能应用,除非能对这些从地图中获取的信息做一些智能的处理。

    地图是一个很好的获取外部信息的例子,但在网络上还有很多其他的信息。让我们看看如何利用这些技术。

    采集和信息抓取

    爬虫(crawler)也被称为蜘蛛(spider),是用于从互联网上获取公开内容的程序。爬虫通常会访问一份URL列表,然后跟踪其中的每个链接。这个过程会不断地重复,重复次数被称为爬行深度(depth of crawling)。当爬虫访问完一个页面后,会将其内容存放到本地以做进一步的处理。这样可以收集大量的数据,但很快就会遇到存储和版权方面的问题。因此,在采集数据的时候一定要谨慎。在第2章中,我们会展示一个爬虫的实现。在附录中还有一个网络采集的整体介绍,其中总结了我们自己实现的爬虫和一些开源实现。

    信息抓取(screen scraping)指的是从HTML网页中获取信息。这看上去很简单,但其实很烦琐。举个例子,要构建一个专用于外出就餐的搜索引擎(例如http://www. foodiebytes.com),第一项工作就是要从各个餐厅的网页中获取菜单。信息抓取本身就能从本书介绍的技术中获益。在餐厅搜索引擎这个例子里,需要根据有用餐经验的食客们的评价对餐厅的优劣做出评估。有时候可以获得数值化的评分,但更多的情况是食客们的评论都是用自然语言写就的文章。逐篇地阅读这些评论,然后据此对餐厅进行排名显然是一个很糟糕的解决方案。在信息抓取的过程中应用智能技术可以实现评论的自动分类,并据此给餐厅打分,Boorahhttp://www.boorah.com)就是一个例子。

    RSS

    网站聚合(website syndication)是另一种获取外部数据的方法,这种方法无须使用爬虫反复地访问网站。通常,相对于常见的网页,结构化的聚合内容对机器更友好。常见的源格式有三种:RSS 1.0RSS 2.0Atom

    顾名思义,RDF站点摘要(RDF Site SummaryRSS1.0源自资源描述框架[1]Resource Description FrameworkRDF),主要目的是让机器和人都可以理解网络上的信息。但是,人类可以推测内容的语义(单词或短语在特定语境中的含义),而机器则很难做到这一点。引入RDF的目的就是要对网络上的内容做出语义化的解释,从而可以根据具体的需求,从中解析出有用的数据。RSS 1.0的规范可在http://web. resource.org/rss/1.0/站点找到。

    简易资讯聚合(Really Simple SyndicationRSS 2.0)是基于Netscape的富站点摘要(Rich Site Summary0.91的,至少也是重载了后者的首字母缩写RSS,它的目的是简化基于RDF的格式。它采用了一种基于XML格式的聚合专用语言,但没有XML命名空间和RDF引用。现在,几乎所有的主流网站都提供了RSS 2.0,而且对个人用户和非盈利机构的非商业性使用都是免费的。Yahoo!RSS源站点(http://developer.yahoo.com/rss)上有很多相关的介绍,你可以在http://cyber.law. harvard.edu/rss上找到RSS 2.0的规范和其他相关信息。

    最后要介绍的是基于Atom的聚合。RSS 2.0中存在的一些缺陷使得人们开始开发互联网工程任务组(Internet Engineering Task ForceIETF)的RFC 4287http://tools.ietf.org/html/rfc4287)中所描述的标准。Atom并不是基于RDF的,它兼具RSS 1.0的灵活性和RSS 2.0的简洁。从本质上说,它是实现现有标准的功能和尽可能满足向后兼容性的妥协产物。然而,Atom已经像RSS 2.0一样广受欢迎。大部分网络聚合器(例如Yahoo!Google)都同时提供这两种格式的源。在IBM Developer Works上可以找到更多有关Atom聚合格式的信息:http://www.ibm.com/ developerworks/xml/standards/x-atomspec.html

    RESTFUL服务

    RESTRepresentational State Transfer)是Roy T. Fielding[2]在其博士论文中提出的。这是一种为分布式、超链接的媒介构建应用的软件架构风格。REST是一种无状态的C/S架构,它将每个服务都映射成一个URL。如果非功能性需求不是很复杂,而且不需要跟服务提供商签订正式的协议,REST就是一个便捷地访问互联网上各种服务的不错选择。关于这种重要技术的更多信息,可以参考Leonard RichardsonSam Ruby撰写的RESTful Web Services一书。

    很多网站都提供了RESTful服务,你可以在自己的应用中使用这些服务。Digg提供了能接受REST请求的APIhttp://apidoc.digg.com/),并且提供XMLJSONJavaScript和序列化PHP等多种不同类型的反馈。通过这个API,可以获取符合各种要求的新闻、用户、好友或用户的粉丝等。

    Facebook API也是类REST风格的接口。所以,无论是什么编程语言,都可以与这个激动人心的平台进行交流。你要做的只是把HTTPGETPOST请求发送给Facebook API REST服务器。Facebook API有很好的文档,本书稍后也会用到这些API。详细信息请参考http://wiki.developers.facebook.com/index.php/API

    Web服务

    Web服务是用于应用之间相互交流的API,它有大量的Web服务框架,其中很大一部分是开源的。Apache Axishttp://ws.apache.org/axis/)是一个简单访问对象协议(Simple Access Object ProtocolSOAP)的开源实现,该协议“可以用于在无中心分布式环境中的节点间交换结构化、类型化的信息。”[3]Apache Axis是一个很流行的框架,在第2版中做了全新的设计,Apache Axis2支持SOAP 1.1SOAP 1.2,以及使用广泛的REST风格的Web服务,还有大量的其他功能。

    另一个值得一提的Apache项目是Apache CXFhttp://incubator.apache.org/cxf/),这是IONACeltixCodehaus XFire结合的产物。Apache CXF支持的标准有:JAX-WS 2.0JAX-WSAJSR-181SAAJSOAP 1.11.2WS-I Basic ProfileWS-SecurityWS-AddressingWS-RMWS-PolicyWSDL 1.1 2.0。它还支持多种传输机制、绑定和格式。如果考虑使用Web服务,就应该看看这个项目。

    除了这些数量众多的Web服务框架,还有更多的Web服务提供商,几乎每个公司都在使用Web服务整合各种各样的应用,这些应用的功能各不相同,所使用的技术也千差万别。这种情况有可能是公司合并的结果,也有可能是因为大型公司内部的开发工作协调不到位。纵向地看,几乎所有的大型金融投资机构都在使用Web服务来实现无缝整合。Xignitehttp://preview.xignite.com/Default.aspx)就提供了金融方面的各种Web服务,SAP、甲骨文、微软等软件巨头也为Web服务提供支持。总之,基于Web服务的整合无处不在,而且作为主要的整合技术,它在智能应用的设计中也是重要的基础构件。

    至此,你一定已经对如何改进自己的应用有了一些想法,或者已经对下一次激动人心的创业有了新的创意。我们已经确保获得了所有必要的数据,至少我们能访问到这些数据。现在来看看这些我们将要添加到应用中的智能,以及它们跟其他已熟悉的概念之间的关系。

     

    本文节选自《智能WEB算法》一书。

    图书详细信息:http://www.cnblogs.com/broadview/archive/2011/08/19/2145944.html



     

     

     

  • 相关阅读:
    SharePoint 2013 配置基于表单的身份认证
    SharePoint 2013 场解决方案包含第三方程序集
    SharePoint 2010 站点附加数据升级到SP2013
    SharePoint 2013 在母版页中插入WebPart
    SharePoint 2013 搭建负载均衡(NLB)
    SharePoint 部署解决方案Feature ID冲突
    SharePoint 2013 配置基于AD的Form认证
    SharePoint Server 2016 Update
    SharePoint 2013 为用户组自定义EventReceiver
    SharePoint 2013 JavaScript API 记录
  • 原文地址:https://www.cnblogs.com/broadview/p/2160946.html
Copyright © 2011-2022 走看看