我想为最多使用100个(或X个)单词实现word2vec嵌入。
在这里,我将文本编码为整数:
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
相同
您能指导我解决上述一个或两个问题吗?