Doc2vec 简介及应用

article/2025/8/23 16:16:09

Doc2vec是基于Word2Vec方法,有两种训练方法,为Distributed Memory (DM) 和Distributed Bag of Words (DBOW); Distributed Memory version of Paragraph Vector
(PV-DM)方法与CBOW方法类似,Bag of Words version of Paragraph Vector (PV-DBOW)与Skip-gram方法类似;同时给文章也给定向量并训练更新。

在Doc2vec中,每一句话用唯一的向量来表示,用矩阵D的某一列来代表。每一个词也用唯一的向量来表示,用矩阵W的某一列来表示。

 左图为PV-DM(CBOW)模式,右图为PV-DBOW(skip-gram)模式

以PV-DM模式为例,取一句话中的一个词作预测词,其他词作输入词,其他词对应的词向量word  vector和本句话对应的句子向量Paragraph vector作为输入层的输入,将Paragraph vector与其他词的词向量相加求均值或累加为新向量 X,使用向量 X 预测取出的词向量。

Doc2vec 增添了句子向量Paragraph vector,Paragraph vector可看作是一个词向量。

词袋模型中,每次训练只截取句子中一小部分词训练,忽略了本次训练词以外该句子中的其他词,仅仅训练了每个词的向量,句子只是每个词的向量累加在一起表达的,忽略了文本的词序。Paragraph vector 则弥补了这个不足,每次训练也是滑动截取句子中一小部分词来训练,Paragraph Vector 在同一个句子的训练中是共享的,这样同一句话会有多次训练,每次训练中输入都包含Paragraph vector,可被看作句子主旨,这样每次训练是句子的主旨向量也会被训练更新。训练完后会得到训练样本中所有的词向量和每句话对应的句子向量。

在预测新的句子的时候,将Paragraph vector随机初始化,放入模型中再重新根据随机梯度下降迭代求得稳定的句向量。预测过程中,模型里的词向量还有投影层到输出层的softmax weights参数不变,在不断迭代中只更新Paragraph vector,其他参数均已固定,很快就可获得预测的句向量。

x_train和x_test中存放的是gensim.models.doc2vec.TaggedDocument类的数据,

有words和tags两个属性,两者都是列表,前一个存words列表,后一个存段落标签。

def train(x_train, x_test, unsup_reviews, vector_size=400, epoch_num=10):# 实例 DM 和 DBOW 模型model_dm = gensim.models.Doc2Vec(min_count=1, window=10, vector_size=vector_size,sample=1e-3, negative=5, dm=1, workers=3)model_dbow = gensim.models.Doc2Vec(min_count=1, window=10, vector_size=vector_size,sample=1e-3, negative=5, dm=0, workers=3)all_words = []all_words.extend(x_train)all_words.extend(x_test)all_words.extend(unsup_reviews)# 使用所有的数据建立词典,model_dm.build_vocab(all_words)model_dbow.build_vocab(all_words)# 将训练所需数据合并train_data= []train_data.extend(x_train)train_data.extend(unsup_reviews)# total_words 或 total_examples 需要赋值,epoches也需要给出# 如果模型执行过build_vocab(),则使用corpus_count即可获取total_words的值model_dm.train(train_data, epochs=epoch_num, total_words=model_dm.corpus_count)  model_dbow.train(train_data, epochs=epoch_num, total_words=model_dm.corpus_count)return model_dm, model_dbow

参考:

https://radimrehurek.com/gensim/models/doc2vec.html(gemsim使用doc2vec实例)

https://cs.stanford.edu/~quocle/paragraph_vector.pdf(原始paper)

http://ai.stanford.edu/~amaas/data/sentiment/(IMDB影评数据)

基于gensim的Doc2Vec简析_林海山波的博客-CSDN博客_doc2vec gensim

Doc2Vec模型介绍及使用 - 灰信网(软件开发博客聚合)


http://chatgpt.dhexx.cn/article/ibSB4vPC.shtml

相关文章

doc2vec java_Doc2Vec,Word2Vec文本相似度 初体验。

https://radimrehurek.com/gensim/models/word2vec.html 接上篇 : import jieba all_list jieba.cut(xl[‘工作内容‘][0:6],cut_allTrue) print(all_list) every_one xl[‘工作内容‘].apply(lambda x:jieba.cut(x)) import traceback def filtered_punctuations…

文本多分类之Doc2Vec实战篇

在我之前的几篇博客中,我介绍了两种文档向量化的表示方法,如Sklearn的CountVectorizer和TfidfTransformer,今天我们再来学习另外一种文档的向量化表示方法-Doc2Vec。如果你还不太了解Doc2Vec的话,我提供一些资料以便你可以对它有深入的了解: …

【NLP】 Word2Vec模型 Doc2Vec模型

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

基于gensim的doc2vec实践

1.“句向量”简介 word2vec提供了高质量的词向量,并在一些任务中表现良好。 关于word2vec的原理可以参考这几篇论文: https://arxiv.org/pdf/1310.4546.pdfhttps://arxiv.org/pdf/1301.3781.pdf 关于如何使用第三方库gensim训练word2vec可以参考这篇…

Word2vec And Doc2vec - 文本向量化

word2vec 与 doc2vec的区别: 两者从字面意思上就可以大致判断出区别来,word2vec主要针对与单词,而doc2vec主要针对于文本: 顾名思义,Word2Vec是在单个单词上训练的,而Doc2vec是在可变长度的文本上训练的,因…

doc2vec原理

doc2vec和word2vec类似,Doc2vec也有两种训练方式,分别是Distributed Memory(DM) 和 Distributed Bag of Words(DBOW)。 DM 试图在给定上下文和段落向量的情况下预测单词的概率,与word2vec中CBOW类似,在一个句子或者文档的训练过程…

Doc2vec论文阅读及源码理解

《Distributed representationss of Sentences and Documents》 Quoc Le and Tomas Mikolov, 2014 文章目录 《Distributed representationss of Sentences and Documents》1. Distributed Memory Model of Paragraph Vectors (PV-DM).1.1 模型架构图1.2 相关代码阅读 2. Dist…

doc2vec介绍和实践

简介 与其他方法的比较 bag of words (BOW):不会考虑词语出现的先后顺序。 Latent Dirichlet Allocation (LDA):更偏向于从文中提取关键词和核心思想extracting topics/keywords out of texts,但是非常难调参数并且难以评价模型的好坏。 …

doc2vec java_word2vec和doc2vec

word2vec基本思想 通过训练每个词映射成k维实数向量(k一般为模型中的超参数),通过词之间的距离来判断语义相似度。 word2vec采用一个三层的神经网络。 训练的时候按照词频将每个词语Huffman编码,词频越高的词语对应的编码越短。这三层的神经网络本身是对…

Doc2vec

目录 一:背景 二:基本原理 2.1:PV-DM 2.2:PV-DBOW 2.3:和word2vec区别 2.4:预测新文本的向量 三:代码实战 3.1:接口介绍 3.2:主要代码 一:背景 之前总结了Word2vec训练词向量的细节,讲解了一个词是如何通过wor…

关于doc2vec

原文地址:https://blog.csdn.net/john_xyz/article/details/79208564 1.“句向量”简介 word2vec提供了高质量的词向量,并在一些任务中表现良好。 关于word2vec的原理可以参考这几篇论文: https://arxiv.org/pdf/1310.4546.pdfhttps://arx…

doc2vec java_doc2vec

gensim 是处理文本的很强大的工具包,基于python环境下: 1.gensim可以做什么? 它可以完成的任务,参加gensim 主页API中给出的介绍,链接如下: http://radimrehurek.com/gensim/apiref.html 2.word2vec的使用 …

Doc2Vec的简介及应用(gensim)

作者:Gidi Shperber 在本文中,你将学习什么是doc2vec,它是如何构建的,它与word2vec有什么关系,你能用它做什么,并且没有复杂的数学公式。 介绍 文本文档的量化表示在机器学习中是一项具有挑战性的任务。很多应用都…

Doc2Vec模型介绍及使用

Doc2Vec模型 Doc2Vec模型 摘要背景段落向量 PV-DM模型PV-DBOW模型gensim实现Doc2Vec说明参考文献摘要 通过本文,你将了解到: Doc2Vec模型是如何产生的Doc2Vec模型细节Doc2Vec模型的特点Doc2Vec的使用及代码(gensim)背景 Doc2Vec模型的产生要从词向量表示(论文word2vec模型)开…

Doc2Vec - 计算文档之间的相似性

本文旨在向您介绍 Doc2Vec 模型,以及它在计算文档之间的相似性时如何提供帮助。 目录 前言 一、Word2Vec 1.Skip-Gram 2.Continuous Bag-of-Words (CBOW) 二、Doc2Vec 1.Distributed Memory version of Paragraph Vector (PV-DM) 2.Words version of Paragra…

Doc2Vec模型的介绍与gensim中Doc2Vec的使用

文章目录 一、Doc2Vec模型1 、PV-DM2 、PV-DBOW 二、gensim实现1、gensim实现Doc2Vec(IMDB数据集)2、gensim实现Doc2Vec(中文数据集) 三、总结四、程序编写时遇到的错误:gensim包中相关函数说明: 参考资料&…

如何自学游戏引擎的开发?

PS:题猪分得清游戏和游戏引擎的区别,所以各位答主不需要劳神解释两者的区别关系什么的了 PS:这里的游戏引擎暂时指图形模块,其他的声音,物理,网络,UI等等模块暂时不考虑 题猪一直自学编程&#…

游戏开发完整学习路线(各个版本都有)

来自:微浪科技 作者:若朝若曦 在软件开发中,游戏开发这个方向看起来目标很明确,但其实是个领域很广的方向,入门的时候如果得不到指点一二,很容易误入歧途,相反,如果走这条路之前能…

智力开发小游戏集含游戏过程中数据存取-C#入门教学程序

对于初学C#程序开发的学员,一般进行采取开发小游戏程序,这样做首先不会让学员失去学习的兴趣,其次可以将C#中基本的控件与类的写法整合到这些游戏程序中,再次将对数据库的操作也教给学员。通过几年的观察这样的教学有它的好处。所…

游戏开发所需要的知识

从放弃求职回家已经一个半月了,一直都在备考事业编。发现这玩意比游戏开发简单太多了,没有人刁难,没有人催促,几个月举办一次,一天只需要学习3-4个小时,其余时间都是自由安排,太舒服了。考上编后…