Получение идентификаторов актеров и биографий из дампов данных или Freebase API

Кто-нибудь знает, как лучше всего получить идентификаторы актеров из дампов данных Freebase, а затем получить идентификаторы и биографии IMDB из API Freebase?


person Gidi    schedule 08.07.2013    source источник
comment
что ты уже испробовал? Зачем брать один набор идентификаторов из дампа, а другой из API?   -  person Tom Morris    schedule 10.07.2013
comment
@ Том Моррис Мне нужно обновить много записей об актерах, которые у меня есть в моем Db. вот почему я подумал взять из дампов данных. Мне нужен бесплатный базовый идентификатор актера, идентификатор Imdb, идентификатор вики, биография и изображение. позже мне нужно будет регулярно обновлять записи, поэтому я подумал и об API. не могли бы вы направить меня?   -  person Gidi    schedule 11.07.2013


Ответы (1)


Актеры будут иметь тип /film/actor и выглядеть в дампе следующим образом:

ns:m.010q36     rdf:type        ns:film.actor.

Вы можете найти их все за несколько минут из сжатого дампа с помощью простого grep:

zgrep $'rdf:type\tns:film.actor.' freebase-rdf-<date of dump>.gz | cut -f 1 | cut -d ':' -f 2 > actor-mids.txt

Это создаст список MID в форме m.010q36, который представляет MID /m/010q36.

Используя список MID, найдите все строки, которые имеют этот MID в первом столбце и одно из желаемых свойств во втором. Вы можете сделать это, используя Python, grep или инструмент/язык по вашему выбору. Конечно, если вы используете такой язык программирования, как Python, вы можете выполнить начальный поиск.

Идентификаторы Википедии и IMDB хранятся как то, что Freebase называет ключами, и выглядят так (включая MusicBrainz и Netflix):

ns:m.010q36     ns:type.object.key      "/wikipedia/en/Mr$002ERodgers".
ns:m.010q36     ns:type.object.key      "/authority/imdb/name/nm0736872".
ns:m.010q36     ns:type.object.key      "/authority/musicbrainz/87467525-3724-412d-ad3e-595ecb6a3bfd".
ns:m.010q36     ns:type.object.key      "/authority/netflix/role/30006685".

Ключи могут быть закодированы (например, ключ Википедии выше). Вы можете найти документацию на вики Freebase о том, как с ними работать.

person Tom Morris    schedule 11.07.2013
comment
Я пытался использовать Cygwin с вашей командой zgrep, но результат оказался пустым. Я бы предпочел использовать API, но он ограничен 100 000 запросов в день. Я очень расстраиваюсь. У меня есть миллионы идентификаторов актеров Imdb, о которых я хотел бы получить информацию. (такая информация включает в себя: идентификатор FreeBase, идентификатор Wiki, биографию актера и изображение актера). Как я могу это сделать, пожалуйста? - person Gidi; 15.07.2013
comment
Эта команда была вырезана из окна Cygwin, где я ее тестировал, так что она должна работать. API на самом деле не предназначен для массовой загрузки. Если у вас есть идентификаторы актеров для начала, я бы искал таким образом. Что-то вроде zgrep "/authority/imdb/name" freebase-rdf-2013-06-30-00-00.gz | cut -f 1,3 даст вам список MID, и они соответствуют идентификаторам IMDB. - person Tom Morris; 15.07.2013
comment
предполагая, что мой файл gz находится в D:\work, это то, что я пробовал и получил ошибку «Нет такого файла или каталога»: zgrep /authority/imdb/name /d/work/freebase-rdf-2013-04-07-00-00.gz | вырезать -f 1,3 | cut -d ':' -f 2 › Actor-mids.txt, а также это: zgrep $'rdf:type\tns:film.actor.' /d/work/freebase-rdf-2013-04-07-00-00.gz | вырезать -f 1 | cut -d ':' -f 2 › актер-mids.txt - person Gidi; 16.07.2013
comment
Я использовал cd, чтобы сначала переключиться на каталог, содержащий файл, чтобы убедиться, что вы находитесь в нужном месте. В моей системе корень диска будет d: (что Cygwin принимает как особый случай) или /cygdrive/d - person Tom Morris; 16.07.2013