word2vec和doc2vec

word2vec基本思想

通过训练每个词映射成k维实数向量(k一般为模型中的超参数),通过词之间的距离来判断语义相似度。
word2vec采用一个三层的神经网络。 训练的时候按照词频将每个词语Huffman编码,词频越高的词语对应的编码越短。这三层的神经网络本身是对语言模型进行建模, 但同时获得一种单词在向量空间的表示。与潜在语义分析(Latent Semantic Index, LSI)、潜在狄立克雷分配(Latent Dirichlet Allocation, LDA)的经典过程相比, word2vec利用了词的上下文,语义信息更加丰富。

word2vec 方法

首先将高维one-hot表示的单词映射成低维向量,例如将10000维转换成300维,再在保留单词上下文的同时, 从一定程度上保留其意义。可以通过skip-gram 和CBOW两种方法实现word2vec。 输入一个词,然后试着估计其他词出现在该词附近的概率,称为skip-gram方法。与之相反的方法是CBOW, 通过给出一些上下文词语,然后通过评估概率找出最适合该上下文的词。


1514257195(1).png

doc2vec 方法

word2vec只是基于词的维度进行“语义分析”的,并不具有上下文的“语义分析”能力。因此在word2vec的基础上增加一个段落向量,该方法是doc2vec。该模型也有两个方法:Distributed Memory(DM) 和 Distributed Bag of Words(DBOW)。 DM试图给定上下文和段落向量的情况下预测单词的概率。在一个句子或者段落文档训练过程中,段落ID保存不变,共享同一个段落向量。DBOW则在只给定段落向量的情况下预测段落中一组随机单词的概率。

doc2vec 的c-bow与word2vec的c-bow模型的区别

在训练过程中增加了每个句子的id(向量),计算的时候将paragraph vector和word vector累加或者连接起来,作为softmax的输入。在一个句子或者段落训练过程张,共享同一个paragraph vector,相当于在每次预测单词的概率时,都利用了整个句子的语义。
在预测过程,给预测句子分配一个新的paragraph id , 重新利用梯度下降训练待预测的句子,待收敛后,即得到待测句子的paragraph vector。


1514257376(1).png

doc2vec的skip-gram与word2vec的skip-gram模型的区别

在doc2vec里, 输入都是paragraph vector , 输出是该paragraph 中随机抽样的词。


1514257388(1).png

你可能感兴趣的:(word2vec和doc2vec)