刚开始了解语义网的时候,我有很多困惑。除了有许多生涩的专业术语横亘在我面前,语义网的数理逻辑基础也给初探这个的我造成了困扰。
借着邹磊老师“知识图谱数据管理”这门课交大作业的机会,我想好好花一点时间,把我这一年所了解的有关语义网和的知识压缩整理,浓缩成一篇user-friendly的科普文章。我希望让一个即便不懂计算机的人,在读完这篇文章后,也能够对语义网形成框架性的了解。
一.从web1.0到web2.0再到web3.0——web的进化之路
在互联网的发展史上,有着两次重要的的革新。每一次革新,除了带来巨大的思想改革和技术进步,更引领着强劲的商业浪潮,改变着人们的生活方式。
Web1.0的问世让一大批互联网公司进入人们的视线——百度,新浪,网易,搜狐......官方机构可以搭建网站,将自己的信息发布到网站上。人们开始发现,互联网成为了一本内容丰富,而且永不落伍的大书,而新浪这样的门户网站和百度这样的搜索引擎就是这本书的目录,习惯了阅读纸质书籍的普通大众开始意识到,在web1.0技术的帮助下,人类能够触及的知识竟然如此之多。一时间,各种新兴的互联网公司如雨后春笋一般生长起来,整个互联网界呈现出一派欣欣向荣的景象。
然而人类很快就即将被自己取得的下一个成果所惊诧,即使web1.0让人们接触到了爆发式疯长的信息量,web2.0的出现却向人们证明了,原来web可以提供给人们的信息量还远远没有达到极限。相比于web1.0,web2.0最大的特点是:信息的发布者不再仅仅是官方机构,发布信息的成本和门槛被大幅降低,任何一个人都有能力借助互联网发布信息和获取他人发布的信息。在web2.0时代,互联网公司不再仅仅是信息的发布者,而渐渐演化为给普通大众提供发布和获取信息能力的平台。优酷等视频网站让人们可以把自己拍摄的视频发布到网络上,微博等社交媒体允许人们分享茶余饭后的所思所想,维基百科等百科网站邀请全世界的每个人一起构建人类对这个世界的认识。Web2.0的出现,极大地解放了信息的发布源,而网络上已经大幅爆发的信息量,又迎来了一次更加猛烈的爆发。
对于技术的快速革新,无疑有人欢喜有人愁,在web1.0中刚刚站稳脚跟的一些互联网公司,在web2.0浪潮的冲刷下迅速销声匿迹。多少互联网淘金者的狂欢与骄傲,一夜间化为泡影。
然而,在web2.0时代得到解放的信息量,却成了一个让人头疼的问题。在海量的信息中,找到准确的信息却成为了一件让人头疼的事情。浩如烟海的网页中,到底有哪些能够满足我的需求?这些信息又是真是假?到底能够提供给我多少价值?在这样的背景下,web3.0的需求也悄然应运而生。
有人说,web1.0是B2C(Business to Consumer)的时代,web所连接的对象是普通大众和互联网企业,互联网企业发布信息,普通大众阅读信息;而web2.0的时代则是P2P(Peer to Peer)的时代,web所连接的对象是每个普通人,在这个时代里,每个人都是信息的发布者,每个人都是信息的获取者,互联网企业的角色则转化为平台的搭建者,让每个人具有发布信息和获取信息的能力。而在web3.0的时代,web将扮演更加聪明的角色,它需要在海量的信息中找出用户真正需要的信息,并根据不同用户的需求精确的把信息传递给每个人。举一个简单的例子,搜索引擎具有这样的能力——它能够根据用户的IP地址等信息找到用户的地理位置,当用户搜索“美食”这类关键词的时候,搜索引擎就能根据用户所在的位置为ta推送周边的美食信息,这正是web变得更加“聪明”的一个缩影。
然而,相比于web2.0在互联网界势如破竹般的发展,web3.0却迟迟不愿漏出其庐山真面目。新兴的技术不断地涌现出来,用户也可以在互联网产品上看到这些技术的影子,然而这似乎还是和大家构想的那个web3.0的梦境有所差距。究其原因,是因为web3.0所需要的技术支撑还没有办法被完全满足。
想把整个互联网转化为一颗具有思维能力的大脑绝不是一件容易的事情,可爱又机智的程序猿们想到了许许多多的方法,在这些方法中,有两类方法被寄予厚望。一种方法是基于数理统计方法,让网络直接去接触海量数据,在这些纷繁的数据中发现规律和特征。当网络了解到这些规律之后,就能很好地运用这些规律处理新的数据。在人工智能中,这类方法被称为连接主义方法;另一种方法,则基于数理逻辑,将概念和概念之间的联系以图(Graph,注意:这里的图是Graph而非Picture,前者是一种由节点和边组成的数据结构,而后者是像素点构成的矩阵)的形式存储下来,并建立一套适用于这套概念的推理规则,让机器根据所知的知识和规则进行自动推理,发现新的知识。在人工智能领域里,这种方法被称为符号主义方法。我们这里重点要描述的语义网就是基于这一方法的。
二.语义网与知识图谱——web3.0的关键方法
理解,推理,决策,这些都是人类高级的智能活动。人类之所以能够进行这些智能活动,是因为人类的大脑中有着一套知识表征系统和一套基于这一知识表征系统的推理规则。换句话说,这套知识表征系统和这一系列推理规则是人类智能活动的基础。
举个例子,当你看到一句话——“TFBOYS的成员都是90后”,而你又知道,王俊凯是TFBOYS的三位成员之一(你知识表征系统里已经建立的链接),于是你就能够完成推理,得到这样的结论——王俊凯是90后(利用知识表征系统,按照推理规则得出结论)。
或许你会觉得这个推理实在太low,不能代表高大上的人类智力活动,我们不妨再举个例子,当你看这样一句话——“你的脸蛋简直像一朵花儿”,你会想到,这是一句对一个人(更可能是女性)面容的赞美,而不是说你的脸具有花的形状(比如脸上有五片皮依次打开,想花瓣一样,脸的中间长了很多高高隆起的包,像花蕊一样。囧囧囧...)。你之所以你能够有这样的理解,正是因为你具有上文所提及的知识表征系统和推理规则。在你人生中的某个时刻,肯定有人教过你,说什么东西像花儿一样,就是赞美它很美,于是你默默建立了这样一条链接(知识表征系统的丰富):
A像花儿一样 ——> A很美
当再次听到人说谁像花儿一样的时候,在你的潜意识里会调出这条链接,并根据规则完成语义的重构(规则的使用)。
看到了吧,这就是人类一次智能活动的实现过程,而知识表征(链接的建立)和基于知识表征的推理规则为智能活动的完成奠定了基础。而如果你仔细思考,你会发现无论怎样复杂的人类智能活动都是如此,都依赖于一套知识表征系统和推理规则。
扯得有点远了。
那么什么是语义网呢?
第一节里提到了,web3.0的目标是实现网络的智能化,和人一样,智能的web同样需要一个知识表征系统,和一套这个知识表征系统上适用的推理规则。而语义网就是人们提出的将上述两者融为一体的构想。
在语义网中,资源(注:这里的资源可以是一个概念,一篇文档,一幅图像...总之你能想到一切可以被计算机存储的东西都可以被称作资源)可以被抽象为一个节点,而资源之间的关系则可以被抽象为节点之间的边。所有的资源相互连接起来,就织成了一张巨大的网。这张网就是web的知识表征系统。
而基于这个知识表征系统,web就有了变得更加智能的基础。许许多多人们需要web去解决的问题,都可以转化为在这张巨大的图(Graph)上可以执行的算法。
比如用户希望web回答他这样一个问题——“猫科食肉动物包括哪些?”
将这个查询问题转化为一个图,即可得到:
而寻找这个问题答案的过程,即是在语义网这张巨大的图中,寻找这个子图的过程。具体的方法这里不提及,可以自行搜索子图匹配(subgraph match)算法。
可以看到,上面的这个过程的目标,其实就是把一个语义搜索的过程给形式化了。一个起初看起来有些棘手,或许没那么容易想到解决方法的问题,被转化为一个在Graph这一数据结构上可操作的算法问题。
事实上,除了进行查询,这个由概念和链接构成的Graph还能够为web的智能化提供很多帮助。比如Google就希望利用它构建的Graph(即谷歌知识图谱)帮助优化其搜索引擎,使之变得更加智能,更容易帮助用户找到对他们有价值的信息。
当然,这里仅仅列举了几个知识库对于计算机智能行为的支持,还有很多这里就不一一列举了。
到这里,希望说明的其实很简单——如果web3.0的目标是构建一个更加智能的web,那么语义网就是这个web所需的这样一个基础结构——通过语义链接将人们所了解的各种资源连起来,构成一个巨大的Graph结构数据库。这个数据库能够支撑语义查询等一系列操作,使得更加智能的web成为可能。
三.语义网——我们做了些什么
在万维网问世之前,即使人们的电脑都被互联起来,大家也很难共享数据和资源。道理很简单,因为当时的网络缺乏一个公共的传输标准。因为这个标准的缺乏,当我想要寻找一个资源的时候,我不知道它在哪里,也不知道通过怎样的方式能够获取它,我甚至不知道在网络上它的名字叫什么。
万维网的出现,意味着一套标准的问世——从此以后,世界上的每个资源都由一个唯一的标识符(URL,unified resource locator)标示,所以当我想访问某个资源的时候,我只要找到它的名字(URL)就能访问到它;每种不同的资源都遵守各自在网络上的传输规则(如HTTP协议负责超文本的传输,FTP协议负责文件的传输),所以只要我的电脑具有使用这些规则的功能,我就能够按照这些规则去访问资源;资源和资源之间通过超链接(hyperlink)连接起来,这样,所有的资源都被织成了一张巨大的网,更重要的是,这张网是用一个统一的规则所编织成的,这意味着每个人都可以通过电脑接触到这张网络上的任何资源。
就这样,在这套简单高效标准的支持下,发布数据和访问数据的门槛被大大降低,互联网开始飞速发展,开始爆炸式地膨胀,并开始改变这个世界上的万事万物。一套标准的制定,成了一个世界的狂欢。
回到我们的话题,之前我们一直没有刻意区分两个概念——“知识库”和“语义网”,事实上,这两者并非是同一个概念。事实上,任何一个人都可以构建自己的知识库。你可以选取自己喜欢的领域,按照自己喜欢的结构(你可以用三元组的形式发布数据,可以用key-value的形式发布数据,也可以用关系数据库的方式发布数据),挑选自己喜欢的格式(你可以用xml格式存储数据,也可以用txt格式存储数据,如果你开心还可以截图存成jpg格式)去发布你所知道的知识。
现在问题就来了:因为数据格式的不同,我可能无法访问你的数据;因为结构的不同,即使我访问到了你的数据,我可能也不知道是什么意思;因为每个人知识的差异,我们眼中事物的名称都可能有所差异,比如在的知识库里面,我亲切地把韩寒童鞋称作“国民岳父”,而你碰巧不知道这个梗,所以在你的知识库里你直呼其名,如果我们俩同时发布关于韩寒的知识库,网络可能会蠢蠢地以为我们在谈两个人。
多少年前万维网的问题再一次出现在了世界的面前,而解决这一问题的办法其实不言而喻——标准。
语义网的目标就是:它希望制定一套标准,从此以后,世界上所有的资源都按照这个标准发布。它规定了数据存储的格式,规定了知识表示的结构,它给每个资源一个独一无二的名称——URI(统一资源标示符,unified resource identifier)。有了这套标准的支持,每个人所发布的知识就能融会贯通成一张巨大无比的网络,它将能为网络的智能化奠定坚实的基础。
看到这里,希望你已经对语义网有了一个大致的了解,如果你想进一步了解更多细节,可以继续阅读后面的部分。
下面简单介绍一下语义网是通过怎样的方式完成上面所说标准的制定的。
事实上,在语义网中所谓的标准无非可以可以分为以下三个方面——数据模型标准,语法标准和语义标准。
数据模型标准告诉大家,整个语义网用一个统一的数据模型(三元组)进行进行知识的表示;
语法标准告诉大家,按照某个统一的的格式发布知识,web就能够理解你所发布的知识,其他人也可以通过这一格式来读取你发布的知识;
而语义标准则规定了,每个资源属于怎样的类别,资源和资源之间通过怎样的语义链接联系起来,每种资源的类型和每种语义链接都有什么意义,当按照统一的规定去标示了每个资源的种类和资源之间的语义链接时,计算机就能利用这些标注完成推理,从而在资源之间建立新的链接,使得语义网更加丰富,也更加智能。
在万维网中,所有的标准都被浓缩在一系列协议里,比如网页的语法标准和数据格式标准由html协议规定,网页的传输标准由http协议规定。同样,在语义网中,所有的标准也是由协议来形式化的。
终于要提到这几个让我看书的时候挺头疼的名词了——XML、RDF、RDFS、OWL......
一开始的时候,书上和网络上的各种解释让我觉得迷茫,所以我决定把它们解释清楚,希望能够帮到有需要的各位。
数据模型标准在RDF协议中被制定,RDF规定,语义网中的所有数据全部用三元组的方式表示,即用主-谓-宾(subject-predicate-object)的形式存储所有信息。主语、谓语和宾语都使用URI表示。
一个用RDF三元组描述知识的例子如下
对于声明“Baron way building is located in Amsterdam”,我们可以这么写:
<http://www.semanticwebprimer.org/ontology/apartment.ttl#BaronWayBuilding>
<http://dbpedia.org/ontology/location>
<http://dbpedia.org/resource/Amsterdam>
上面的三行,第一行是主语(subject),代表Baron Way Building,第二行是谓语(predicate),代表属于,第三行是宾语(object),代表阿姆斯特丹。
这里稍稍多谈一点。事实上,之所以要使用三元组这一数学模型有以下两个部分的原因。
其一,因为现在广泛使用的关系数据库模型并不适合进行海量语义的存储;
其二,因为三元组这一存储方式背后有一阶谓词逻辑的支持,它拥有强大的表达能力,又具有灵活的特点,很适合作为语义网的数据模型。
这样,有了RDF的规定,所有的知识都有了一种统一的并且合理的数据模型——三元组。
但这还是不够的,即使有了统一的数据模型,没有统一描述知识的语法,也难以实现知识和数据的共享。就像你只会说中文,我只会说英文,如果我们不懂彼此的语言,也无法交流。在语义网中,有以下几种主流的语法——Turtle / RDFa / RDF-XML,这三种语法有着不同的结构,各有各的特色,但是三种语言都能够被解析,也就能够被计算机理解了。
我们已经有了统一的数据模型和统一的语法,现在我们可以试图统一语义了。
事实上,在万维网中,仅仅需要标准化的数据模型和语法就够了,将语义融入万维网,正是语义网的一大突破,也是语义网的价值所在。
语义的标准在RDFS(RDF schema)和OWL中被固定下来,在RDF中,定义了一些基本的语义关系,比如A-Type-B(A是B的一个个体),A-subClassOf-B(A是B的一个子类),这样的语义链接定义了类和资源,类和类之间的联系;又比如A-range-B(某个属性A的定义域是B,即声明任何拥有某个给定属性的资源是定义域类的一个实例,这一语义链接完成了对属性的先知。当然,不同种类的语义链接还有很多,这里不一一列举。
不幸的是,人们渐渐意识到,RDFS的语言表达能力有限,即在RDF所定义的语义范围内,很多数据之间的关系得不到足够清晰的表述。比如,当两个类不共享任何实例的时候,这两个类是不相交的,比如哺乳动物和爬行动物,RDFS缺乏对这样类间关系的表述;再举一个例子,有的属性是传递的,比如A is greater than B,有的属性是唯一的,比如A is mother of B,有的属性则是互逆的,比如A eats B和A is eaten by B,RDFS中缺乏对这样“属性的属性”的描述。语义的限制导致了web推理能力的受限,web不能体现出足够的智能性。
为了丰富RDFS所能表述的语义,OWL问世了。OWL在兼容RDF的基础上增添了属性类型和属性公理,丰富了语义网的表达能力。简单来说。OWL就是对RDFS语义的一次增补。
作为一篇科普文,关于这些琐碎的东西这里不再详细介绍了,相关细节可以翻阅机械工业出版社的《语义网基础教程》,虽然貌似网上可以找到第二版的英文电子版,不过个人觉得第三版要靠谱很多。
我以为,读了再多,不亲身使用一下也很难知道语义网到底是个啥。遗憾的是,现在的语义网还没有被大规模产业化,语义网的各项技术在专门领域的专家系统中应用较多,所以很难找到非常成功的语义网项目和应用,苹果的siri和微软的小冰都可以算是让人欣喜的尝试。除此之外,一个鲜为大众所知的网站倒是提供了比较成熟的语义搜索
wolframalpha: http://www.wolframalpha.com/
你可以用自然语言向它提出各种问题,甚至可以可以让它给你讲笑话,看看它能给你怎样的回答吧!
四.语义网——我们还需要做什么
经过两天的奋战,终于写到这里了!不得不说,当需要细致地去考虑怎样把一个问题向没有相关背景知识的人民群众解释清楚,诚然是要花不少心思的。从这里回头看看,最多只能给自己打60分,好多地方其实都可以找老师探讨探讨,写得更深入一些;对于语义网的基础知识,其实也仅仅介绍了一个部分,我猜没有背景知识的人民群众,大概理解起来还是会有点吃力。
这一节一直不知道怎么下笔,毕竟要提出对未来有洞见的展望是需要足够的积淀的。所以我还是少些几句,老老实实滚去写代码增加积淀去吧。
万维网之父,同时也是语义网提出者的Tim Berners Lee说:如果说 HTML 和 WEB 将整个在线文档变成了一本巨大的书,那么 RDF schema, 和 inference languages 将会使世界上所有的数据变成一个巨大的数据库。
诚然是这样,当计算机所面对的数据仅仅是一堆txt文档和jpg图片的时候,计算机仅仅是一本巨大的书,书上的文字,图片,音频和视频对每个读者是有意义的,而对计算机,对web却是没有意义的。只有当计算机中存储的数据由非结构化的数据(如txt等)转化为结构化数据的时候,计算机才具有“理解”数据的能力,才能提供更加智能的web服务。
而从非结构化数据向结构化数据的转换,或许正是可爱而智慧的程序猿们所要面对的挑战。从最基本的词法、句法分析,到语义分析,自然语言理解。这条路很长,很险,却很有诱惑力。
就写到这里吧!
列举一些我读到比较靠谱的文献和视频吧,有些可能需要翻墙访问
理解Linked data视频 https://www.youtube.com/watch?v=uju4wT9uBIA
黄智生谈语义网 http://www.infoq.com/cn/articles/semantic-web-and-web3/
《语义网基础教程》 第三版 (希腊) Grigoris Antoniou等 著
知识图谱简介 http://www.ifanr.com/88981
Wolfram Alpha简介 http://www.ifanr.com/72573