вы можете использовать предварительно подготовленную перчатку для встраивания слов, вы можете использовать glove.6B.50d.txt, который вы можете скачать с http://nlp.stanford.edu/data/glove.6B.zip, использовать 50d
def read_glove_vecs(glove_file):
with open(glove_file,'r',encoding='UTF-8') as f:
words = set()
word_to_vec_map = {}
for line in f:
line = line.strip().split()
curr_word = line[0]
words.add(curr_word)
word_to_vec_map[curr_word] = np.array(line[1:], dtype=np.float64)
i = 1
words_to_index = {}
index_to_words = {}
for w in sorted(words):
words_to_index[w] = I
index_to_words[i] = w
i = i + 1
return words_to_index, index_to_words, word_to_vec_map
Теперь вызовите вышефункция, которая будет возвращать
word_to_index, index_to_word, word_to_vec_map = read_glove_vecs('data/glove.6B.50d.txt')
Теперь создайте встраивание слов из этих предварительно обученных слов
vocab_len = len(word_to_index)
emb_dim = 50 # the above word vector are trained for 50 dim
emb_matrix = np.zeros((vocab_len, emb_dim))
for word, index in word_to_index.items():
emb_matrix[index,:] = word_to_vec_map[word]
embedding_layer = Embedding(vocab_len, emb_dim, trainable = False)
embedding_layer.build((None,))
embedding_layer.set_weights([emb_matrix])
Теперь используйте этот слой для встраивания в вашу модель, что повысит вашу точность