我正在用语料库文件训练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
这对吗?
答案 0 :(得分:1)
根据当前(2019年10月,Gensim 3.8.1)Doc2Vec.train()
documentation,您不必同时提供total_examples
和total_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_count
和corpus_total_words
给出的数字应与通过运行也可以看到的行数和字数匹配wc your_file_path
在命令行中。
(如果您使用的是经典的,普通的Python可迭代语料库选项(无法有效地使用线程),那么向{{同时提供total_examples
和total_words
将没有任何好处1}} –它只会使用一个或另一个来估算进度。)