内容


智能代理和语义 Web

开发智能 Web

Comments

语义 Web 简介

语义 Web 是制作、查询和处理知识的一组工具和框架。语义 Web 背后的关键技术是资源描述框架(RDF),它既可被视为图形(N-三元组图表)知识表示模型,也可被视为面向对象的知识表示模型。要让这个模型成为机器可读的模型,有若干种格式可用(比如 RDF/XML、RDF/N3 和 RDF/Turtle)。Semantic Web Activity 页面以及原来的 Semantic Web Education and Outreach 页面上有面向语义 Web 开发新手的大量信息。要获得这些页面的链接,请参见 参考资料 小节。

让语义 Web 如此有意义和有用的关键设计特征之一就是跨 Web 数据集间互连数据的确立。Tim Berners-Lee 在其 2006 年发表的一篇名为 “Design Issues: Linked Data” 文章中着重谈到了这点。Linked Data 通过充分利用超文本传输协议(HTTP)确保了所有语义 Web 数据在 Web 上都是可访问的。如今有很多示例 Linked Data 集可用,正如您在 Richard Cyganiak 的 Linking Open Data datasets cloud 一文中看到的(参见 参考资料),这完全得益于 Linking Open Data 社区的努力。

智能代理简介

综合考虑 Jennings (1999) 以及 Russell 和 Norvig (2003) 的描述,不难理解一个代理就是由架构和程序封装而成的一种计算机系统。 此计算机系统应该:

  • 位于某种环境内
  • 能感知其环境
  • 能在该环境内自主的行动
  • 具备某种设计目标

一个代理系统由 4 个基本部分组成:

  • 性能指标
  • 环境
  • 致动器(Actuator)
  • 传感器

代理的 4 种基本类型

一般地,常在文本中讨论的反应代理有 4 种:

  • 简单反射代理,根据其当前的感知采取行动
  • 基于模型的反射代理,根据其当前的感知和部分历史采取行动
  • 基于目标的代理,使用其当前的感知以及需要(目标)采取行动
  • 基于实用的代理,试图最大化其状态以获得更高的效率

不过,现在有些关于人工智能的时髦书籍将对代理的范围扩充到了其他类型,而这些类型的代理从严格意义上并不是上述所定义的反应代理,其中包括:

  • 界面代理
  • 移动代理
  • 信息代理
  • 学习代理
  • 机器人代理

scheduler 代理

每个代理都具有某些特定的行为。scheduler 代理可被视为是一种基于模型的反应代理,它在执行这些行为时会考虑时间。scheduler 行为有很多种。比较简单的一个例子是唤醒行为,此行为会在经过特定超时期限后运行。又比如 ticker 行为,它在每段设定的时期执行一次。

searcher 代理

searcher 代理是一种具有特定功能的信息代理,用来寻找一个集合内的一个或多个条目。它可作为基于目标或基于用途的代理实现。Web spider 就是一种 searcher 代理,它可搜索可供用户搜索的预索引的页面。根据特定的目标自 builder 代理衍生出的 Searcher 代理还部署在 PubMed 系统内,该系统是美国 National Library of Medicine 提供的一种服务,它包括 1800 多万条对联机医学文献分析和检索系统(MEDLINE)以及其他生命科学刊物中生物医学文章的引用,有些文章可追溯到 20 世纪 50 年代。基于文本的 searcher 代理通常都内置有某种类型的自然语言处理,在某些情况下,还具有隐性语义索引。

代理通信

如果没有共享知识和经验的通信机制,那么智能的程度将非常有限。这同样适用于代理技术的情况,因为代理技术也是人工智能的一种。Foundation for Intelligent Physical Agents (FIPA) 精心构建了可在多代理系统内使用的标准和建议。这确保了所有代理均具有某些格式的通用语。FIPA 是 Institute of Electrical and Electronics Engineers (IEEE) 标准组织。

Object Management Group (OMG) 具有一些对 FIPA 标准的补充,即 Mobile Agent Facility。还值得一提的是代理需要共享某种特定的词汇表。这通常通过使用 OWL Web 本体语言构建一种本体来实现。

面向 Java 编程语言的代理库

面向 Java™ 编程语言的、基于 FIPA 的代理库很多,比如 Telecom Italia 的 Java Agent Development Framework (JADE) 和 IBM® 的 Agent Building and Learning Environment (ABLE)。

语义 Web 上的智能代理

以商业为导向的 Web 和学术派的 Web 存在着清晰的差别。商家几千年来就一直在纸媒介上做广告宣传。所以,在 Web 创建之始,他们立即就将其视为宣传推广其产品和服务的又一渠道。Web 随即成为了由人头脑内的设计和创意构造的文档 Web。

学术派则另有想法。计算机科学,作为一种学术研究领域,已经进行了长达数十年的人工智能研究,特别是知识工程研究。学术研究的产物有两个:代理技术和语义 Web,前者是作为一种商业性技术提出的,而后者则是一种科学技术。

语义 Web 也具有明显的商业益处,但是必须要基于 Tim Berners-Lee 在 2006 年提出的 Linked Data Design Note 中所定义的额外规定。通过将公共商业数据作为 Linked Data 公开,商家不仅可以使其产品或服务更易被找到,而且还能让数据容易被机器阅读,而这恰好是多代理系统所需的。将数据作为 Linked Data 公开成为了一种受追捧的市场营销技巧。

语义实现从本体向互连的转移不会阻止 Berners-Lee 等人的辉煌愿景。不过,其进展的方式可能与他们在 2001 年所预期的并不完全符合。得益于 Linked Data,代理现在将能实现跨全球这样一个巨大的图形从一点跟随至另一点。这种转变致使语义 Web 在 2006 年重新受到 Shadbolt 等的关注,也在 2008 年被 Cyganiak 重新启用。

Semantic Web 上的代理实例

使用代理和语义 Web 能做的事情很多。比如,可以实现:

  • Web 索引代理,将文档转变成正式的基于语义 Web 的知识
  • 个人代理,使用正式的语义 Web 知识库来预定假期甚至进行门诊预约
  • 多代理系统,能在自己的社区执行操作以构建和维护额外的 Linked Data 集

对于本文,我使用 JADE 框架和 DBpedia Linked Data Set 创建了一个简单示例。它是一个单代理系统,一经激活即可传递两个纯文本参数(一个对象名称及它的一个属性名称),然后搜索 DBpedia 数据集查找结果(属性值)。

代理系统一般使用多种技术构建。对于本例而言,我使用了一种最简单的要求、分析、设计和开发流程。

要求

要求声明给出了对此代理系统预期功能的简要描述。在本例中,系统应该能够接受名词和该名词的一个属性键,搜索 Web 上可用的 Linked Open Data 并提供该属性的值。清单 1 例举了此系统的可能输出。

清单 1:所要求系统的示例输出
Noun input: Bob Marley
Attribute key Date of Birth

Agent is fetching...
Attribute value: 1945-02-06

分析

对于本例,我使用角色模型的分析方法,角色模型是 Gaia Agent Design Methodology(参见 参考资料)内提到的一种模型。它描述了特定代理的功能、为何有此功能以及它所具备的责任和权限:

角色模式:SimpleNounAttributeSearcher

  • 描述:查找互连语义 Web 获得某对象的属性值
  • 权限:从任一开放语义 Web 数据源读取和搜索数据
  • 责任
  • 活跃度(Liveness):
  • SimpleNounAttributeSearcher = ( GetURIs. BuildQuery. ExecuteQuery. InformUserOfValue }
  • Safety:true

设计

我使用的是如 图 1 所示的目标流程图来显示一个目标到下一个目标之间的流程,从而实现从对象名和属性名寻找属性值的整体目标。

图 1. 目标流程图
目标流程图

来自用户的输入是一个简单的纯文本,而语义 Web 系统通常使用 Uniform Resource Identifier (URI),因此 GetURIs 动作会基于纯文本表示获得一个 URI(这得益于 RDF 模式内的标签关系)。BuildQuery 动作接受这些 URI 并基于之前动作中找到的那些 URI 生成一个简单的查询。ExecuteQuery 之后执行此查询并决定结果是否有用。如果有用,InformUserOfAnswer 会将结果显示给用户。如果没用,这个简单代理以不同的 URI 再次开始。

图 1 中所描述的子目标将被转化为 Java 内的简单公共方法,然而整体的目标是转化为 JADE 行为。

我还使用了如 图 2 所示的一种面向对象的类图来将目标流程图转变成易于在面向对象语言(比如 Java)内进行开发的形式。这指的是 AgentOneShotBehaviour,它们是 JADE 库的一部分。

图 2. 面向对象的类图
面向对象的类图
面向对象的类图

程序中最主要的类是 SemWebSearcherAgent,它的类型是 JADE 库中的 Agent。一个代理通常都会具有一个行为。在本例中,我选择的是 OneShotBehaviour(也是 JADE 库的一部分)并加以扩展以进行 SearchingBehaviourSearchingBehaviour 将会执行大部分的搜索工作。所需代码附加在本文的 下载 小节。请注意 SearchingBehaviourqueryengine 属性。它是基于 SPARQL 端点的 URL,我将在这个端点进行搜索。本例使用的 DBpedia 端点位于:

http://dbpedia.org/sparql

它有如下的 HTTP 参数:

format=text/rdf+n3&query=

其中,query 是用来发送此 SPARQL 查询的参数。在 SearchingBehaviour 内 Java 方法的使用与目标流程表内的类似。

开发流程

代理一般位于特定的环境内,为此 JADE 提供了一个这样的环境。JADE 还提供了图形用户接口(GUI),用以初始化、控制和终止代理。本节给出了初始化代理的各个步骤。

首先,用 GUI 打开终端并启动此 JADE 服务,如 图 3 所示。

图 3. 从命令行启动 JADE
从命令行启动 JADE
从命令行启动 JADE

图形用户界面应该类似 图 4

图 4. JADE GUI
JADE GUI
JADE GUI

展开此 AgentPlatforms 树,应该会看到一个容器,然后启动代理,如 图 5 所示。

图 5. 启动容器内的代理
启动容器内的代理
启动容器内的代理

对于本例而言,我启动的是我自己设计和实现的 example.agents.SemWebSearcherAgent。我需要传递搜索内容的参数,如 图 6 所示。

图 6. 启动主容器内的 SemWebSearcherAgent
启动主容器内的 SemWebSearcherAgent
启动主容器内的 SemWebSearcherAgent

这里我想要查找的对象是 Marley(即 “Bob Marley” 中的 Marley)和属性 birth(即 “Date of Birth” 中的 birth)。此代理加载、搜索,然后打印出从全球的互连语义 Web 返回的结果,如 图 7 所示。

图 7. SemWebSearcherAgent 正在完成其功能
SemWebSearcherAgent 正在完成其功能
SemWebSearcherAgent 正在完成其功能

结束语

Linked Data 格式的语义 Web 是在 Web 上呈现知识的理想方式,原因是面向对象的模型很容易理解。代理技术则是为自主过程建立模型的理想方式,原因是它能够成为以真实社会为基础的人造社会。本文展示的这个简单项目可以进一步在如下几个方面加以扩展,包括:

  • 对用户代理进行更贴近实际的建模
  • 增加更多人工智能
  • 广泛使用形式本体
  • 超越 DBpedia 扩展 Linked Data 集
  • 将其变成多代理系统
  • 将随意一个文本问题转变成 SPARQL 查询

正如您所见,商家和学术界所面临的机会都是无止境的。


下载资源


相关主题

  • Virtuoso Universal Server 在示例代码中被用来从不一定明确具备语义 Web 格式的资源获取语义 Web 数据。
  • Sesame 是面向 Java 编程语言的一种库,让您可以使用 SQL 数据库存储和处理 RDF 数据。
  • Jena 是一种面向 Java 编程语言的库,提供了针对 RDF 以及其他语义 Web 框架的高级处理和查询技术。
  • Joseki Jena 的携同库,用来提供语义 Web 服务器。
  • JADE 在本文中用来以 Java 编程语言创建代理。它能通过 FIPA 方法与其他代理系统进行交互。
  • Agent Building and Learning Environment (ABLE) 由 IBM 创建,是 JADE 的替代选择。它也符合 FIPA,因此,也能与其他的代理系统交互,包括那些用 JADE 构建的系统。
  • FIPA 是一个 IEEE 组织,提供针对多代理系统的标准和建议。
  • World Wide Web Consortium (W3C) 的 Semantic Web Activity 页面提供了针对各种语义 Web 框架、格式、标准和建议的很多相关资源。
  • W3C 的 Semantic Web Education and Outreach (SWEO) 页面则提供了了解语义 Web 所需的额外资源。
  • Mobile Agent Facility, Version 1.0 包含有关如何针对移动设备设计和开发代理的大量信息。
  • JADE Programmer's Guide 可很好地指导您使用 Java 编程语言和 JADE 库开发软件代理。
  • JADE Administrator's Guide 可很好地指导您运行代理并与使用 JADE 库构建的代理通信。
  • W3C 的 Linked Data Design Issues 文档内包含针对使用 Linked Data 这一最佳途径将语义 Web 信息发布到 Web 上的有关规定。
  • Berners-Lee、Hendler & Lassila 的文章 “The Semantic Web”(Scientific American,2001 年)最早让语义 Web 引起了众人的关注。它谈及了形式本体以及代理技术在未来 Web 中的角色。
  • JADE Tutorial: JADE Programming for Beginners 是使用 JADE 库的一个很好的参考资源。
  • Ben Coppin 所著的 Artificial Intelligence Illuminated(Jones 和 Bartlett Publishers, Inc.,2004 年)是一本很好的书,内容涵盖了代理技术的细节。它也是关于其他形式人工智能的一个很好的指南,您可以将其它的人工智能包括到您的多代理系统内以获得更多的智能。
  • Richard Cyganiak 的 Linking Open Dataset Cloud 图形化地展示了大多数 Linked Data 集以及它们之间是如何互连的。
  • Richard Cyganiak 的 “Searching, publishing and remixing a Web of Semantic Data” 是有关 Linked Data 以及如何以不同方式重用它的一个会议讲稿。
  • Multiple Approaches to Intelligent Systems(Springer Berlin/Heidelberg,1999 年)是关于如何设计、开发和维护代理系统的一本很有趣的书。
  • Intelligent Agents in Medicine”(Lhotská, L. & Prieto, L.,2006 年)概述了如何将智能代理用在医疗和健康应用中。它还讨论了 Diagnostics and Monitoring (ADAM) 和 PubMed 系统中所用的代理。
  • 查看运行中的 PubMed,在 180 多万条对 MEDLINE 以及其他生命科学刊物有关生物医学文章的引用中进行搜索,有些文章可追溯到 20 世纪 50 年代,其提供的链接指向文章全文及其他的相关资源。
  • Stuart Russell 和 Peter Norvig 合著的 Artificial Intelligence: A Modern Approach(Prentice Hall,第 2 版,2002 年)是有关各种人工智能的最佳资源。它也是代理技术的必备书。
  • The Semantic Web Revisited”(Shadbolt,N.,Berners-Lee,T. & Hall,W.,2006 年)审慎地谈论了 2006 年语义 Web 的发展程度、如何达到这一程度以及它未来的发展方向如何。它可被视作是 Scientific American 上 “The Semantic Web” 文章的新版本。
  • Michael Wooldridge、Nicholas R. Jennings 和 David Kinny 合著的 “The Gaia Methodology for Agent-Oriented Analysis and Design” 提供了使用 Gaia 方式分析和设计多代理系统所需的全部基本信息。

评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Web development
ArticleID=378499
ArticleTitle=智能代理和语义 Web
publish-date=03262009