理解函数 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()
之后,词汇表将被冻结:在训练(或稍后推理)期间出现但模型中不存在的任何单词都将被忽略。
最近开始研究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()
之后,词汇表将被冻结:在训练(或稍后推理)期间出现但模型中不存在的任何单词都将被忽略。