从Freebase转储中提取别名

我已经从https://developers.google.com/freebase/data?hl=en下载了Freebase转储,但我对该文件的关系感到困惑。

我知道转储的格式是<subject> <predicate> <object> . 。 如果我想提取Freebase的别名子集,例如http://www.freebase.com/common/common/topic/alias?instances&lang=en,我该怎么办? 我试图过滤包含中间或'/ common / topic / alias'的行,但结果不是我想要的。

有没有任何库可以解析Freebase? 谢谢!

跟进:

我还有两个问题。

  • 有没有一个列表显示freebase中的所有命名空间? (例如, type.object.name是对象的名称)
  • 如何提取所有'(IS)'类型的关系? (例如C ++ IS一种编程语言)

  • Freebase数据转储是RDF,因此任何RDF解析库都可以工作,但zgrep会更快。 有一点是,Freebase属性/common/topic/alias的谓词是<http://rdf.freebase.com/ns/common.topic.alias> ,其中斜线转换为句点/点。

    要仅过滤英文别名,您可以使用如下命令:

    $ zgrep -E "common.topic.alias>.*@ent.$" freebase-rdf-2015-04-19-00-00.gz
    

    这会给你看起来像这样的输出:

    <http://rdf.freebase.com/ns/m.0100c5g>  <http://rdf.freebase.com/ns/common.topic.alias> "Pulska yo"@en  .
    <http://rdf.freebase.com/ns/m.0101107q> <http://rdf.freebase.com/ns/common.topic.alias> "Unforgiven 2002"@en    .
    <http://rdf.freebase.com/ns/m.01016v4g> <http://rdf.freebase.com/ns/common.topic.alias> "Ain't Nuthin' But A "G" Thang, Rene"@en  .
    ...
    

    如果你想要所有语言的别名,你可以使用:

    $ zgrep -E "common.topic.alias>" freebase-rdf-2015-04-19-00-00.gz
    
    链接地址: http://www.djcxy.com/p/64433.html

    上一篇: Extract alias from Freebase dump

    下一篇: Google Freebase Search API Alternative?