Freebase:啥数据转储文件包含“imdb_id”?

Posted

技术标签:

【中文标题】Freebase:啥数据转储文件包含“imdb_id”?【英文标题】:Freebase: What data dump file contains the "imdb_id"?Freebase:什么数据转储文件包含“imdb_id”? 【发布时间】:2012-07-14 14:45:12 【问题描述】:

我运行 IMDbAPI.com 并一直使用 Bing 的搜索 API 从标题搜索中查找 IMDb ID。 Bing 目前正在将其 API 更改为 Azure 市场(8 月 1 日),并且不再免费提供。我开始使用 Freebase 测试我的 API 来解析这些 ID,并在前 8 小时内达到了 100k 的限制(我的网站目前每天收到大约 300 万个请求,但标题搜索只有 200-300k)

这正是他们提供数据转储文件的原因,

我下载了 Film 文件夹中的大部分文件,但找不到它们存储“/authority/imdb/title”imdb id 命名空间数据的位置。

https://www.googleapis.com/freebase/v1/mqlread?query="type":"/film/film","name":"True%20Grit","imdb_id":null,"initial_release_date>=":"1969-01","limit":1

这就是我当前访问 ID 的方式。

有谁知道哪个文件包含这些信息?以及如何从电影标题/id 链接回它?

【问题讨论】:

【参考方案1】:

imdb_id 属性由 /authority/imdb/title 命名空间中的键支持,因此您正在寻找以下行:

/m/015gxt       /type/object/key        /authority/imdb/title   tt0065126

在文件http://download.freebase.com/datadumps/latest/freebase-datadump-quadruples.tsv.bz2

这是一个 4 GB 的文件,因此请准备好等待下载。请注意,所有内容均由 MID 键入,因此如果您的数据库中没有它,您需要先弄清楚这一点。

使用 MQL 代替数据转储的等效查询是 https://www.googleapis.com/freebase/v1/mqlread?query=%7B%22type%22%3a%22/film/film%22,%22name%22%3a%22True%20Grit%22,%22imdb_id%22%3anull,%22initial_release_date%3E=%22%3a%221969-01%22,%22mid%22:null,%22key%22:[%22namespace%22:%22/authority/imdb/title%22],%22limit%22:1%7D&indent=1

编辑:附注我很确定 Browse 目录中的文件会消失,所以即使你可以在那里找到信息,我也不会依赖它们。

【讨论】:

我试图避免 4gig(提取 33gig)文件,但我还是下载了它,并花了过去 3 个小时试图找到任何东西来打开/解析它。我最终使用了 Microsoft 的 Log Parser 2.2,效果很好! LogParser.exe -i:TSV "SELECT Col1, Col4 INTO C:\imdbList.csv FROM C:\freebase.tsv WHERE Col3 like '%imdb/title%'" -o:CSV -headers:OFF -iHeaderFile:"C :\header.txt" 所以现在我有一个 3mb 的 CSV 文件,其中包含所有 freebase ID 和 IMDb 的 ID 接下来我需要从“Film.tsv”中获取“Title”、“Release Year”和“Aliases”,然后我可以在SQL中加入数据......终于可以搜索了:) 但我依赖浏览文件夹“Films.tsv”中的额外文件,这些文件很快就会消失吗? 处理压缩文件可能更快(当然磁盘空间更少),所以我不会解压缩它。任何 Linux 系统(或 Windows 上的 Cygwin)都可以轻松处理此问题,而无需下载奇怪的专有实用程序。等效命令是 bzgrep "authority/imdb/title" freebase-datadump-quadruples.tsv.bz2 | cut -f 1,4 > imdbList.csv 即使在笔记本电脑上,它也可以在 20 分钟内解压和搜索 4GB 文件并输出 142K 对 ID。 这是我能找到的最接近 TSV 转储退役公告的内容:markmail.org/message/6yve4c36p6pwhchv【参考方案2】:

前面的答案很好,只是这样的查询的一个更快捷的版本可能是:

query = [
          'type': '/film/film',
          'name': 'prometheus',
          'imdb_id': null,
          ...
        ];

没有提及 MQL 请求的其余部分,因为它与上述没有区别。希望对您有所帮助。

【讨论】:

以上是关于Freebase:啥数据转储文件包含“imdb_id”?的主要内容,如果未能解决你的问题,请参考以下文章

使用 MapReduce 解析 Freebase RDF 转储

Freebase 实体在 Google 知识图中的实体排名

ORA-39001: 参数值无效 ORA-39000: 转储文件说明错误 ORA-39088: 文件名不能包含路径说明 。啥情况啊?

linux内核转储 - 这是啥时候发生的?

Linux 中的核心转储文件是啥?它提供啥信息?

究竟啥是核心文件,它为啥有用?