将近一年前,我在Blog里介绍了Freebase.com。在结尾处,我这样说:
Freebase是一个革命性的网站,就像一个国外程序员所说:"这是2007年迄今互联网上最激动人心的东西"。我想我将在这个网站里面,继续花费大量的时间,四处逛逛,熟悉整个系统。
Freebase的目标很宏伟,就是收集世界上的所有信息,并且整理出信息之间的关系。这件事情最难的地方,倒还不是收集地球上的所有信息,而是怎样确定数据结构,换言之,怎样用一种格式描述出所有信息。这恰恰也是我对Freebase最感兴趣的地方。
前几天,我又去看了,发现整个网站已经基本成型了,数据大量增加,结构也比以前更完整。更重要的是,它开放了编程接口API,允许外部调用它的数据。
请看一个例子----电影数据库FMDB,在里面可以查到每一部电影、每一个导演、每一个演员,简直就是一个轻量级的IMDB。但是,这样一个数据库其实只有一张网页,总的大小不超过100k,一个有经验的程序员最多一天时间就可以完成。因为数据全部来自Freebase,你所要写的其实就是一个查询和展示过程而已。这就是Freebase的意义所在:如果世界上所有相关信息都分门别类放在一个数据库里,那么信息之间的查询和比较将变得异常容易。
借助FMDB和Freebase本身提供的异常强大的查询编辑器和开发手册,我一边学一边猜,终于自己也制作了一个作品----欧美流行音乐数据库,里面可以查到所有的欧美歌手、以及他们的专辑和单曲。完成以后,程序小得令人震惊,所有代码加在一起只有十几k。
下面简单介绍一下Freebase的数据结构。
首先,在Freebase中,每一条信息叫做Topic,也就是一个条目,这就好比字典里的每一个可以查到的词。
然后,每一个Topic包含一个或多个Type(类型),比如"check"这个词,既可以当动词,又可以当名词,于是它就同时属于"动词"和"名词"这两个Type。
接着,每一个Type又包含一个或多个Property(属性),比如字典里的每一个单词的每一种词性,都同时包括读音和释义两部分,因此"读音"和"释义"就是两个property。
最后,每一个属性都有一个值,这个值又是另一个Topic,因此两个Topic就被连接了起来。比如,check当动词时,释义是examine(检查),它本身就是一个Topic,因此这两个词之间就被建立了某种联系。
请看下面这张图。
黄色的方框表示Topic,绿色的方框表示Type。原点"Arnold Schwarzenegger"同时属于四个Type:Person(人物)、Body Builder(健美运动员)、Actor(演员)和Politician(政治家)。Type:Person有一个属性Country of Birth(出生国),它的值是Austria(奥地利)。Type:Politician有一个属性Party(党派),它的值是Republic(共和党)。Type:Actor有一个属性Films(演出的电影),它的值是Terminator(终结者)。
因此,这里一共有四个Topic:Arnold Schwarzenegger、Austria、Republic、Terminator。它们就这样被连了起来。
Freebase本身发展了一套数据查询语言MQL,比如我想查出Arnold Schwarzenegger一共演出过多少部电影,查询语句必须这样写:
{
q0:{
query:[{
"name":"Arnold Schwarzenegger",
"type":"/film/actor",
"film":[{
"film":[{
"name":null
}]
}]
}]
}
}
将上面这段代码,拷贝入查询编辑器左面的窗口,点击上方"read>>"按钮,就可以在右面的窗口得到查询结果。或者,直接点击这个链接,也可以看到查询结果。
实事求是的说,Freebase的数据结构和MQL语言都很复杂,一点都不符合直觉,我认真研究了好几天,都没有完全搞懂。这使得我感到Freebase的解决方案并不令人满意,它的前途可能也不会很顺利。但是不管怎样,这个网站是一个了不起的尝试,我会继续关注它,试图更好地理解和应用它。
(完)
huoyinge 说:
很喜欢很喜欢你的博客
要是你的音乐库搜索到歌曲的同时
能试听
那就更好拉~~~~~
2008年4月 5日 19:04 | # | 引用
tanner 说:
MQL is based on JSon, this one is popular.
2008年4月 6日 03:28 | # | 引用
lis 说:
前两天看到一个 visual thesaurus,
http://www.visualthesaurus.com/howitworks/
感觉有点类似,不过数据结构可能也不太一样吧。
2008年4月 6日 10:38 | # | 引用
LuciferByron 说:
这类设想在我脑海里已经有大概1到2年了,我不会编程,但看阮的介绍时,我明白这就是我想要的东西,大概类似物理界爱因斯坦或霍金梦想的大统一论吧
属性-属性-属性
如何定义条目,词本身的意义,以维基形式为母体,我提问时意味着我提问,但矛盾产生在数据的存放上。。。。。网站必须独立存在,这类项目的目标应该是统一体
2008年4月 6日 15:56 | # | 引用
sunsnowad 说:
看过您的文章,很有感触,有些地方有些困惑,
一些问题发到您的邮箱里[email protected],
希望您能帮助我解答
礼
致
2008年4月 6日 21:58 | # | 引用
Ruan YiFeng 说:
这个用的是wordnet,完全不一样的。
没收到你的信。还是直接在这里留言吧,没有特别的事就不要写信了。
2008年4月 7日 10:15 | # | 引用
PIN 说:
站长最近很忙么???
2008年4月 7日 20:12 | # | 引用
Ruan YiFeng 说:
不是忙的问题,而是在这里留言更有效、更节省我的时间。
2008年4月 7日 20:43 | # | 引用
徐廉之 说:
you can try twine.com, have sent you an invitation, plz check your gmail :)
2008年4月24日 14:10 | # | 引用
Ruan YiFeng 说:
I did not receive the invitation. Could you send me again? I found twine.com of great interest.
My Email is [email protected]
2008年4月24日 14:53 | # | 引用
徐廉之 说:
Ticket sent again, drop me a line via gmail if U have problems so that i will see it immediately.
Sorry for the delay cos' i haven't checked here for a few days but i could't figure out what's the problem with the 1st invitation.
Search & play with it if U have plenty of spare time.
2008年4月28日 03:02 | # | 引用
Ruan YiFeng 说:
Thank you a lot. I have joined Twine, and is taking a tour of it now.
When getting familiar with, I will give it a product review on my blog.
2008年4月28日 14:05 | # | 引用
徐廉之 说:
Looking forward to it!
2008年4月28日 20:46 | # | 引用
徐廉之 说:
http://www.thinkartificial.org/web/twine-introduction/
Hrafn Thorisson 的“Why I Migrated Over to Twine”
2008年5月 1日 00:27 | # | 引用
Ruan YiFeng 说:
This article seems not to be written in a very clear style. Actually, after a trial period of several days, I am still a bit confused to understand Twine. Maybe afterward I will give it a negative review.
2008年5月 2日 00:18 | # | 引用
ManofPhysics 说:
Could you sent a invitation to me , thinks.
[email protected]
2008年12月21日 11:08 | # | 引用
membogg 说:
metaweb被google收购了
2010年7月18日 16:17 | # | 引用
abner 说:
请问从那里可以找到freebase的开放接口
2015年1月15日 13:31 | # | 引用
刘子健 说:
"每一个Topic包含一个或多个Type(类型)",这里的包含应该是“属于”吧
2016年7月19日 10:20 | # | 引用