向量化算法Doc2vec/str2vec/para2vec原理详解

前面介绍过了word2vec的原理以及生成词向量神经网络模型的常见方法,word2vec基于分布假说理论可以很好的提取词语的语义信息,因此,利用word2vec技术计算词语间的相似度有非常好的效果。同样word2vec技术也用于计算句子或者其他长文本间的相似度,其一般做法是对文本进行分词后,提取其关键词,用词向量表示这些关键词,接着对关键词向量相加求平均或者将其拼接,最后利用词向量计算文本间的相似度。这种方法丢失了文本中的语序信息,而文本的语序包含着重要的信息。例如“小王送给小红一个苹果”和“小红送给小王一个苹果”虽然组成两个句子的词语相同,但是表达的信息却完全不同。为了充分利用文本的语序信息,有研究者在word2vec的基础上提出了文本向量化(doc2vec),又称str2vec和para2vec。下面介绍doc2vec的相关原理。

在word2vec崭露头角的时候,谷歌工程师Quoc Le和Tomoas Mikolov在word2vec的基础上进行拓展,提出了doc2vec的技术。Doc2vec技术存在两种模型——Distributed Memory(DM)和Distributed Bag of Words(DBOW),分别对应着word2vec技术里的CBOW和Skip-gram模型。与CBOW模型类似,DM模型试图预测给定上下文中某单词出现的频率,只不过DM模型的上下文不仅包括上下文单词而且还包括相应的段落。DBOW则在仅给定段落的情况下预测段落中一组随机单词的概率,与Skip-gram模型只给定一个词语预测目标词概率概率分布类似。

这里简要回顾一下CBOW模型。下图中是一个利用CBOW模型训练词向量的例子。以“the cat sat”这句话为例,用来构建预测下一个词的概率分布。首先用固定长度的不同词向量表示上文的三个词语,接着将这三个词向量拼接起来组成上文的向量化表示,将这个上文向量化表示输入CBOW模型预测下一个词的概率分布。

         向量化算法Doc2vec/str2vec/para2vec原理详解_第1张图片

 

 

与CBOW模型相比,DM模型增加了一个与词向量长度相等的段向量,也就是说DM模型结合词向量和段向量预测目标词的概率分布,如下图所示。在训练过程中,DM模型增加了一个paragraph ID,和普通的word2vec一样,paragraph ID也是先映射成一个向量,即paragraph vector。paragraph vector与word vector的维数虽然一样,但是代表着两个不同的向量空间。

在之后的计算里,paragraph vector与word vector累加或者连接起来,将其输入到softmax层。在一个句子或者文档的训练过程中,paragraph ID保持不变,共享着同一个paragraph vector,相当于每次在预测单词的概率时,都利用了整个句子的语义。在预测阶段,给待预测的句子新分配一个paragraph ID,词向量和输出层softmax的参数保持训练阶段得到的参数不变,重新利用随机梯度下降算法训练待预测的句子。待误差收敛后,即得到待预测句子的paragraph vector。

 

          向量化算法Doc2vec/str2vec/para2vec原理详解_第2张图片

DM模型通过段落向量和词向量相结合的方式预测目标词的分布概率,而DBOW模型的输入只有段落向量,具体如下图所示。DBOW模型通过一个段落向量预测段落中某个随机词的概率分布。

向量化算法Doc2vec/str2vec/para2vec原理详解_第3张图片

 

小结:

由于doc2vec完全是从word2vec技术拓展来的,DM模型与CBOW模型相对应,故可根据上下文词向量和段向量预测目标词的概率分布;DBOW模型与Skip-gram模型相对应,只输入段向量,预测从段落中随机抽取的词组概率分布。总体而言,doc2vec是word2vec的升级,doc2vec不仅提取了文本的语义信息,而且提取了文本的语序信息。在一般的文本处理任务中,会将词向量和段向量相结合使用以期获得更好的效果。

参考:Python自然语言处理实战

          https://blog.acolyer.org/2016/06/01/distributed-representations-of-sentences-and-documents/

下篇:基于Doc2vec的段落向量训练及文本相似度计算

 

你可能感兴趣的:(文本相似度,NLP)