如何查询获取每个freebase类型的实例计数列表?

时间:2015-06-26 14:16:57

标签: freebase

我想使用freebase类型注释语料库。但是,freebase中几乎每个实例都有几种类型。所以我决定选择最常见的类型作为实例的类型。有没有办法获取实例的计数列表?我发现了这个查询,但似乎不对,因为结果只有400种类型。但我认为真正的类型不止于此。

[{
  "id": null,
  "name": null,
  "type": "/freebase/type_profile",
  "/freebase/type_profile/instance_count": []
}]

1 个答案:

答案 0 :(得分:1)

我质疑这个前提,但在回答你的问题之后,让我们谈谈这个问题。

那是(接近)正确的查询。当我通过添加"return" : "count"来请求计数时,我得到17,972这听起来是正确的。也许你的查询框架是以某种方式添加"limit" : 400

由于您需要最常见的,为什么我们不修改查询以对其进行排序。由于排序中的怪癖,空值排序最后(或者在我们的反向排序中排在第一位),因此我们还会添加一个限定符来过滤掉它们。我们可以使用>0,但由于您可能对低频类型不感兴趣,所以请改用>1000

最终查询如下所示:

[{
  "id": null,
  "name": null,
  "type": "/freebase/type_profile",
  "instance_count>": 1000,
  "instance_count": null,
  "sort": "-instance_count"
}]

将返回按实例计数降序排序的849种类型的有序列表。

您可能希望对结果列表进行一些手工策划,以消除/common/topic/common/document/book/isbn/book/pagination等内容。中介类型也不会有/common/topic,因此您可以先对其进行过滤(但根据语料库中的内容类型,它们可能都是首要的主题(即实体)。

现在回到最常见== 最佳 的前提。根据您的应用,您实际上可能需要更具体(通常意味着更低频率)的类型,而不是更广泛的高频类型。例如,已故人而不是人,或政治家,作者或运动员,而不是人。您可能需要考虑使用最少频繁类型(至少使用一些阈值时间)。您可能想要做的另一件事是黑名单非公共类型(即以[{1}}或/base/...为根的类型),这些类型并未经过精心策划。

编辑 - 警告词:

这些计数最后一次更新是在2012年。对于这样的练习应该没问题,你只需要粗略的排序,但是如果你需要当前的统计数据,你需要计算Freebase数据转储中的出现次数或者找出单独的Stats API,我不确定是公开/记录http://freebase-site.googlecode.com/svn/trunk/www/lib/queries/stats.sjs