正文
这篇文章的目标是展示我们如何能够使用一种词嵌入方法,Word2Vec(2013,Mikolov 等),来把一个具有大量模态的分类特征转换为一组较小的易于使用的数字特征。这些特征不仅易于使用,而且能够成功学习到若干个模态之间的关系,这种关系与经典词嵌入处理语言的方式很相似。
Word2Vec
观其伴,知其意。(Firth, J. R. 1957.11)
上述内容准确地描述了 Word2Vec 的目标:它尝试通过分析一个词的邻词(也称作语境)来确定该词的含义。这个方法有两种不同风格的模型:CBOW 模型和 Skip-Gram 模型。在给定语料库的情况下,模型在每个语句的词上循环,要么根据当前单词来预测其邻词(语境),要么根据当前的语境来预测当前的词,前者所描述的方法被称作「Skip-Gram」,后者被称作「连续性词包,continuous bag of words(CBOW)」。每个语境中单词数目的极限是由一个叫做「窗大小,Window Size」的参数来决定的。
两种 Word2Vec 结构,其中 w(t) 代表的是当前单词,w(t-2)..w(t+2) 代表的是语境单词。(Mikolov 等人. 2013)
因此,如果你选择了 Skip-Gram 方法,Word2Vec 就会使用一个浅层的神经网络,也就是说,用一个只具有一个隐藏层的神经网络来学习词嵌入。网络首先会随机地初始化它的权重,然后使用单词来预测它的语境,在最小化它所犯错误的训练过程中去迭代调整这些权重。有望在一个比较成功的训练过程之后,能够通过网络权重矩阵和单词的 one-hot 向量的乘积来得到每一个单词的词向量。
注意:除了能够允许将文本数据进行数字表征之外,结果性嵌入还学习到了单词之间的而一些有趣的关系,可以被用来回答类似于下面的这种问题:国王之于王后,正如父亲之于......?
如果你想了解更多的关于 Word2Vec 的细节知识,你可以看一下斯坦福大学的课程(https://www.youtube.com/watch?v=ERibwqs9p38),或者 TensorFlow 的相关教程(https://www.tensorflow.org/tutorials/word2vec)。
应用