基于doc2vec计算文本相似度

本文介绍了Doc2vec模型,这是一种无监督学习算法,用于预测文档向量,克服了词袋模型的缺点。通过PV-DM和PV-DBOW两种训练方式,Doc2vec可以处理不同长度的句子。文章展示了如何使用Doc2vec计算文本句子向量,以及如何进行文档相似度计算,匹配最优相似度文本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@基于doc2vec计算文本相似度

Doc2vec

​Doc2vec又叫Paragraph Vector是Tomas Mikolov基于word2vec模型提出的,其具有一些优点,比如不用固定句子长度,接受不同长度的句子做训练样本,Doc2vec是一个无监督学习算法,该算法用于预测一个向量来表示不同的文档,该模型的结构潜在的克服了词袋模型的缺点。

​Doc2vec模型是受到了word2vec模型的启发,word2vec里预测词向量时,预测出来的词是含有词义的,比如上文提到的词向量’powerful’会相对于’Paris’离’strong’距离更近,在Doc2vec中也构建了相同的结构。所以Doc2vec克服了词袋模型中没有语义的去缺点。假设现在存在训练样本,每个句子是训练样本。和word2vec一样,Doc2vec也有两种训练方式,一种是PV-DM(Distributed Memory Model of paragraphvectors)类似于word2vec中的CBOW模型,另一种是PV-DBOW(Distributed Bag of Words of paragraph vector)类似于word2vec中的skip-gram模型

最近空闲之余,正好公司也有相应的业务需求,分享一下我最新的作品,一起体会一下nlp世界的魅力,希望各位能喜欢,哈哈哈哈,好了废话不多说,直接上重点!!!

获取文本句子向量(短文本)

import pandas as pd
import jieba.posseg as psg
import gensim
from gensim.models.doc2vec import Doc2Vec,TaggedDocument
import numpy as np
import os
import pkuseg

os.environ['CUDA_VISIBLE_DEVICES']='4'

#获取句子向量:
def get_sentence_vec(excel_path):
    df = pd.read_excel(excel_path, index=False) 
    documents =[]
    #选择需要处理成向量的列并转成列表
    questions = df["questions"].tolist()
    count = 0
    #保留一个原始列
    need_questions = []
    #分词并去除掉停用词
    for question in questions:
            need_questions.append(question)
            documents.append(TaggedDocument(pseg.cut(q
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值