Doc2vec原理理解

本文介绍了Doc2Vec模型,它是Word2Vec的一种扩展,用于获取整个文档的向量表示。Doc2Vec有两种主要模型:DistributedMemory (DM) 和 DistributedBagofWords (DBOW),分别用于在给定上下文和文档向量的情况下预测单词的概率,以及在给定文档向量的情况下预测文档中随机单词的概率。此外,文章还提供了Doc2Vec不同语言版本的开源实现链接。

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

转自https://blog.youkuaiyun.com/mpk_no1/article/details/72458003

Doc2vec
虽然Word2vec表示的词性量不仅考虑了词之间的语义信息,还压缩了维度。但是,有时候当我们需要得到Sentence/Document的向量表示,虽然可以直接将Sentence/Document中所有词的向量取均值作为Sentence/Document的向量表示,但是这样会忽略了单词之间的排列顺序对句子或文本信息的影响。基于此,大神Tomas Mikolov 提出了 Doc2Vec方法。Doc2vec模型其实是在Word2vec模型的基础上做出的改进,基本思路很接近,所以在这里就简单总结一下Doc2vec特有的一些东西。

与Word2vec一样,Doc2Vec也有两种模型,分别为:Distributed Memory(DM)和Distributed Bag of Words(DBOW)。DM模型在给定上下文和文档向量的情况下预测单词的概率,DBOW模型在给定文档向量的情况下预测文档中一组随机单词的概率。其中,在一个文档的训练过程中,文档向量共享(意味着在预测单词的概率时,都利用了真个文档的语义)。

其实,知道Word2vec原理的朋友们一看就会知道,Doc2vec的DM模型跟Word2vec的CBOW很像,DBOW模型跟Word2vec的Skip-gram很像。

接下来,我们先看一下Doc2vec的DM模型:

DM模型在训练时,首先将每个文档ID和语料库中的所有词初始化一个K维的向量,然后将文档向量和上下文词的向量输入模型,隐层将这些向量累加(或取均值、或直接拼接起来)得到中间向量,作为输出层softmax的输入。在一个文档的训练过程中,文档ID保持不变,共享着同一个文档向量,相当于在预测单词的概率时,都利用了真个句子的语义。

DBOW模型的输入是文档的向量,预测的是该文档中随机抽样的词。

Word2Vec和Doc2vec的一些开源实现
Word2vec和Doc2vec的现在已经有了各个版本的实现,有C语言实现的版本,Java语言实现的版本,Python语言实现的版本。我只用过Java版本和Python版本,所以这里列一下这两个版本。

Java版本实现:https://github.com/mpk001/doc2vec_java

Python版本实现:https://radimrehurek.com/gensim/models/word2vec.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值