Doc2Vec、Paragraph Vector介绍

本文介绍了ParagraphVector(PV-DM和PV-DBOW)模型,这是为解决词袋模型的缺点而提出的,它能捕捉词汇顺序和语义信息。ParagraphVector通过无监督学习从可变长度的文本中学习固定长度的特征表示,用于句子、段落和文档。在训练过程中,使用stochastic gradient descent和反向传播更新wordvector和paragraphvector。在实验中,模型表现出色,并且在实际应用中,如Doc2Vec库,可以用于训练文本嵌入并进行预测任务。

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

1 简介

本文根据2014年《Distributed Representations of Sentences and Documents》翻译总结的。

Bag-of-words方法有两个主要的缺点:一是丢失了词汇间的顺序,二是忽视了词汇的语义信息。如果把“powerful”、 “strong” 、“Paris”这3个单词认为是相同距离的。实际上,“powerful”相比“Paris”应该更靠近“strong”。

本文,我们提出了Paragraph Vector,采用无监督算法从可变长度的文本中学习固定长度的特征表示,可变长度的文本包括句子、段落、文档等等。Paragraph Vector克服了word vector的两个缺点,一是使“powerful”相比“Paris”更靠近“strong”,二是考虑了单词顺序,至少在小的上下文中。

2 算法介绍

2.1 Word vector

如下图,根据the、cat、sat预测第4个单词on。每个单词构成矩阵W的一列,然后W通过concatenate或者average进行预测“on”。
在这里插入图片描述

公式如下:
根据周边单词预测下一个单词,目标函数如下:
在这里插入图片描述

预测任务一般采用多分类,如softmax,如下:

在这里插入图片描述

每一个输出的单词y,公式如下,其中U,b是softmax参数,h是由W通过concatenate或者average构建的:

在这里插入图片描述

2.2 Paragraph Vector

如下图,在word vector基础上引入矩阵D,代表paragraph。主要修改就是在word vector公式1中的h变成由W和D一起构建的。
Paragraph token可以认为一个记录,其记录了当前上下文丢失的信息,如段落主题。因为我们称该模型为 Distributed Memory Model of Paragraph Vectors (PV-DM).

该Paragraph vector D是跨段落的,不同段落的不一样。而 word vector W是在各段落间共享的、相同的。

Paragraph vector和word vector 是使用stochastic gradient descent进行训练的,采用了反向传播(backpropagation)。

在预测时,固定word vector,采用梯度下降实时生成Paragraph vector。

我们然后可以使用Paragraph vector D做一些分类预测任务。
在这里插入图片描述

2.3 Paragraph Vector without word ordering: Distributed bag of words

如下图,忽略输入单词的顺序。称为Distributed Bag of Words version of Paragraph Vector (PV-DBOW)。

在这里插入图片描述

3 实验结果

在这里插入图片描述

4 使用

from nltk.tokenize import word_tokenize
from gensim.models.doc2vec import Doc2Vec, TaggedDocument

tail_msg_list = msgs_df[‘msgs’].tolist()
tokenized_sent = [word_tokenize(s.lower()) for s in tail_msg_list]

print(‘开始训练embbeding模型(Doc2Vec)…’)
tagged_data = [TaggedDocument(d, [i]) for i, d in enumerate(tokenized_sent)]
model_d2v = Doc2Vec(tagged_data,dm = 1, alpha=0.1, vector_size= VECTOR_SIZE, min_alpha=0.025)
#训练
model_d2v.train(tagged_data, total_examples=model_d2v.corpus_count, epochs=20)
#预测
v = model_d2v.infer_vector(word_tokenize(row[‘msgs’].lower()), epochs=10)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值