前段时间做过一个NLP方面的比赛,以及最近的实习,都用到了Word2vec,下面就简单谈一下这个工具吧,更深的数学原理可以参考Mikolov的原始论文。
Word2vec是Google于2013年开源的一个词向量工具,将原始文本转化成词向量的表达形式。其基本思想是:通过训练将每个词映射成K维的实数特征向量,这样一来,词与词之间的相似度就可以用余弦距离或者欧式距离来衡量了,相比传统的one-hot,进一步挖掘了文本的更深层的含义。
原理:
采用三层神经网络:输入层 - 隐含层 - 输出层,训练部分有CBOW和Skip-gram两种实现形式,内部构建Huffman树对词进行编码,其中一个重要假设就是一个单词只与上下文的单词有关,不考虑单词间的顺序关系,这个和N-gram有点类似。此外,Word2vec本质上也是一种矩阵分解模型,矩阵刻画了每个词和其上下文的词的集合的相关情况