天天看点

word2vec (一) 简介与训练过程概要

word2vec最初是Tomas Mikolov发表的一篇文章[1],同时开源了相应的代码,作用是将所有词语投影到K维的向量空间,每个词语都可以用一个K维向量表示。

假如语料库里一共有N个词,one-hot表示即是为每个词分配一个唯一的索引,并且将每个词表示为N维的向量,在该词索引对应的维度值为1,其余维度均为0。如一共有三个词:今天、天气、真好,那么三个词的词向量分别可以是[1,0,0],[0,1,0],[0,0,1]。这种简单的表示方法已经可以解决相当一部分NLP的问题,不过仍然存在不足,即词向量与词向量之间都是相互独立的,我们无法通过这种词向量得知两个词在语义上是否相似,并且如果N非常大,这种高维稀疏的表示也有可能引发维度灾难。为了解决上述问题,就有了词向量的第二种表示方法。

word2vec就是通过这种方法将词表示为向量,即通过训练将词表示为限定维度K的实数向量,这种非稀疏表示的向量很容易求它们之间的距离(欧式、余弦等),从而判断词与词语义上的相似性。如K=3时,我们得到的实数向量可以是[0.5,0.22,0.7]这样。

不过Distributed表示法并不是word2vec诞生才有的,这种方法早在1986年Hinton就提出了[2]。word2vec之所以 会产生这么大的影响,是因为它采用了简化的模型,使得训练速度大为提升,让word embedding这项技术(也就是词的distributed表示)变得较为实用。

见原文!

word2vec用的是神经网络模型,分为两种,cbow与skip-gram,每个模型的训练方法又分别有两种,hierarchical sofmax与negative sampling。

[1] Tomas Mikolov, Kai Chen, Greg Corrado, and Jeffrey Dean. Efficient Estimation of Word Representations in Vector Space. In Proceedings of Workshop at ICLR, 2013.

[2] A. Mnih and G. Hinton. Three new graphical models for statistical language modelling. Proceedings of the 24th international conference on Machine learning,pages 641–648, 2007

本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/bonelee/p/7144607.html,如需转载请自行联系原作者

继续阅读