Я хочу реализовать вложение word2vec для 100 (или X) большинства используемых слов.
Здесь я кодирую текст в целые числа:
vocab_size = 100
data = nltk.sent_tokenize(train_text)
tokenizer = Tokenizer()
tokenizer.num_words = vocab_size
tokenizer.fit_on_texts(data)
tokenizer.oov_token = "UNK"
encoded = tokenizer.texts_to_sequences(data)
Одна проблема состоит в том, что приведенный выше код просто хранит наиболее часто используемые слова каждого предложения в закодированном векторе и отбрасывает остальные:
[1, 1, 5, 2, 15, 10, 5, 6, 28, 7, 13]
['s s in the that is in to be a with']
В то время как полное предложение:
<s>although destroyed in 1910 , the 1771 mansion that is depicted in old photographs appears to be a georgian-style brick dwelling with gambrel-roofed brick wings .</s>
Я хотел бы использовать «UNK» для слов, которые не входят в число наиболее часто встречающихся слов, и соответствующее целое число в закодированном векторе.
Моя главная проблема для встраивания детали:
embedding_matrix = np.zeros((vocab_size, 50))
for word, i in tokenizer.word_index.items():
embedding_vector = embeddings_index.get(word)
if embedding_vector is not None:
embedding_matrix[i] = embedding_vector
Здесь я просто хочу использовать закодированные целые числа, а не индекс каждого слова, чтобы я мог сохранить размер vocab_size таким же, как 100
Не могли бы вы рассказать мне об одной или двух проблемах, описанных выше?