首页 > 解决方案 > 如何使用 get_keras_embedding 填充值

问题描述

我尝试将 gensim 集成到 Kerasget_keras_embedding模型中。

首先我做文本预处理

  1. text_to_word_sequence将文本转换为标记序列
  2. w2v.vocab[tok].index将单词转换为 gensim 的单词索引
  3. pad_sequences(sequences, maxlen=MAX_SEQUENCE_LENGTH, value=999999)填充一些值

然后我建立一个模型

embedding_layer = w2v.get_keras_embedding(train_embeddings=False)
...
sequence_input = Input(shape=(MAX_SEQUENCE_LENGTH,), dtype='int32')
embedded_sequences = embedding_layer(sequence_input)
...
x = Conv1D(100, kernel_size, activation='relu', padding='same', strides=1)(embedded_sequences)

显然问题出在填充值上。默认值为 0,即 gensim word2vec 中的“the”,如果我使用不存在的值,则会失败并显示以下错误消息。使用 gensim word2vec 填充的正确方法是什么?

InvalidArgumentError (see above for traceback): indices[48,0] = 999999 is not in [0, 400000)
     [[Node: embedding_1/embedding_lookup = Gather[Tindices=DT_INT32, Tparams=DT_FLOAT, _class=["loc:@embedding_1/embeddings"], validate_indices=true, _device="/job:localhost/replica:0/task:0/device:CPU:0"](embedding_1/embeddings/read, _arg_input_1_0_3)]]

我将不胜感激任何帮助。

标签: kerasgensimword2vecword-embedding

解决方案


推荐阅读