python - Doc2Vec 在线培训
问题描述
我训练我的 doc2vec 模型:
data = ["Sentence 1",
"Sentence 2",
"Sentence 3",
"Sentence 4"]
tagged_data = [TaggedDocument(words=word_tokenize(_d.lower()), tags[str(i)])
for i, _d in enumerate(data)]
训练部分:
model = Doc2Vec(size=100, window=10, min_count=1, workers=11, alpha=0.025,
min_alpha=0.025, iter=20)
model.build_vocab(tagged_data, update=False)
model.train(tagged_data,epochs=model.iter,total_examples=model.corpus_count)
保存模型:
model.save("d2v.model")
这是工作。比我想在我的词汇表和模型中添加一些句子。前任:
new_data = ["Sentence 5",
"Sentence 6",
"Sentence 7"]
new_tagged_data=
[TaggedDocument(words=word_tokenize(_d.lower()),tags[str(i+len(data))])
for i,_d in enumerate(new_data)]
而不是更新模型:
model.build_vocab(new_tagged_data, update=True)
model.train(new_tagged_data,
epochs=model.iter,total_examples=model.corpus_count)
但它不起作用。木星紧急关闭,没有任何回应。我对 word2vec 模型使用相同的方法,它可以工作!
这可能是什么问题?
解决方案
该build_vocab(..., update-True)
功能仅在 gensim 中进行了实验性开发,Word2Vec
尚未针对Doc2Vec
. 尝试使用它时存在一个长期开放的崩溃错误Doc2Vec
:
https://github.com/RaRe-Technologies/gensim/issues/1019
所以,目前还不支持。
另外,以这种方式增量训练的模型的平衡和向量兼容性有很多模糊和困难的问题,如果可能的话,您应该使用完整的新旧数据重新训练模型,混合一起,而不是尝试小的更新。
推荐阅读
- python - 如何优化检查数千个列表元素数千次?
- python - 如何通过 for 循环在数据框中追加新列?
- python - Python脚本中的缩进错误
- swift - 如何使用输出与代码检测usb swift代码Macos?
- gazebo-simu - 地平面图像对比度改善
- r - 在 R 中从 json 转换为数据框时出错
- wordpress - WooCommerce 管理员订单:根据州过滤城市
- javascript - 带有引用泛型类(非实例)类型的字段的 Typescript 泛型接口
- javascript - 如何从 CloudFlare ip 后面的 url 获取网站的真实 IP 地址?
- python - 元组中的python TypeVar重置