具有初始值的 Gensim 词嵌入训练
Gensim word embedding training with initial values
我有一个数据集,文档分为不同的年份,我的objective是为每一年的数据训练一个嵌入模型,同时,不同年份出现的同一个词会有相似的矢量表示。像这样:对于单词 'compute',它在第 1 年的向量是
[0.22, 0.33, 0.20]
第 2 年大约是:
[0.20, 0.35, 0.18]
有没有办法做到这一点?例如,训练第 2 年的模型同时使用初始值(如果该词已在第 1 年训练,修改其向量)和随机性(如果这是语料库的新词)。
我认为最简单的解决方案是在第一个数据集上训练后保存嵌入,然后加载训练的模型并继续第二个数据集的训练。这样你就不应该期望嵌入会偏离保存的状态太多(除非你的数据集非常不同)。
从所有文档创建一个单一的词汇表也是有意义的:特定文档中不存在的词汇表单词将获得一些随机表示,但它仍然是一个有效的 word2vec 模型。
示例来自 documentation:
>>> model = Word2Vec(sentences, size=100, window=5, min_count=5, workers=4)
>>> model.save(fname)
>>> model = Word2Vec.load(fname) # continue training with the loaded model
我有一个数据集,文档分为不同的年份,我的objective是为每一年的数据训练一个嵌入模型,同时,不同年份出现的同一个词会有相似的矢量表示。像这样:对于单词 'compute',它在第 1 年的向量是
[0.22, 0.33, 0.20]
第 2 年大约是:
[0.20, 0.35, 0.18]
有没有办法做到这一点?例如,训练第 2 年的模型同时使用初始值(如果该词已在第 1 年训练,修改其向量)和随机性(如果这是语料库的新词)。
我认为最简单的解决方案是在第一个数据集上训练后保存嵌入,然后加载训练的模型并继续第二个数据集的训练。这样你就不应该期望嵌入会偏离保存的状态太多(除非你的数据集非常不同)。
从所有文档创建一个单一的词汇表也是有意义的:特定文档中不存在的词汇表单词将获得一些随机表示,但它仍然是一个有效的 word2vec 模型。
示例来自 documentation:
>>> model = Word2Vec(sentences, size=100, window=5, min_count=5, workers=4)
>>> model.save(fname)
>>> model = Word2Vec.load(fname) # continue training with the loaded model