使用 Gensim 4.0 微调预训练的 Word2Vec 模型

时间:2021-07-08 08:42:56

标签: gensim word2vec transfer-learning pre-trained-model

使用 Gensim < 4.0,我们可以使用以下代码重新训练 word2vec 模型:

"null"

但是,我的理解是 Gensim 4.0 不再支持 model = Word2Vec.load_word2vec_format("GoogleNews-vectors-negative300.bin", binary=True) model.train(my_corpus, total_examples=len(my_corpus), epochs=model.epochs) 。相反,我只能加载 keyedVectors。

如何使用 Gensim 4.0 使用我的特定领域语料库微调预训练的 word2vec 模型(例如在 GoogleNews 上训练的模型)?

1 个答案:

答案 0 :(得分:0)

我不认为该代码在 4.0 之前的 Gensim 版本中有效。一个简单的词向量列表,比如 var memory = new ReadOnlyMemory<byte>(Encoding.UTF8.GetBytes(str)); ,没有(并且从来没有)有足够的信息来继续训练。

它缺少训练所必需的隐藏到输出层权重和词频信息。

查看过去的源代码,从 1.0.0 版(2017 年 2 月)开始,该代码已经给出了 deprecation-error with a pointer to the method for loading a plain set-of-word-vectors - 以解决人们错误观念的问题 - 以及 {{3} }. (1.0.0 之前的版本,文档也raised other errors on any attempts to train() such a model,& 会因为一个不太有用的错误而失败。)

作为提到的那些错误之一,有时有实验支持加载一些先验词向量集来破坏现有模型已初始化词汇表中的任何词,通过GoogleNews-vectors-negative300.bin。但是默认情况下,(1) 都锁定导入的向量以防止进一步更改; (2) 没有引入新词。这与人们最常希望的“微调”不同,因此它不是实现该目标的现成帮助。

我相信有些人拼凑了自定义代码以在他们的项目中实现各种微调 - 但我不知道有谁发布了可靠的配方或强大的结果。 (我怀疑一些认为他们做得很好的人只是没有严格评估他们正在采取的步骤。)

如果您有任何已知在 Gensim-4.0.0 之前有效的配方,它应该具有适应性 - 对 .intersect_word2vec_format() 相关类的 4.0 更改主要是重构、优化和新选项(几乎没有- 无删除功能)。但要可靠地描述用于工作的内容,或者为了获得哪些特定好处而正在采用哪种特定的微调策略,以提出更具体的建议。