我尝试将gensim的get_keras_embedding
集成到Keras模型中。
首先我要进行文本预处理
text_to_word_sequence
将文本转换为令牌序列w2v.vocab[tok].index
将单词转换为gensim的单词索引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)]]
我将不胜感激。