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



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

model = Word2Vec.load_word2vec_format("GoogleNews-vectors-negative300.bin", binary=True)
model.train(my_corpus, total_examples=len(my_corpus), epochs=model.epochs)

然而,据我所知,Gensim 4.0不再支持Word2Vec.load_word2vec_format。相反,我只能加载keyedVectors。

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

我认为该代码在Gensim 4.0之前的版本中是不起作用的。一个简单的单词向量列表,比如GoogleNews-vectors-negative300.bin,没有足够的信息来继续训练。

它缺少隐藏的输出层权重&词频信息对训练至关重要。

从过去的源代码来看,截至1.0.0版本(2017年2月(,该代码已经给出了一个弃用错误,其中指针指向加载一组简单的单词向量的方法,以解决人们可能有错误想法的问题,并在尝试train()这样的模型时提出了其他错误。(在-1.0.0之前,文档还警告说,这将不起作用,并且会因为一个不太有用的错误而失败。(

正如所提到的其中一个错误,有时有实验支持通过.intersect_word2vec_format()加载先前一组单词向量的一些,以删除现有模型已经初始化的词汇表中的任何单词。但默认情况下,两者(1(都会锁定导入的向量以防止进一步更改;(2( 不会带来新词。这与人们通常想要的";"微调";,因此,这不是一个现成的目标帮助。

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

如果你知道在Gensim-4.0.0之前有任何配方,它应该是可适应性的-4.0对Word2Vec相关的类的更改主要是重构、优化;新选项(几乎不删除功能(。但是,对过去行之有效的方法进行可靠的描述,或者为了什么具体的好处正在采取哪种特定的微调策略,以提出更具体的建议。

最新更新