docvec使用 相似文本

# 需要的包
from gensim.models import Doc2Vec
from gensim.models.doc2vec import TaggedDocument
# 处理数据
for i, doc in enumerate(docs):
# document = TaggedDocument(words=doc.split(" "), tags=['TRAIN' + '_%s' % i])
document = TaggedDocument(words=doc.split(" "), tags=[tags[i]])
x_train.append(document)

# 训练
def train():
x_train = load_data(); size = 100
model_dm = Doc2Vec(x_train, min_count=1, window=3, size=size, sample=1e-3, negative=5, workers=4)
model_dm.train(x_train, total_examples=model_dm.corpus_count, epochs=5)
model_dm.save('./static/model/9.model')
return model_dm

# 找相似文本
def text_sim(text):
model_dm = Doc2Vec.load('../static/d2v_model/9.model')
inferred_vector_dm = model_dm.infer_vector(text.split(' '))
sims = model_dm.docvecs.most_similar([inferred_vector_dm], topn=200)
return [sim[0] for sim in sims]

# tag和words字典
_ = dict((d.tags[0], d.words) for d in data)

可以用来调整相似文本推荐中的权重

posted on 2020-04-09 16:52  nnnnnnnnnnnnnnnn  阅读(282)  评论(0)    收藏  举报

导航