Word2Vec词向量(一)

 一、词向量基础(一)来源背景
   word2vec是google在2013年推出的一个NLP工具,它的特点是将所有的词向量化,这样词与词之间就可以定量的去度量他们之间的关系,挖掘词之间的联系。虽然源码是开源的,但是谷歌的代码库国内无法访问,                       
        因此本文的讲解word2vec原理以Github上的word2vec代码为准。

     最早的词向量是使用one-hot编码表示的(就是有多少个词就有多少维度,每个词对应的位置是1, 其他位置是0), 如下图:
          

  这样表示最大的确定就是我们的词汇表一般都非常大,比如达到百万级别,这样每个词都用百万维的向量来表示简直是内存的灾难。
        

       分布式表示可以解决One-hot方式的问题,它的思路是通过训练,将每个词都映射到一个较短的词向量上来。所有的这些词向量就构成了向量空间,
       进而可以用普通的统计学的方法来研究词与词之间的关系。这个较短的词向量维度是多大呢?这个一般需要我们在训练时自己来指定。

       比如下图我们将词汇表里的词用"Royalty","Masculinity", "Femininity"和"Age"4个维度来表示,King这个词对应的词向量可能是(0.99,0.99,0.05,0.7)(0.99,0.99,0.05,0.7)。
       当然在实际情况中,我们并不能对词向量的每个维度做一个很好的解释。

      

       有了用分布式表示的较短的词向量,我们就可以较容易的分析词之间的关系了,比如我们将词的维度降维到2维,有一个有趣的研究表明,用下图的词向量表示我们的词时,我们可以发现:

      

    

  可见我们只要得到了词汇表里所有词对应的词向量,那么我们就可以做很多有趣的事情了。不过,怎么训练得到合适的词向量呢?一个很常见的方法是使用神经网络语言模型。

    二、词向量基础(CBOW与Skip-Gram模型)

   通俗解释: 

    CBOW((Continuous Bag-of-Words)模型根据中心词W(t)周围的词来预测中心词
   Skip-gram模型则根据中心词W(t)来预测周围词

        

  

   

猜你喜欢

转载自www.cnblogs.com/Richer01/p/10220776.html