使用预熟的手套单词嵌入Scikit-Learn



我已经使用keras使用了预训练的单词嵌入式,但我不太确定如何在Scikit-learn模型上进行操作。

我也需要在Sklearn中执行此操作,因为我正在使用vecstack来整合Keras顺序模型和Sklearn模型。

这是我为Keras模型所做的:

glove_dir = '/home/Documents/Glove'
embeddings_index = {}
f = open(os.path.join(glove_dir, 'glove.6B.200d.txt'), 'r', encoding='utf-8')
for line in f:
    values = line.split()
    word = values[0]
    coefs = np.asarray(values[1:], dtype='float32')
    embeddings_index[word] = coefs
f.close()
embedding_dim = 200

embedding_matrix = np.zeros((max_words, embedding_dim))
for word, i in word_index.items():
    if i < max_words:
        embedding_vector = embeddings_index.get(word)
        if embedding_vector is not None:
            embedding_matrix[i] = embedding_vector
model = Sequential()
model.add(Embedding(max_words, embedding_dim, input_length=maxlen))
.
.
model.layers[0].set_weights([embedding_matrix])
model.layers[0].trainable = False
model.compile(----)
model.fit(-----)

我对Scikit-Learn非常陌生,从我在Sklearn中创建模型的内容,您会做:

lr = LogisticRegression()
lr.fit(X_train, y_train)
lr.predict(x_test)

那么,我的问题是如何使用此模型使用预训练的手套?我在哪里通过预训练的手套embedding_matrix

非常感谢您,非常感谢您的帮助。

您可以简单地使用Zeugma库。

您可以使用pip install zeugma安装它,然后使用以下代码创建和训练模型(假设corpus_traincorpus_test是字符串列表):

from sklearn.linear_model import LogisticRegresion
from zeugma.embeddings import EmbeddingTransformer
glove = EmbeddingTransformer('glove')
x_train = glove.transform(corpus_train)
model = LogisticRegression()
model.fit(x_train, y_train)
x_test = glove.transform(corpus_test)
model.predict(x_test)

您也可以使用不同的预训练嵌入(在此处完成列表)或训练自己的(请参阅Zeugma的文档)。

最新更新