理解函数 build_vocab 在 Doc2Vec 中的作用

Understanding the role of the function build_vocab in Doc2Vec

最近开始研究Doc2Vec模型。 我已经了解它的机制以及它是如何工作的。 我正在尝试使用 gensim 框架来实现它。 我已将训练数据转换为 TaggedDocument。 但我有一个问题: 这行 model_dbow.build_vocab([x for x in tqdm(train_tagged.values)]) 的作用是什么? 是创建代表文本的随机向量吗? 感谢您的帮助

Doc2Vec 模型在完全分配和初始化之前需要了解有关训练语料库的几件事。

首先也是最重要的是,模型需要知道出现的单词及其频率——一个工作词汇表——以便它可以确定在应用 min_count 底限后将保留的单词,并且 allocate/initialize 相关词的词向量和内部模型结构。单词频率还将用于影响负单词示例的随机采样(对于默认负采样模式)和非常频繁的单词的下采样(根据 sample 参数)。

此外,模型需要知道整个训练集的粗略大小,以便在每个时期内逐渐降低内部 alpha 学习率,并在日志记录中给出有意义的进度估计输出。

build_vocab() 结束时,模型所需的所有 memory/objects 已创建。根据底层算法的需要,所有向量都将被初始化为低量级随机向量,以便为训练模型做好准备。 (通过训练,它在内部基本上不会再使用任何内存。)

此外,在 build_vocab() 之后,词汇表将被冻结:在训练(或稍后推理)期间出现但模型中不存在的任何单词都将被忽略。