首页 > 解决方案 > 如何在网页上训练我自己的自定义词嵌入?

问题描述

我在多个网页上有大量关于我有兴趣出售给客户的产品的文本数据。我尝试使用在 Wikipedia 上训练的预训练 fasttext 词嵌入,但它并没有给我的分类任务带来好的结果。可能是因为网站上的文本数据包含很多技术细节,并且与维基百科的文本数据不同。所以我想做一些词嵌入的迁移学习,保持预训练的快速文本词嵌入为基础。

  1. 如何使用 Keras 在这些网页上训练我自己的自定义词嵌入?
  2. 如何使用 fasttext 预训练嵌入和训练初始化自定义词嵌入?这种初始化真的有助于提供更好的词嵌入吗?

我更喜欢使用 Keras 来训练词嵌入的解决方案。
我知道 Embedding 有 trainable=True 选项,不知道如何使用它。

Embedding(voc_size, emb_dim, weights=[embedding_matrix], input_length, trainable=True)

应该为此 Keras 或 Gensim 推荐哪个框架,为什么?

标签: pythontensorflowkerasdeep-learningnlp

解决方案


我建议你使用 fastText 的 gensim 实现来训练你自己的词嵌入。这应该比您自己的 Keras 实现更容易和更快。您可以从加载预训练模型开始,然后使用您自己的数据继续训练。

from gensim.models import FastText

model = FastText.load_fasttext_format('cc.en.300.bin')

data = [['Hello', 'world'], ...] # Your own training data, a list of sentences
model.build_vocab(data, update=True)
model.train(sentences=data, 
            total_examples=model.corpus_count,
            epochs=5)

编辑:如果您想在 Keras 中实现自己的模型,您确实可以trainable = True按照您的建议使用嵌入层(默认行为)。有一个很好的指南关于如何做到这一点here


推荐阅读