Nlp 如何在gensim中使用build_vocab? 扩大我的词汇量

Nlp 如何在gensim中使用build_vocab? 扩大我的词汇量,nlp,word2vec,gensim,doc2vec,Nlp,Word2vec,Gensim,Doc2vec,例如,我的想法是,当我使用doc2vec来训练模型时,它只是从数据集中构建词汇表。如果我想扩展它,我需要使用build_vocab() 我应该在哪里使用它?我应该把它放在“gensim.doc2vec()”后面吗 例如: sentences = gensim.models.doc2vec.TaggedLineDocument(f_path) dm_model = gensim.models.doc2vec.Doc2Vec(sentences, dm=1, size=300, window=8,

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

  • 我应该在哪里使用它?我应该把它放在“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文档/教程/笔记本或在线教程中的工作示例,以了解哪些步骤是必要的,顺序是什么

    特别是,如果您在
    Doc2Vec()
    初始化中提供了
    句子
    语料库,它将自动完成词汇发现过程和所有训练,因此您无需自己调用
    build\u vocab()
    train()
    。而且,您永远不会在没有参数的情况下调用
    build\u vocab()
    。(文档或在线中的任何工作示例都不会像您的代码那样工作——因此,在您遵循示例并了解它们为什么这样做之前,不要临时创作新东西。)


    build_vocab()
    中有一个可选的
    update
    参数,该参数旨在允许扩展早期培训课程中的词汇表(为使用新单词进行进一步培训做准备)。但是,它仅针对
    Word2Vec
    型号进行了开发/测试–有报告称,当与
    Doc2Vec
    一起使用时,它会导致崩溃。即使在
    Word2Vec
    中,它的整体效果和最佳使用方式在所有培训模式中都不清楚。因此,我不推荐使用它,除了那些能够阅读和解释源代码的专家,还有许多专家需要自己权衡。如果你收到一大块新的文本,有了新的单词,最好的有根据的行动方针,也最容易评估/推理,就是使用所有文本示例的组合语料库从头开始重新训练

    单独调用build_vocab或在Doc2Vec初始化期间调用build_vocab有什么好处吗?特别是在速度方面,如果您在实例化
    Doc2Vec
    时提供了一个语料库,那么初始化方法只需调用
    build\u vocab()
    ,然后为您调用
    train()
    。(如果您不提供语料库,它只会跳过该步骤并等待您调用它们。)因此,实例化/初始化/构建vocab/train所需的总时间是相同的。显式地这样做只会更清楚地显示代码中的每个步骤,并让您可以选择在每个步骤之间执行额外的步骤,或者改变通常的参数。(通常只有更高级的修补程序需要这样做。)