Использование предварительно обученного встраивания слова в перчатку с scikit-learn

Я использовал keras для использования предварительно обученных вложений слов, но я не совсем уверен, как это сделать на модели scikit-learn.

Мне нужно сделать это и в sklearn, потому что я использую vecstack объединить последовательную модель керас и модель склеарн.

Вот что я сделал для модели 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

Большое спасибо, и я очень ценю вашу помощь.

0 ответов

Вы можете просто использовать библиотеку Zeugma.

Вы можете установить его с помощью pip install zeugma, затем создайте и обучите вашу модель с помощью следующих строк кода (при условии, что corpus_train а также corpus_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, чтобы узнать, как это сделать).

Другие вопросы по тегам