Использование векторов freebase с gensim

Я пытаюсь использовать вложения слов freebase, выпущенные Google, но мне трудно получить слова из имени freebase.

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 со словами, которые они представляют?

С уважением,

Хеди


person HediBY    schedule 27.05.2015    source источник


Ответы (2)


Кто-то на самом деле сделал хорошую вещь для всех нас и сопоставил идентификаторы с именами в предварительно обученной модели. Вы можете скачать эту модель здесь.

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']
person Jason    schedule 10.08.2016

Эти строки являются идентификаторами Freebase, а именно MID, а не именами. Вы можете найти их имена с помощью Freebase MQLRead или API поиска, и они также включены в дампы данных Freebase.

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

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

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