使用来自 Gensim Word2Vec 模型的权重作为另一个模型的起点
Using weight from a Gensim Word2Vec model as a starting point of another model
我有两个来自同一领域的语料库,但有时间上的变化,比如十年。我想在它们上训练 Word2vec 模型,然后研究影响语义转换的不同因素。
我想知道我应该如何使用第一个模型的嵌入来初始化第二个模型,以尽可能避免共现估计中方差的影响。
在天真和简单的层面上,您可以只加载一个现有模型,然后 .train()
加载新数据。但请注意,如果这样做:
- 模型不认识的任何词都将被忽略,算法步骤中的词频将仅来自初始调查
- 虽然当前语料库中的所有单词都将根据它们的外观(以及您的
epochs
设置)指示获得尽可能多的训练更新,因此被任意推离它们的原始模型位置,换句话说来自种子模型的将完全保持在原处。但是,只有在同一训练课程中单词之间的交错拔河 war 才能使它们具有有用的可比性。因此,进行这种顺序训练——在新的训练课程中只更新一些单词——可能会以难以衡量的方式降低单词与单词比较的意义。
另一种可能值得尝试的方法是在组合语料库上训练单一模型 - 但 transform/repeat 时代特定 texts/words 在某些方面能够区分早期用法和以后的用法。在之前的几个答案中,在词向量随使用时代变化的上下文中,有关于此建议的更多详细信息:
我有两个来自同一领域的语料库,但有时间上的变化,比如十年。我想在它们上训练 Word2vec 模型,然后研究影响语义转换的不同因素。
我想知道我应该如何使用第一个模型的嵌入来初始化第二个模型,以尽可能避免共现估计中方差的影响。
在天真和简单的层面上,您可以只加载一个现有模型,然后 .train()
加载新数据。但请注意,如果这样做:
- 模型不认识的任何词都将被忽略,算法步骤中的词频将仅来自初始调查
- 虽然当前语料库中的所有单词都将根据它们的外观(以及您的
epochs
设置)指示获得尽可能多的训练更新,因此被任意推离它们的原始模型位置,换句话说来自种子模型的将完全保持在原处。但是,只有在同一训练课程中单词之间的交错拔河 war 才能使它们具有有用的可比性。因此,进行这种顺序训练——在新的训练课程中只更新一些单词——可能会以难以衡量的方式降低单词与单词比较的意义。
另一种可能值得尝试的方法是在组合语料库上训练单一模型 - 但 transform/repeat 时代特定 texts/words 在某些方面能够区分早期用法和以后的用法。在之前的几个答案中,在词向量随使用时代变化的上下文中,有关于此建议的更多详细信息: