Sam*_*rix 2 python machine-learning word2vec data-science
我需要微调我的 word2vec 模型。我有两个数据集,data1
和data2
.
到目前为止我所做的是:
model = gensim.models.Word2Vec(
data1,
size=size_v,
window=size_w,
min_count=min_c,
workers=work)
model.train(data1, total_examples=len(data1), epochs=epochs)
model.train(data2, total_examples=len(data2), epochs=epochs)
Run Code Online (Sandbox Code Playgroud)
这样对吗?我需要将学习的权重存储在某个地方吗?
有人可以向我解释要遵循的步骤吗?
注意:您没有需要调用train()
用data1
,如果你已经提供data1
的模型实例的时间。如果您没有在实例化中指定一个,模型将已经在提供的语料库中完成它自己的内部build_vocab()
和train()
提供的语料库,使用默认数量epochs
(5)。
“微调”不是一个简单的过程,有可靠的步骤来保证改进模型。它非常容易出错。
特别是,如果data2
模型不知道in的词,它们将被忽略。(有一个选项可以build_vocab()
使用参数调用update=True
来扩展已知词汇,但这样的词与之前的词并不完全平等。)
如果data2
包括了一些话,而不是其他人,只有那些在data2
通过额外的培训得到更新-这基本上可以拉的那些话了可比对齐从只出现在换句话说data1
。(只有在交错的共享培训课程中一起训练的单词才会经历“推拉”,最终将它们留在有用的安排中。)
增量训练最安全的做法是重新洗牌data1
和data2
在一起,做上的所有数据继续训练:让所有的话得到新的交织在一起训练。
小智 3
\n\n它是否正确?
\n
是的。您需要确保 data2 的单词在 data1 提供的词汇表中。如果不是的话,词汇中未出现的单词就会丢失。
\n请注意,权重将通过以下方式计算
\nmodel.train(data1, total_examples=len(data1), epochs=epochs)
和
\nmodel.train(data2, total_examples=len(data2), epochs=epochs)
不等于
\nmodel.train(data1+data2, total_examples=len(data1+data2), epochs=epochs)
\n\n我需要将学习到的权重存储在某处吗?
\n
不,你不需要。
\n但如果您愿意,可以将权重保存为文件,以便以后使用。
\nmodel.save("word2vec.model")\n
Run Code Online (Sandbox Code Playgroud)\n然后你通过以下方式加载它们
\nmodel = Word2Vec.load("word2vec.model")\n
Run Code Online (Sandbox Code Playgroud)\n(来源)
\n\n\n我需要微调我的 word2vec 模型。
\n
请注意,“Word2vec 训练是一项无监督任务,没有很好的方法来客观评估结果。评估取决于您的最终应用程序。” (来源)但是您可以在此处查找一些评估(“如何衡量词向量的质量”部分)
\n希望有帮助!
\n 归档时间: |
|
查看次数: |
3337 次 |
最近记录: |