Freebase再研究

作者: 阮一峰

日期: 2008年4月 5日

腾讯课堂 NEXT 学院

bg2008040501.png

将近一年前,我在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,因此这两个词之间就被建立了某种联系。

请看下面这张图。

bg2008040502.png

黄色的方框表示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的解决方案并不令人满意,它的前途可能也不会很顺利。但是不管怎样,这个网站是一个了不起的尝试,我会继续关注它,试图更好地理解和应用它。

(完)

留言(19条)

很喜欢很喜欢你的博客
要是你的音乐库搜索到歌曲的同时
能试听
那就更好拉~~~~~

MQL is based on JSon, this one is popular.

前两天看到一个 visual thesaurus,
http://www.visualthesaurus.com/howitworks/
感觉有点类似,不过数据结构可能也不太一样吧。

这类设想在我脑海里已经有大概1到2年了,我不会编程,但看阮的介绍时,我明白这就是我想要的东西,大概类似物理界爱因斯坦或霍金梦想的大统一论吧

属性-属性-属性

如何定义条目,词本身的意义,以维基形式为母体,我提问时意味着我提问,但矛盾产生在数据的存放上。。。。。网站必须独立存在,这类项目的目标应该是统一体

看过您的文章,很有感触,有些地方有些困惑,
一些问题发到您的邮箱里ruanyf@263.net,
希望您能帮助我解答


引用lis的发言:

前两天看到一个 visual thesaurus,
感觉有点类似,不过数据结构可能也不太一样吧。

这个用的是wordnet,完全不一样的。

引用sunsnowad的发言:

看过您的文章,很有感触,有些地方有些困惑,
一些问题发到您的邮箱里ruanyf@263.net,
希望您能帮助我解答


没收到你的信。还是直接在这里留言吧,没有特别的事就不要写信了。

引用Ruan YiFeng的发言:

没收到你的信。还是直接在这里留言吧,没有特别的事就不要写信了。

站长最近很忙么???

引用PIN的发言:

站长最近很忙么???

不是忙的问题,而是在这里留言更有效、更节省我的时间。

you can try twine.com, have sent you an invitation, plz check your gmail :)

引用徐廉之的发言:

you can try twine.com, have sent you an invitation, plz check your gmail :)

I did not receive the invitation. Could you send me again? I found twine.com of great interest.

My Email is yifeng.ruan@gmail.com

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.

引用徐廉之的发言:

Ticket sent again, drop me a line via gmail if U have problems so that i will see it immediately.

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.

Looking forward to it!

http://www.thinkartificial.org/web/twine-introduction/
Hrafn Thorisson 的“Why I Migrated Over to Twine”

引用徐廉之的发言:

http://www.thinkartificial.org/web/twine-introduction/
Hrafn Thorisson 的“Why I Migrated Over to Twine”

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.

引用Ruan YiFeng的发言:

I did not receive the invitation. Could you send me again? I found twine.com of great interest.

My Email is yifeng.ruan@gmail.com



Could you sent a invitation to me , thinks.
manofphysics4@gmail.com

metaweb被google收购了

请问从那里可以找到freebase的开放接口

"每一个Topic包含一个或多个Type(类型)",这里的包含应该是“属于”吧

我要发表看法

«-必填

«-必填,不公开

«-我信任你,不会填写广告链接