相似句子:用gensim实现doc2vec

  之前写过Word2vec的实现方式,现在用gensim实现doc2vec,由于调用机制很像,就直接用nltk_data的数据,该数据包安装方式可参考win10环境下python3无法下载nltk_data的问题

Python代码如下

from gensim.models.doc2vec import Doc2Vec, TaggedDocument
from nltk.tokenize import word_tokenize

data = ["I love machine learning, its awesome",
       "I love coding in python",
        "I love building chatbots",
        "they chat anything well"]
tagged_data = [TaggedDocument(words=word_tokenize(_d.lower()),tags=['SENT_%s' %str(i)]) for i,_d in enumerate(data)] 

model = Doc2Vec(size=100,alpha=0.01,min_count=2,dn=1)
model.build_vocab(tagged_data) # 训练词库
for epoch in range(10):
    print('iteration{0}'.format(epoch))
    model.train(tagged_data,total_examples=model.corpus_count,epochs=model.iter)        
    
model["SENT_0"] # 句向量
model.docvecs.most_similar(0) # 相似句子

分类: 自然语言处理