如何在gensim中使用build_vocab?

how to use build_vocab in gensim?

  1. Build_vocab 扩展我的老词汇量?

例如,我的想法是当我使用 doc2vec(s) 训练模型时,它只是从数据集中构建词汇表。如果我想扩展它,我需要使用 build_vocab()

  1. 我应该在哪里使用它?我应该把它放在"gensim.doc2vec()"之后吗?

例如:

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()

您应该遵循 gensim documentation/tutorials/notebooks 或在线教程中的工作示例,以了解哪些步骤是必要的以及顺序是什么。

特别是,如果你在Doc2Vec()初始化时提供你的sentences语料库可迭代,它将自动 进行词汇发现过程和所有训练 - 所以你 不需要 然后需要自己调用 build_vocab()train()。此外,您 永远不会 调用 build_vocab() 时不带任何参数。 (文档或在线中的任何工作示例都无法完成您的代码所做的工作——因此,在您遵循这些示例并知道它们为什么这样做之前,不要即兴创作新事物。)

build_vocab() 有一个可选的 update 参数,它声称允许扩展早期训练课程中的词汇(为使用新单词进行进一步训练做准备)。然而,只有 developed/tested 涉及 Word2Vec 模型——有报告称它在与 Doc2Vec 一起使用时会导致崩溃。即使在 Word2Vec 中,它在所有训练模式中的总体效果和最佳使用方式也不清楚。所以我不建议使用它,除非专家可以阅读和解释源代码,并且可以自己进行许多权衡。如果您收到一大块新文本和新单词,最有根据且最容易 evaluate/reason-about 的做法是使用所有文本示例的组合语料库从头开始重新训练。