首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Freebase转储提取别名

从Freebase转储提取别名
EN

Stack Overflow用户
提问于 2015-12-22 08:00:11
回答 1查看 272关注 0票数 2

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

我知道转储的格式是<subject> <predicate> <object> .。如果我想提取Freebase的别名子集,比如http://www.freebase.com/common/topic/alias?instances&lang=en,我如何才能做到这一点?我已经尝试过滤包含中间或‘/公用/主题/别名’的行,但是结果不是我想要的。

有什么库可以解析Freebase吗?谢谢!

后续行动:

我还有两个问题。

  1. 是否有一个列表显示了freebase中的所有名称空间?(例如,type.object.name是对象的名称)
  2. 如何提取所有的“类型(是A)”关系?(例如,C++是一种编程语言)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-22 18:41:41

Freebase数据转储是RDF,所以任何RDF解析库都应该可以工作,但是zgrep要快得多。一个小问题是,Freebase属性/common/topic/alias的谓词是<http://rdf.freebase.com/ns/common.topic.alias>,斜杠转换为句点/点。

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

代码语言:javascript
复制
$ zgrep -E "common.topic.alias>.*@en\t\.$" freebase-rdf-2015-04-19-00-00.gz

这将使您的输出看起来如下:

代码语言:javascript
复制
<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  .
...

如果要使用所有语言的别名,只需使用:

代码语言:javascript
复制
$ zgrep -E "common.topic.alias>" freebase-rdf-2015-04-19-00-00.gz
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34411035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档