2015-05-27 4 views
3

Я пытаюсь использовать вложенные слова freebase word, выпущенные Google, но мне сложно получить слова из имени бесплатной базы.Использование векторов 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 идентификаторы, в частности MIDs, а не имена. Вы можете искать их имена, используя API-интерфейс FreeBase MQLRead или Search API, и они также включены в дампы данных Freebase.

Первый идентификатор в вашем примере представляет британского режиссера Джека Голда. https://www.freebase.com/m/026tg5z

Этот API вызов возвратит JSON с его именем:

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

Кто-то на самом деле сделал хорошую вещь для всех нас, и отображаются идентификаторы и имена в заранее подготовленные модели. Вы можете скачать эту модель 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']