Gensim doc2vec 文档选译
为了防止自己忘记doc2vec的使用再去花大时间看英文原文,这里挑官网的重点翻译http://radimrehurek.com/gensim/models/doc2vec.html
Initialize a model with e.g.:
用样例初始化:
>>> model = Doc2Vec(documents, size=100, window=8, min_count=5, workers=4)
保存到硬盘:
>>> model.save(fname)
>>> model = Doc2Vec.load(fname) # you can continue training with the loaded model!
If you’re finished training a model (=no more updates, only querying), you can do
如果你已经完成了训练(这辈子不再加新doc训练了),可以这样做
>>> model.delete_temporary_training_data(keep_doctags_vectors=True, keep_inference=True):
to trim unneeded model memory = use (much) less RAM.
这样可以释放不必要的模型占用空间
函数介绍
class gensim.models.doc2vec.Doc2Vec(documents=None, dm_mean=None, dm=1, dbow_words=0, dm_concat=0, dm_tag_count=1, docvecs=None, docvecs_mapfile=None, comment=None, trim_rule=None, **kwargs)
documents参数是可迭代型的doc,注意这里每个document需要有唯一的标识,可以自己定义,也可以用函数来实现,具体见gensim其他函数
用刚才举的例子提供documents来进行初始化,当然不提供doc初始化也可,后面再用其他语句即可
dm定义了训练使用的算法,默认dm=1标识 ‘distributed memory’ (PV-DM),否则是distributed bag of words (PV-DBOW)
size是特征向量维度
window是预测词和上下文的最大距离
alpha是初始学习率,在训练时会线性下降到min_alpha
seed用于随机数生成。注意,对于完全确定重复的运行,必需将模型限制为单个工作线程。
min_count忽略总频率低于此值的所有单词
max_vocab_size 构建词典是的内存限制,1000万词占1G内存。None表示无限制。
sample 高频词下采样的阈值,默认1e-3。个人理解比如”的”出现次数过多,会被随机下采样。
workers 线程数。
iter 文集迭代次数。默认是5,而在段落向量中,一般都社会自卫10或20。
hs 如果是1,多层softmax会被使用。设置为0,并且负样本非0?负采样将被使用。
dm_mean 如果是0用上下文向量的和,1用的是均值。只有在dm在非串联模式下使用时应用。
dm_concat 如果是1,使用上下文向量串联而不是求和或求平均。默认是0.如果为1,模型会很大,但有tag(s)的信息和上下文的所有信息。
dm_tag_count 每篇doc的tag数量
dbow_words 设置为1是表示在doc-vector训练时,同步训练word-vector,默认是0,只是为了速度快。
trim_rule(修建规则) :如果是空,就按照min_count筛选,否则就传一个可调用的接受(word,count,min_count)参数的函数,注意只在建立词典时有用,不储存在模型。
方法
1.accuracy(questions, restrict_vocab=30000, most_similar=None, case_insensitive=True)
2.build_vocab(sentences, keep_raw_vocab=False, trim_rule=None, progress_per=10000, update=False)
sentences可以使生成器,每个句子必须是unicode字符串为元素的list
3.clear_sims()
4.create_binary_tree()
给词按照频率进行哈弗曼树编码
5.delete_temporary_training_data(keep_doctags_vectors=True, keep_inference=True)
抛弃训练和计算得分时的参数。
6.dm
7.doesnt_match(words)
8.estimate_memory(vocab_size=None, report=None)评估现有模型需要的内存
9.evaluate_word_pairs(pairs, delimiter=’\t’, restrict_vocab=300000, case_insensitive=True, dummy4unknown=False)
10.finalize_vocab(update=False)
Build tables and model weights based on final vocabulary settings.
构建表?和模型权重给予最后的词汇设置
11.initialize_word_vectors()
12.intersect_word2vec_format(fname, lockf=0.0, binary=False, encoding=’utf8’, unicode_errors=’strict’)
合并来自给定的原始C word2vec-tool格式的输入隐藏权重矩阵,其中它与当前词汇相交。 (现有词汇中没有添加任何单词,但是相交单词采用文件的权重,而不相交的单词将被单独使用。)binary是一个布尔值,表示数据是二进制word2vec格式。lockf是为任何导入的单词向量设置的锁定因子值; 默认值为0.0可防止后续训练过程中进一步更新向量。 使用1.0来允许合并向量的进一步训练更新。
13.中间不重要的先忽略
xx1:score
xx2:train(sentences, total_examples=None, total_words=None, epochs=None, start_alpha=None, end_alpha=None, word_count=0, queue_factor=2, report_delay=1.0, compute_loss=None)
xx3:update_weights()
复制所有存在的权重,并对新加词重置权重