假设我的语料库相当大,有成千上万个独特的单词。我可以直接使用它构建一个word2vec模型(下面代码中的方法#1 ),也可以用预先训练的模型权重初始化一个新的word2vec模型,并使用我自己的语料库对其进行微调(方法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))发布于 2021-04-14 22:34:28
这类问题的一般答案是:你应该同时尝试这两种方法,看看哪一种更适合你的目的。
没有你准确的数据和项目目标,没有人能确定哪一个在你的情况下会更好地工作,而且你需要同样的能力来评估互斥者的选择来做各种基本的,必要的调整你的工作。
另外:
intersect_word2vec_format()) --是相当有限的,而且由于它丢弃了外部向量中尚未在您自己的语料库中的所有单词,此外,人们经常想要混合旧的载体,以涵盖更多的单词,而不是在他们的训练数据中,这也是人们想要混合的一个主要原因。(我怀疑这种方法在很多情况下都是有用的,但正如上面所述,为了确保您想要在data/goals.min_count=1与word2vec &类似的算法一起使用几乎总是一个坏主意。如果这些罕见的单词真的很重要,那么就找更多的训练例子,这样就可以训练出好的向量。但是如果没有足够的训练例子,它们通常更好地被忽略--保持它们甚至会使周围单词的向量变得更糟。--https://stackoverflow.com/questions/67099706
复制相似问题