Tensorflow2中的单词嵌入

时间:2019-08-03 02:26:38

标签: nlp gensim word2vec word-embedding tensorflow2.0

我试图了解如何使用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可以完成的嵌入吗?

2 个答案:

答案 0 :(得分:0)

训练Word2Vec模型不需要标签。它在标记化句子中查找上下文窗口,然后为句子中每个唯一标记(单词)创建向量。

最后,不同向量之间的距离有助于在神经网络的嵌入层中创建单词关系。如果将Trainable=True参数设置为嵌入层,则向量将在训练阶段根据给定的标签进行更新,并且模型会产生更好的结果。

答案 1 :(得分:0)

问题已回答(评论部分中的链接)