确定 Freebase MID 值的分类层次结构级别

Determine Categorical Hierarchy Level of Freebase MID Value

在使用 Google Cloud Vision API 之后,我收到了格式为 /m/XXXXXXX 的 MID 值(虽然末尾不一定是 7 个字符)。我想做的是确定一个 MID 值与其他值相比有多具体。本质上,一个术语的广义与细化程度。例如,术语 Vehicle 可能是 level 1 而术语 Van 可能是 2级.

我已尝试通过 Google 知识图 API 运行 MID 值,但不幸的是,这些 MID 不在该数据库中,return 没有任何信息。比如我手头的几个MID和描述如下:

/m/07s6nbt = text
/m/03gq5hm = font
/m/01n5jq = poster
/m/067408 = album cover

关于为什么这些 MID return 在知识图 API 中什么都没有,我最初的想法是它们在 Freebase 停用后没有被保留下来。我知道 Google 提供了 Freebase 的 RDF 转储,但我不确定如何在 Python 中读取该数据并使用它来确定层次结构中的深度。

如果无法确定 MID 值的类别级别,则术语所具有的连接数也将是一个合适的代理。假设更广泛的术语比更精细的术语与其他术语有更多联系。我发现 an article 讨论了 MID 拥有的 "edges" 数量,我认为这意味着连接数。但是,他们在 MID 值和 Long 值之间做了一些转换,并使用了各种脚本,这些脚本不断给我 Python 中的许多错误。我希望有一个简单的 table,一列中有 MID 值,另一列中有连接数,但我迷失在他们的代码、转换值和 Python 错误中。

如果您对轻松确定 MID 拥有的连接数或其层次结构级别有任何建议,我们将不胜感激。谢谢!

这些 MID 看起来很常见,所以我很惊讶它们不在知识图谱中。您是否为 MID 添加前缀以形成 URI?

"kg": "http://g.co/kg"
"kg:/m/067408"

Freebase 和 Knowledge Graph 未按层次结构组织,因此您的关卡查找想法实际上行不通。我也怀疑你的度数(即边数)与更宽和更窄相关的想法,但你应该能够使用你找到的转储来测试它。

您发现的 Freebase ExQ 数据转储非常令人困惑,因为他们将 Freebase types 重命名为 topics(不要与 Freebase topics 混淆),但我认为他们的 freebase-nodes-in-out-name.tsv 包含您要查找的信息(# of edges == degree)。您可以使用 inDegree、outDegree 或两者之和。

他们的 MID 到整数转换代码在我看来不正确(并且与评论不匹配),但您需要使用兼容的实现来匹配他们所做的。

正在查看

/m/02w0000  "Clibadium subsessilifolium"@en

编码为

48484848875048

48 48 48 48 87 50 48
 0  0  0  0  w  2  0

因此,只需从右到左获取 ASCII 值并将它们从左到右连接起来。混乱、低效和错误合而为一! (实际上是base 36(或37?)编码)