我试图了解如何使用Tensorflow2来训练没有预设标签的单词嵌入。
在Tensorflow2教程(https://www.tensorflow.org/beta/tutorials/text/word_embeddings)中,它展示了如何使用带有标签的预构建数据集来训练单词嵌入。
imdb = keras.datasets.imdb
(train_data, train_labels), (test_data, test_labels) = imdb.load_data(
num_words=vocab_size)
embedding_dim=16
model = keras.Sequential([
layers.Embedding(vocab_size, embedding_dim, input_length=maxlen),
layers.GlobalAveragePooling1D(),
layers.Dense(16, activation='relu'),
layers.Dense(1, activation='sigmoid')
])
model.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy'])
history = model.fit(
train_data,
train_labels,
epochs=30,
batch_size=512,
validation_data=(test_data, test_labels))
但是,我想知道如何使用Tensorflow2训练未标记文本上的嵌入,类似于Gensim的Word2Vec可以完成的嵌入吗?
答案 0 :(得分:0)
训练Word2Vec模型不需要标签。它在标记化句子中查找上下文窗口,然后为句子中每个唯一标记(单词)创建向量。
最后,不同向量之间的距离有助于在神经网络的嵌入层中创建单词关系。如果将Trainable=True
参数设置为嵌入层,则向量将在训练阶段根据给定的标签进行更新,并且模型会产生更好的结果。
答案 1 :(得分:0)
问题已回答(评论部分中的链接)