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(question