sentences = gensim.models.doc2vec.TaggedLineDocument(f_path)
dm_model = gensim.models.doc2vec.Doc2Vec(sentences, dm=1, size=300, window=8, min_count=5, workers=4)
dm_model.build_vocab()
答案 0 :(得分:2)
您应该遵循gensim文档/教程/笔记本或在线教程中的工作示例,以了解哪些步骤是必要的以及以何种顺序。
特别是如果您在sentences
初始化时提供Doc2Vec()
语料库可迭代,它将自动同时执行词汇发现传递和所有培训 - 所以你不然后需要自己拨打build_vocab()
或train()
。而且,你永远不会在没有参数的情况下调用build_vocab()
。 (在文档或在线中没有工作示例会执行您的代码所做的事情 - 所以在您按照示例并知道他们为什么要这样做之前不要即兴发表新事物。)
update
有一个可选的build_vocab()
参数,其意图是允许从早期的训练课程中扩展词汇表(准备使用较新的单词进行进一步训练)。但是,它仅针对Word2Vec
模型进行了开发/测试 - 有报道称它与Doc2Vec
一起使用时会导致崩溃。甚至在Word2Vec
中,在所有训练模式中,其整体效果和最佳使用方式都不明确。所以除了能够阅读和阅读的专家外,我不建议使用它。解释源代码,以及许多涉及权衡的问题。如果您收到一大堆新文本,新词,最简单的行动方案,最容易评估/推理,就是使用所有文本示例的组合语料库从头开始重新训练。