使用gensim的doc2vec生成文档向量

    doc2vec是word2vec的延伸,同样使用无监督方法利用上下文对词语和文档向量进行训练。

    doc2vec的输入是TaggedDocument向量,它包括word_list和tags两部分,word_list是文档的分词列表,如['火箭','是','总冠军',]。tags是文档的标签列表。

   创建TaggedDocument对象:

 
 
document = TaggedDocdument(word_list,tags=label)
模型参数说明:
1.dm=1 PV-DM  dm=0 PV-DBOW。
2.size 所得向量的维度。 
3.window 上下文词语离当前词语的最大距离。
4.alpha 初始学习率,在训练中会下降到min_alpha。
5.min_count 词频小于min_count的词会被忽略。
6.max_vocab_size 最大词汇表size,每一百万词会需要1GB的内存,默认没有限制。
7.sample 下采样比例。
8.iter 在整个语料上的迭代次数(epochs),推荐10到20。
9.hs=1 hierarchical softmax ,hs=0(default) negative sampling。
10.dm_mean=0(default) 上下文向量取综合,dm_mean=1 上下文向量取均值。
11.dbow_words:1训练词向量,0只训练doc向量。
定义模型:
model = Doc2Vec(dm=1, min_count=1, window=3, size=size, sample=1e-3, negative=5)  

   训练模型:

model.train(x_train, total_examples=model_dm.corpus_count, epochs=epoch_num)  

保存模型:
 
 
model.save('model/model_my.model') 

使用infer_vector来推理文档的向量 (输入text仍然是文档的分词列表):

vector = model.infer_vector(text)  

使用model.docvecs[tag]得到已训练文档的向量。

得到与输入文档相似度最高的十个文档:

sims = model.docvecs.most_similar([vector], topn=10) 


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值