2013-07-08 1 views
2

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

+0

Что вы пробовали? Зачем нужен один набор идентификаторов из дампа, а другой - API? –

+0

@Tom Morris Мне нужно обновить многие записи, которые у меня есть у актеров в моем Db. вот почему я подумал о взятии с дампов данных. Мне нужен бесплатный идентификатор участника, Iddb Id, wiki Id, Биография и изображение. позже мне нужно будет регулярно обновлять записи, поэтому я тоже подумал об Api. вы можете направить меня? – Gidi

ответ

4

Актеры будут иметь тип/фильм/актера и выглядеть на свалке:

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, вы можете запустить начальный поиск.

идентификаторов Wikipedia и 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 wiki о том, как с ними бороться.

+0

Я пробовал использовать Cygwin с вашей командой zgrep, но это было пустым. Я бы предпочел использовать API, но он ограничен 100 000 запросов в день. Я очень расстраиваюсь. У меня есть миллионы Актеров Imdb Ids, о которых я хотел бы получить информацию. (такая информация включает в себя: идентификатор FreeBase, идентификатор Wiki, биографию актера и изображение актера). Как я могу это сделать, пожалуйста? – Gidi

+1

Эта команда была вырезана из окна Cygwin, где я ее протестировал, поэтому он должен работать. API не предназначен для массовых загрузок. Если у вас есть идентификаторы для начала, я бы поискал этот путь. Что-то вроде 'zgrep '/ authority/imdb/name" freebase-rdf-2013-06-30-00-00.gz | cut -f 1,3' вы получите список MID, и они соответствуют IMDB-идентификаторам. –

+0

Предполагая, что мой файл gz находится в D: \ work this, что я пробовал, и получил ошибку «Нет такого файла или каталога»: zgrep »/ authority/imdb/name»/d/work/freebase-rdf-2013-04-07- 00-00.gz | cut -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 | cut -f 1 | cut -d ':' -f 2> actor-mids.txt – Gidi