我想使用freebase类型注释语料库。但是,freebase中几乎每个实例都有几种类型。所以我决定选择最常见的类型作为实例的类型。有没有办法获取实例的计数列表?我发现了这个查询,但似乎不对,因为结果只有400种类型。但我认为真正的类型不止于此。
[{
"id": null,
"name": null,
"type": "/freebase/type_profile",
"/freebase/type_profile/instance_count": []
}]
答案 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