Cómo obtener vectores de palabras de Keras Embedding Layer

Actualmente estoy trabajando con un modelo de Keras que tiene una capa de incrustación como primera capa. Para visualizar las relaciones y la similitud de las palabras entre sí, necesito una función que devuelva el mapeo de palabras y vectores de cada elemento del vocabulario (por ejemplo, ‘amor’ – [0.21, 0.56, …, 0.65, 0.10] ).

¿Hay alguna forma de hacerlo?

Puede obtener la palabra incrustaciones utilizando el método get_weights() de la capa de incrustación (es decir, esencialmente los pesos de una capa de incrustación son los vectores de incrustación):

 # if you have access to the embedding layer explicitly embeddings = emebdding_layer.get_weights()[0] # or access the embedding layer through the constructed model # first `0` refers to the position of embedding layer in the `model` embeddings = model.layers[0].get_weights()[0] # `embeddings` has a shape of (num_vocab, embedding_dim) # `word_to_index` is a mapping (ie dict) from words to their index, eg `love`: 69 words_embeddings = {w:embeddings[idx] for w, idx in word_to_index.items()} # now you can use it like this for example print(words_embeddings['love']) # possible output: [0.21, 0.56, ..., 0.65, 0.10]