2015-05-27 55 views
3

我想使用由Google發佈的freebase單詞嵌入,但我很難從freebase名稱中獲得單詞。使用freebase載體與gensim

model = gensim.models.Word2Vec.load_word2vec_format('freebase-vectors-skipgram1000.bin',binary=True) 
model.vocab.keys()[:10] 

Out[22]: 
[u'/m/026tg5z', 
u'/m/018jz8', 
u'/m/04klsk', 
u'/m/08gd39', 
u'/m/0kt94', 
u'/m/05mtf0t', 
u'/m/05tjjb', 
u'/m/01m3vn', 
u'/m/0h7p35', 
u'/m/03ggvg3'] 

有沒有人知道它是否存在某種表將Freebase表示映射到它們表示的單詞中?

問候,

赫迪拉

回答

1

這些字符串是遊離鹼的標識,特別是移動互聯網設備,而不是主機名。您可以使用Freebase MQLRead或Search API查找其名稱,並且它們也包含在Freebase數據轉儲中。

您示例中的第一個ID代表英國電影導演Jack Gold。 https://www.freebase.com/m/026tg5z

這個API調用將返回JSON以他的名字:

https://www.googleapis.com/freebase/v1/mqlread?query=[{"id":"/m/026tg5z","name":null}] 
2

有人實際上已經做了我們所有人的好處和映射的ID到名稱的預先訓練模式。您可以下載該型號here

from gensim.models import Word2Vec 
model = Word2Vec.load_word2vec_format('freebase-vectors-skipgram1000-en.bin.gz', 
             binary=True) 

注意額外的-en.bin之前。然後一些樣本詞彙:

>>> list(model.vocab.keys())[:10] 
['/en/the_final_country', '/en/independent_curators_international', 
'/en/coney_reyes', '/en/scalr', '/en/everyman_palace_theatre', 
'/m/0g55w3s', '/en/waltershausen', '/en/river_frome_stroud', 
'/en/grzegorz_turnau']