Чтобы получить слово вектор, вы должны сделать это:
model['word_that_you_want']
Вы также можете обработать KeyError
, который может возникнуть, если вы не найдете данное слово в вашей модели. Вы также можете прочитать о том, что такое embedding layer
, которое обычно используется в качестве первого уровня нейронной сети (для NLP в целом) и в основном представляет собой поиск соответствия слова соответствующему вектору слова.
Чтобы получить векторы слов для всего предложения, вам нужно сначала инициализировать массив нулей numpy в соответствии с размерами, которые вы хотите.
Вам могут потребоваться другие переменные, такие как длина самого длинного предложения, чтобы что вы можете дополнить все предложения до этой длины. Документация по методу pad_sequences
для Keras здесь .
Простой пример получения предложения векторов слов:
import numpy as np
embedding_matrix = np.zeros((vocab_len, size_of_your_word_vector))
Тогда Выполните итерацию по индексу embedding_matrix и добавьте к нему, если вы найдете слово vector в вашей модели.
Я использую этот ресурс , в котором есть много примеров, и я сослался на него часть кода там (который я тоже иногда использовал сам):
embedding_matrix = np.zeros((vocab_length, 100))
for word, index in word_tokenizer.word_index.items():
embedding_vector = model[word] # using your w2v model, KeyError possible
if embedding_vector is not None:
embedding_matrix[index] = embedding_vector
И в вашей модели (я предполагаю, что Tensorflow с Keras)
embedding_layer = Embedding(vocab_length, 100, weights=[embedding_matrix], input_length=length_long_sentence, trainable=False)
Надеюсь, это поможет .