Word2vec 词索引与 keras 分词器词索引不同

问题描述

我正在使用 word2vec 来训练和获取嵌入矩阵。但是,字典包含从 0 开始的单词索引。

Dictionary of word2vec

然后,我也得到了索引也从 0 开始的嵌入矩阵

enter image description here

但是,当我使用 keras 标记器时,我得到索引从 1

enter image description here

这是我将嵌入矩阵作为权重传递的嵌入层。

embedded = Embedding(len(embeddings.vocab),output_dim = output_dim,input_length = test_X.shape[1],weights=[embeddings_matrix],trainable=True)(_input)

我的输入数据就像

arr = [
    [1,1,2,3,4],[1,4,5,.....
]

然后,我在我的阵列上使用 pad_sequence 并得到

arr = [
    [1,0],0]
]

这里的 0 只是为了填充序列以具有相同的长度。但是,它将由我的嵌入矩阵的索引 0 的向量表示,这是错误的。我该如何处理?

解决方法

来自 pad_sequences 文档:

参数:value = Float 或 String,填充值。 (可选,默认为 0。)

所以你可以做类似的事情

pad_sequences(sequence,value='PAD')

应该将数组更改为:

arr = [
    [1,1,2,3,4,'PAD','PAD'],[1,5,'PAD']
]

希望消除任何歧义。