从 Freebase 转储中提取别名
Extract alias from Freebase dump
我已经从 https://developers.google.com/freebase/data?hl=en 下载了 Freebase 转储,但我对文件的关系感到困惑。
我知道转储的格式是 <subject> <predicate> <object> .
。如果我想提取Freebase的别名子集,比如http://www.freebase.com/common/topic/alias?instances&lang=en,我该怎么做?
我试图过滤包含 mid 或 '/common/topic/alias' 的行,但结果不是我想要的。
有没有解析Freebase的库?谢谢!
跟进:
我还有两个问题。
- freebase 中是否有显示所有命名空间的列表? (例如
type.object.name
是对象的名称)
- 如何提取所有'type of (IS A)'关系? (例如 C++ 是一种编程语言)
Freebase 数据转储是 RDF,因此任何 RDF 解析库都应该可以,但 zgrep
会快很多。一个小小的转折是 Freebase 属性 /common/topic/alias
的谓词是 <http://rdf.freebase.com/ns/common.topic.alias>
,斜杠转换为 periods/dots.
要仅过滤英文别名,您可以使用如下命令:
$ zgrep -E "common.topic.alias>.*@en\t\.$" 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
我已经从 https://developers.google.com/freebase/data?hl=en 下载了 Freebase 转储,但我对文件的关系感到困惑。
我知道转储的格式是 <subject> <predicate> <object> .
。如果我想提取Freebase的别名子集,比如http://www.freebase.com/common/topic/alias?instances&lang=en,我该怎么做?
我试图过滤包含 mid 或 '/common/topic/alias' 的行,但结果不是我想要的。
有没有解析Freebase的库?谢谢!
跟进:
我还有两个问题。
- freebase 中是否有显示所有命名空间的列表? (例如
type.object.name
是对象的名称) - 如何提取所有'type of (IS A)'关系? (例如 C++ 是一种编程语言)
Freebase 数据转储是 RDF,因此任何 RDF 解析库都应该可以,但 zgrep
会快很多。一个小小的转折是 Freebase 属性 /common/topic/alias
的谓词是 <http://rdf.freebase.com/ns/common.topic.alias>
,斜杠转换为 periods/dots.
要仅过滤英文别名,您可以使用如下命令:
$ zgrep -E "common.topic.alias>.*@en\t\.$" 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