2

使用 Google Cloud Vision API 后,我收到了格式为/m/XXXXXXX(但不一定是 7 个字符)的 MID 值。我想做的是确定一个 MID 值与其他值相比的具体程度。本质上,一个术语有多宽泛与多精炼。例如,术语Vehicle可能是级别 1而术语Van可能是级别 2

我尝试通过 Google Knowledge Graph API 运行 MID 值,但不幸的是,这些 MID 不在该数据库中并且不返回任何信息。例如,我的一些 MID 和描述如下:

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

对于这些 MID 为什么在 Knowledge Graph API 中没有返回任何内容,我最初的想法是它们在 Freebase 停产后没有被继承。我了解 Google 提供了 Freebase 的 RDF 转储,但我不确定如何在 Python 中读取该数据并使用它来确定层次结构中中间的深度。

如果无法确定 MID 值的类别级别,则术语拥有的连接数也将是适当的代理。假设更广泛的术语比更精细的术语与其他术语有更多的联系。我发现一篇文章讨论了 MID 的“边缘”数量,我认为这意味着连接数。然而,他们在 MID 值和长值之间进行了一些转换,并使用了各种脚本,这些脚本在 Python 中不断给我带来许多错误。我希望有一个简单的表,其中一列中有 MID 值,另一列中有连接数,但我迷失在他们的代码、转换值和 Python 错误中。

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

4

1 回答 1

2

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

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

Freebase 和知识图谱没有按层次结构组织,因此您的关卡查找想法实际上并不奏效。我也怀疑你关于度数(即边数)与更宽和更窄相关的想法,但你应该能够使用你找到的转储来测试它。

您发现的 Freebase ExQ 数据转储非常令人困惑,因为它们将 Freebase 重命名typestopics(不要与 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 值并将它们从左到右连接起来。混乱,低效和错误的合二为一!(它实际上是一个基数 36(或 37?)编码)

于 2017-05-02T19:23:14.930 回答