Как проверить, существует ли ключ в обучаемой модели word2vec или нет

Я подготовил модель word2vec, используя корпус документов с Gensim. Как только модель тренируется, я пишу следующий фрагмент кода, чтобы получить исходный вектор функции слова "вид".

myModel["view"]

Тем не менее, я получаю KeyError для слова, которое, вероятно, потому, что это не существует в качестве ключа в списке ключей, индексированных word2vec. Как я могу проверить, выходит ли ключ в индекс, прежде чем пытаться получить исходный вектор функции?

Ответы

Ответ 1

Word2Vec также предоставляет член "vocab", доступ к которому вы можете получить напрямую.

Использование питонистического подхода:

if word in w2v_model.vocab:
    # Do something

EDIT С момента выпуска gensim 2.0 API для Word2Vec изменился. Чтобы получить доступ к лексике, вы должны теперь использовать это:

if word in w2v_model.wv.vocab:
    # Do something

Ответ 2

преобразует модель в векторы с

word_vectors = model.wv

то мы можем использовать

if 'word' in word_vectors.vocab

Ответ 3

Отвечая на мой собственный вопрос здесь.

Word2Vec предоставляет метод с именем содержит ('view'), который возвращает True или False на основании того, было ли проиндексировано соответствующее слово или нет.

Ответ 4

Эй, я знаю, что я опаздываю на этот пост, но вот фрагмент кода, который может хорошо справиться с этой проблемой. Я сам использую его в своем коде, и он работает как шарм:)

   size = 300 #word vector size
   word = 'food' #word token

   try:
        wordVector = model[word].reshape((1, size))
   except KeyError:
        print "not found! ",  word

Примечание: Я использую python Gensim Library для моделей word2vec.