【发布时间】:2019-09-24 06:29:50
【问题描述】:
Google 现在到处都在使用实体,它们通常以 /m/ 和 /g/ 为前缀(但我最近也看到了一些 /t/)
我想知道编号是如何工作的。对于 /m/ 有一个类似于 url 缩短器的模式。定义一个字母(在 /m/ 的情况下,这是 32 个字符“0123456789bcdfghjklmnpqrstvwxyz_”并将数字转换为“短 url”
例如/m/0 4swd 156524(“/m/0”似乎是一种前缀)
不过,我被 /g/ ID 卡住了。我从我看到的“0123456789bcdfghjklmnpqrstvwxyz_”的 ID 创建了一个合理的字母表,但我无法让它工作。
由于谷歌正在做一些自我转换,所以我有一个真实的例子: /g/11b6377dzp 576462201963131861
但我还是想不通。
我最感兴趣的是如何处理这个逆向工程问题的过程(当然还有结果)。有什么想法吗?
【问题讨论】:
-
它们是不透明的标识符,所以我不明白将它们从基数 36(或其他)转换为基数 10 的价值。你认为你得到了什么? /m 前缀标识符可以在 Wikidata 或 Freebase 数据转储中查找以将它们转换为名称。
-
我只是好奇。为什么 /m/ 可以在基数 32 和基数 10 之间转换,为什么 /g/ 不是这种情况 一个直接的“胜利”将是能够构造一个以 10 为基数的 URL 并能够遵循任意主题。
-
我也对这些算法的设计选择感兴趣。为什么跳过某些字母并添加下划线。这似乎太随意了。为什么两个字母表中跳过了不同的字母?
标签: entity reverse-engineering freebase google-knowledge-graph