此外,词嵌入还可以做类比,比如:v(“国王”)-v(“男人”)+v(“女人”)≈v(“女王”),v(“中国”)+v(“首都”)≈v(“北京”),当然还可以进行算法推理。有了这些运算,机器也可以像人一样“理解”词汇的意思了。

 

 

 

 

 

 

 

 

该算法给出了两种训练模型,CBOW (Continuous Bag-of-Words Model) 和 Skip-gram (Continuous Skip-gram Model)。CBOW将一个词所在的上下文中的词作为输入,而那个词本身作为输出,也就是说,看到一个上下文,希望大概能猜出这个词和它的意思。通过在一个大的语料库训练,得到一个从输入层到隐含层的权重模型;而Skip-gram它的做法是,将一个词所在的上下文中的词作为输出,而那个词本身作为输入,也就是说,给出一个词,希望预测可能出现的上下文的词,2-gram比较常用。

 

 

GloVe(Global Vectors for Word Representation)

GloVe是Pennington等人开发的用于有效学习词向量的算法,结合了LSA矩阵分解技术的全局统计与word2vec中的基于局部语境学习。

LSA全称Latent semantic analysis,中文意思是隐含语义分析,LSA算是主体模型topic model的一种,对于LSA的直观认识就是文章里有词语,而词语是由不同的主题生成的,比如一篇文章包含词语:计算机,另一篇文章包含词语:电脑,在一般的向量空间来看,这两篇文章不相关,但是在LSA看来,这两个词属于同一个主题,所以两篇文章也是相关的。该模型不依赖本地上下文,是对全局字词同现矩阵的非零项进行训练,其中列出了给定语料库中单词在彼此间共同出现的频率。

从本质上说,GloVe是具有加权最小二乘法目标的对数双线性模型。字词共现概率的比率又编码成某种形式的潜在可能意义。例如,以下是基于60亿词汇语料库的各种关于冰和蒸汽的词的共现概率:

如上表所示,“ice(冰)”与“solid(固体)”共现的可能性比“gas(气体)”大,“steam(蒸汽)”与“gas(气体)”共现的可能性比“solid(固体)”大,从而很轻易地可以区别出二者区别。而“ice(冰)”和“steam(蒸汽)”都与“water(水)”的共现概率较大,都与“fashion(时尚)”共现概率很小,因此无法区别“ice”和“steam”。只有在可能性的比率中(图表第三行),才会将像“water”和“fashion”这样的非区别性词汇(non-discriminative)的噪音相抵消,可能性比率越大(远大于1)的词与“ice”特性相关联,可能性比率越小(远小于1)则与“steam”的特性相关联。以这种方式,可能性比率编码了许多粗略形式的意义,这些意义与热力学相位的抽象概念相关联。