今天给大家介绍一下word2vec的Skip-Gram模型及其应用,并且简要介绍一下word2vec背后的一些数学原理,在这里我们主要通过python的Gensim库来实现word2vec的实战应用。
word2vec是一种词向量的方法, 它可以让含义相近的词或者紧密关联的一些词具有较高的相似度,举例来说:“法国”与“巴黎” 的相似度要比“法国”与“北京”的相似度要高,这是因为如果一篇文章中出现“巴黎”这个词,那么在这篇文章中出现“法国”这个词的概率要比出现“中国”的概率要高,类似的词语还有“国王”与“王后”、“男性”与“女性”等等。这些词在词义上有可能并不相近,但是却有非常强的关联性,同时出现在同一篇文章中的概率较高。word2vec可以捕捉到这种词与词之间的关联性并对其进行建模。
word2vec有2种算法:连续词袋模型(CBOW)和Skip-Gram模型。这里我们主要介绍Skip-Gram模型。
利用word2vec算法,不需要告知算法腾讯的创始人是小马哥,也不需要知道阿里巴巴的创始人是Jack Ma,word2vec通过类比推断会自动去判别,如下面图所示,这是因为word2vec能从相似性的角度去做推断(这里的相似性不是说句型一样,而是语境语意类似,比如说北京天安门,众所周知这是一个景点,然后说广州小蛮腰,知道这也是一个景点,重点是语意理解上两个单词表达都是这么情况,跟上述腾讯和阿里巴巴创始人的例子类似)。

以下介绍来自于这篇博客
Skip-Gram主要是通过输入句子中特定的单词来预测该单词周边的其他单词。如下面图中的句子所示,假设分词得到如下的结果,句子前面是一共五个单词,Skip-gram的意思就是输入“喜欢”这个词,然后通过训练模型推断出“小马哥”、“非常”和“学习”、“自然语言处理”四个单词,当然这里是假设窗口大小为5。之所以叫Skip-gram是因为这是一个n-grams模型,但是不是固定长度的n-gram而是略过了中间的单词来进行建模的一个语言模型。回到上面的例子,更准确的讲法是通过“喜欢”来预测“小马哥”这个单词的时候,中间是略过了非常,以此类推下去。

word2vec的原作者是用soft-max来做为最后的分类器的,模型都是跟数值直接打交道,所以我们需要对句子中的分词结果进行编码才能放入模型,而skip-gram的方式是直接用的独热编码的方式来对每个单词进行编码。具体的一个流程是对文本进行 分词 --> 统计词汇量 --> 基于词汇量对句子或者文本进行独热编码(向量wt表示的是该标识符在位置t的独热编码) --> 训练 --> 模型 --> 预测。网络结构可表述为下图所示,如果窗口大小为5,那么需要循环训练四次来得到目标单词周边的四个单词的预测结果:

当skip-gram的模型训练结束之后,模型训练得到的参数矩阵(weight matrix)就是被训练用来表征语意的。这里得益于独热编码的好处,训练得到的参数矩阵的每一行就是表征了文本中的每个单词。这里可以参看上图,输入层是一个1 x 5的向量,假设隐藏层有3个神经元,那么从输入层映射到隐藏层需要一个5 x 3的矩阵,在经过训练迭代之后得到这个5 x 3矩阵中的每一行就是表征了相对应的单词(具体的计算方式可以参看下图)。所以这里的参数矩阵就是最终需要的词嵌入,而参数矩阵跟独热编码得到输入向量的内积得到的就是词向量。不仅如此,

本文深入探讨word2vec的Skip-Gram模型,介绍其数学原理及如何使用Gensim库进行实战应用,通过实例展示词向量捕捉词间关联性的能力。
最低0.47元/天 解锁文章
993

被折叠的 条评论
为什么被折叠?



