【发布时间】:2019-04-20 18:18:58
【问题描述】:
我有一些没有任何标签的文本。只是一堆文本文件。我想训练一个嵌入层来将单词映射到嵌入向量。到目前为止我看到的大多数例子都是这样的:
from keras.models import Sequential
from keras.layers import Embedding, Flatten, Dense
model = Sequential()
model.add(Embedding(max_words, embedding_dim, input_length=maxlen))
model.add(Flatten())
model.add(Dense(32, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.summary()
model.compile(optimizer='rmsprop',
loss='binary_crossentropy',
metrics=['acc'])
model.fit(x_train, y_train,
epochs=10,
batch_size=32,
validation_data=(x_val, y_val))
他们都假设嵌入层是试图预测标签的更大模型的一部分。但就我而言,我没有标签。我不想对任何东西进行分类。我只想训练从单词(更准确地说是整数)到嵌入向量的映射。但是模型的fit 方法要求x_train 和y_train(如上面给出的示例)。
如何训练一个只有嵌入层而没有标签的模型?
[更新]
根据我从@Daniel Möller 得到的答案,Keras 中的嵌入层正在实施一种监督算法,因此无法在没有标签的情况下进行训练。最初,我认为它是 Word2Vec 的变体,因此不需要训练标签。显然,事实并非如此。就个人而言,我最终使用了与 Keras 或 Python 无关的 FastText。
【问题讨论】:
-
好吧,在这种情况下,您只需要一个只有嵌入层的模型medium.com/@satnalikamayank12/…
-
@desertnaut 感谢您的链接。这绝对是一篇有趣的文章。但据我所知,他们仍在处理提供标签的分类问题。如果我错了,请纠正我,但我认为情况不同。
-
我也在尝试同样的事情,从语料库创建嵌入。用 Keras 找不到任何东西。但是我发现了这个博客,他们在其中使用 Tensorflow 从一个巨大的语料库中创建嵌入。 word embeddings using tensorflow
标签: python machine-learning keras word-embedding