【问题标题】:Using pretrained glove word embedding with scikit-learn在 scikit-learn 中使用预训练的手套词嵌入
【发布时间】:2019-08-07 11:40:33
【问题描述】:

我已经使用 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)

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

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

【问题讨论】:

  • 请描述您想要在sklearn 中构建的模型,最好使用公式和/或描述图。
  • 您好,我只想要一个带有预训练词嵌入的逻辑回归模型,并取词嵌入向量的平均值。
  • 输入是亚马逊评论。既然是评论(文本),那么词嵌入就发挥了巨大的作用,对吧?
  • 所以你想输入....一些文本的词袋表示,即文本中单个词计数的固定长度向量?
  • 嗯,是的,不是的。我已经使用 Tokenizer 将文本向量化并将其转换为序列,因此它可以用作输入。我想要词嵌入而不是词袋,因为我认为词袋方法是非常特定于领域的,我也想跨领域工作。

标签: python keras scikit-learn word-embedding glove


【解决方案1】:

您可以简单地使用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)

您还可以使用不同的预训练嵌入(完整列表 here)或训练自己的(请参阅 Zeugma's documentation 了解如何执行此操作)。

【讨论】:

  • 此代码不再适用于 Gensim 4.0.0 或更高版本。
  • 从今天开始,Zeugma 现在应该支持 Gensim 4.0+。只需使用pip install -U zeugma升级到最新版本(0.49+)
  • 是的,我看到了,我正在升级它。
  • zeugma 有什么替代品吗?在我看来不再支持了:/
  • 嘿@DanielWiczew 我不知道替代方案,但Zeugma 仍在维护,只是最近没有提交,因为不需要。如果您遇到问题,请告诉我。
猜你喜欢
  • 1970-01-01
  • 2019-10-27
  • 2022-01-05
  • 2016-06-20
  • 2019-11-14
  • 2019-07-11
  • 2019-12-30
  • 1970-01-01
相关资源
最近更新 更多