如何正确地将 Word2Vec 向量作为输入传递给 LSTM

数据挖掘 Python lstm word2vec 矩阵
2022-03-01 13:16:44

我正在尝试构建一个文本分类器lstm,在其第一层中使用该分类器具有Word2Vec模型获得的权重。

为了为每个句子构建一个matrix包含indexes每个单词的单词,我尝试过:(如此所述)

X_tr_word2vec = np.array(X_tr_word2vec)
y_tr_word2vec = np.array(y_tr_word2vec)

train_x = np.zeros([X_tr_word2vec.shape[0], max_sentence_length], dtype=np.int32)
train_y = np.zeros([y_tr_word2vec.shape[0]], dtype=np.int32)

for i, sentence in enumerate(X_tr_word2vec):
    for j, word in enumerate(sentence[:-1]):
        train_x[i,j] = model_word2vec.wv.vocab[word].index

但是,当我运行代码时,我得到了这个错误:KeyError: 'enquiringly',这是什么意思?我想这是一个错误的train_x维度。

更新:

Word2Vec以前用整个训练集训练过模型:

model_word2vec = models.Word2Vec(X_tr_word2vec, size=150, window=9)
1个回答

这意味着您的词'enquiringly'不在您的词嵌入词汇表vocab中。

对于词汇表外(OOV)的单词,通常有一个专用于它们的嵌入向量。尝试在 中找到该特殊符号vocab并使用相应的嵌入向量。