我什么时候应该考虑使用 pretrain-model word2vec 模型权重?

When should I consider to use pretrain-model word2vec model weights?

假设我的语料库相当大——有数以万计的独特单词。我可以使用它直接构建一个 word2vec 模型(下面代码中的方法 #1),或者使用预训练模型权重初始化一个新的 word2vec 模型并使用我自己的语料库对其进行微调(方法 #2)。方法#2 值得考虑吗?如果是这样,是否有关于何时应考虑预训练模型的经验法则?

# Approach #1
from gensim.models import Word2Vec
model = Word2Vec(my_corpus, vector_size=300, min_count=1)

# Approach #2
model = Word2Vec(vector_size=300, min_count=1)
model.build_vocab(my_corpus)
model.intersect_word2vec_format("GoogleNews-vectors-negative300.bin", binary=True, lockf=1.0)
model.train(my_corpus, total_examples=len(my_corpus))

此类问题的一般答案是:您应该同时尝试这两种方法,看看哪种更适合您的目的。

没有你确切的数据和项目目标,没有人能确定哪一个更适合你的情况,你需要完全相同的评估替代选择的能力来做各种非常基本的,对您的工作进行必要的调整。

单独:

  • “微调”word2vec-vectors 可能意味着很多事情,并且可以引入一些专家级棘手的权衡决策——只有当你有一个强大的方法来处理这些权衡时相互测试不同的选择。
  • 您的代码显示的特定简单调优方法 - 它依赖于可能在最新的 Gensim 中不起作用的实验方法 (intersect_word2vec_format()) - 非常有限,因为它丢弃了外部的所有单词不在你自己的语料库中的向量,也丢弃了人们经常想要混合旧向量的主要原因之一——覆盖更多不在他们的训练数据中的单词。 (我怀疑这种方法在很多情况下是否有用,但如上所述,要确保你想在你的 data/goals.
  • 上尝试它
  • min_count=1 与 word2vec 和类似算法一起使用几乎总是一个坏主意。如果这些稀有词真的很重要,请找到更多的训练示例,以便为它们训练好的向量。但是如果没有足够的训练示例,通常最好忽略它们 - 保留它们甚至会使周围单词的向量变得更糟。