【问题标题】:Understanding the role of the function build_vocab in Doc2Vec了解 Doc2Vec 中函数 build_vocab 的作用
【发布时间】:2020-11-16 21:37:08
【问题描述】:
我最近开始研究 Doc2Vec 模型。
我已经了解了它的机制以及它是如何工作的。
我正在尝试使用 gensim 框架来实现它。
我已将我的训练数据转换为 TaggedDocument。
但我有一个问题:
这条线model_dbow.build_vocab([x for x in tqdm(train_tagged.values)])的作用是什么?
是创建代表文本的随机向量吗?
谢谢你的帮助
【问题讨论】:
标签:
nlp
data-science
gensim
text-classification
doc2vec
【解决方案1】:
Doc2Vec 模型在完全分配和初始化训练语料库之前需要了解几件事。
首先,模型需要知道出现的单词及其频率——一个工作词汇表——以便它可以确定在应用min_count 地板后将保留的单词,并分配/初始化单词向量和相关词的内部模型结构。词频也将用于影响负词示例的随机采样(对于默认的负采样模式)和非常频繁的词的下采样(根据sample 参数)。
此外,模型需要知道整个训练集的粗略大小,以便在每个 epoch 的过程中逐渐降低内部 alpha 学习率,并在日志输出中给出有意义的进度估计。
在build_vocab() 结束时,模型所需的所有内存/对象都已创建。根据底层算法的需要,所有向量都将被初始化为低幅度随机向量,以便为模型训练做好准备。 (通过训练,它基本上不会在内部使用更多内存。)
此外,在build_vocab() 之后,词汇表被冻结:在训练(或以后的推理)期间出现的任何不在模型中的单词都将被忽略。