Как проверить, существует ли ключ в обучаемой модели 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.