自然语言处理任务中要处理的对象是单词或者词组,单词可以看做是类别型特征,虽然tree-based模型可以采用类别特征,但包括神经网络在内的大部分机器学习模型只能处理数值型特征。因此,在使用模型时通常需要将单词等特征转化为数值。最常见的方法是one-hot encoding。但这种方法编码出来的特征非常稀疏,不利于特征学习,而且无法度量单词之间的相似度。google在13年提出的word2vec方法利用一个浅层的神经网络将稀疏的特征向量映射到稠密的低维空间中,其动机是:位于相同上下文的单词应当有相似的语义,利用的是单词的共现性。 准确的说,学习出单词的embedding只是模型的一个“副作用”,word2vec是一个框架,它包含两个建模函数,或者说是两个建模角度,分别是CBOW和Skip-Grams。