如何在gensim中使用build_vocab?

时间:2018-02-09 09:53:11

标签: nlp word2vec gensim doc2vec

  1. build_vocab扩展了我的旧词汇量? 例如,我的想法是当我使用doc2vec(s)来训练模型时,它只是从数据集s构建词汇表,如果我想扩展它,我需要使用build_vocab()
  2. 我应该在哪里使用它? 把它放在gensim.doc2vec()之后?像
  3. 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()

1 个答案:

答案 0 :(得分:2)

您应该遵循gensim文档/教程/笔记本或在线教程中的工作示例,以了解哪些步骤是必要的以及以何种顺序。

特别是如果您在sentences初始化时提供Doc2Vec()语料库可迭代,它将自动同时执行词汇发现传递和所有培训 - 所以你然后需要自己拨打build_vocab()train()。而且,你永远不会在没有参数的情况下调用build_vocab()。 (在文档或在线中没有工作示例会执行您的代码所做的事情 - 所以在您按照示例并知道他们为什么要这样做之前不要即兴发表新事物。)

update有一个可选的build_vocab()参数,其意图是允许从早期的训练课程中扩展词汇表(准备使用较新的单词进行进一步训练)。但是,它仅针对Word2Vec模型进行了开发/测试 - 有报道称它与Doc2Vec一起使用时会导致崩溃。甚至在Word2Vec中,在所有训练模式中,其整体效果和最佳使用方式都不明确。所以除了能够阅读和阅读的专家外,我不建议使用它。解释源代码,以及许多涉及权衡的问题。如果您收到一大堆新文本,新词,最简单的行动方案,最容易评估/推理,就是使用所有文本示例的组合语料库从头开始重新训练。