2013-07-08 53 views
2

有誰知道從Freebase數據轉儲中獲取演員ID的最佳方式,以及稍後從Freebase API獲取IMDB ID和傳記的最佳方式嗎?從數據轉儲或Freebase API中獲取演員ID和傳記

+0

你到目前爲止嘗試過什麼?爲什麼要從轉儲中獲取一組ID並從API中獲取其他ID? –

+0

@湯姆莫里斯我需要更新我的Db中有很多演員的記錄。這就是爲什麼我想從數據轉儲中獲取信息的原因。我需要演員的免費基地ID,Imdb ID,維基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 

這將生成表格m.010q36的MID列表,其代表MID /m/010q36

使用MID列表,查找第一列中具有該MID的所有行,第二列中的所需屬性之一。你可以使用Python,grep或者你選擇的工具/語言來做到這一點。當然,如果你使用的是像Python這樣的編程語言,你可以進行初始搜索。

維基百科和IMDB ID存儲爲遊離鹼什麼叫按鍵,看起來像這樣(的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 ID,Wiki ID,演員的傳記和演員的形象)。我該怎麼做? – Gidi

+1

該命令從我測試過的Cygwin窗口切下,因此它應該可以工作。該API並非真正用於批量下載。如果你有演員ID開始,我會這樣搜索。像'zgrep「/ authority/imdb/name」freebase-rdf-2013-06-30-00-00.gz | cut -f 1,3'會給你一個MID列表,它們是相應的IMDB ID。 –

+0

假設我的gz文件位於D:\ work這是我試過的並且得到了「No such file or directory」錯誤: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