必须在corpus_file参数旁边提供total_words

时间:2019-10-31 01:07:27

标签: gensim

我正在用语料库文件训练doc2vec,这非常大。

model = Doc2Vec(dm=1, vector_size=200, workers=cores, comment='d2v_model_unigram_dbow_200_v1.0')
model.build_vocab(corpus_file=path)
model.train(corpus_file=path, total_examples=model.corpus_count, epochs=model.iter)

我想知道如何获得total_words的价值。

编辑:

total_words=model.corpus_total_words

这对吗?

1 个答案:

答案 0 :(得分:1)

根据当前(2019年10月,Gensim 3.8.1)Doc2Vec.train() documentation,您不必同时提供total_examplestotal_words,只需提供其中一个:

  

支持从(初始)alpha到线性学习率的衰减   min_alpha和准确的进度百分比日志记录   total_examples(文档数)或total_words(原始单词数)   必须提供)。如果文件是相同的语料库   是之前提供给build_vocab()的,您可以简单地使用   total_examples = self.corpus_count。

但是,事实证明,新的corpus_file选项确实需要两者,并且文档注释是错误的。我已提交a bug来解决此文档疏忽。

是的,该模型会缓存build_vocab()中最近的model.corpus_total_words期间观察到的单词数,因此total_words=model.corpus_total_words应该为您做正确的事。

使用corpus_file以空格分隔的文本输入选项时,corpus_countcorpus_total_words给出的数字应与通过运行也可以看到的行数和字数匹配wc your_file_path在命令行中。

(如果您使用的是经典的,普通的Python可迭代语料库选项(无法有效地使用线程),那么向{{同时提供total_examplestotal_words将没有任何好处1}} –它只会使用一个或另一个来估算进度。)