摘自:http://blog.csdn.net/thriving_fcl/article/details/51404655

词的向量化与word2vec简介

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

为什么要将词用向量来表示呢?这样可以给词语一个数学上的表示,使之可以适用于某些算法或数学模型。通常将词语表示成向量有如下两种方法。

一、one-hot 表示法

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

二、Distributed 表示法

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

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

概率语言模型

在详细介绍word2vec的原理之前还需要简单的提一下概率语言模型。概率语言模型就是表示语言的基本单位(通常为句子)的概率分布函数。有了语言模型我们可以判断一句话是自然语言的概率,或者让机器开口说话(根据语言模型生成一句话)。

见原文!

word2vec训练过程

见原文!

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

Reference

[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

转载于:https://www.cnblogs.com/bonelee/p/7144607.html

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐