word2vec
简介
Word2Vec是语言模型中的一种,它是从大量文本预料中以无监督方式学习语义知识的模型,被广泛地应用于自然语言处理中。
Word2Vec是用来生成词向量的工具,而词向量与语言模型有着密切的关系。
基础概念
语料
看word2vec之前可以先看
word2vec是一个统计语言模型,通过计算条件概率来预测和生成向量。
n-gram模型在语料库足够大的情况下,不单独统计各个条件概率,而是直接使用这种大概的方式,减少计算
? $$p(w_k|w_{k-n+1},...,w_{k-1}) = \frac{count(w_{k-n},...,w_k)}{count(w_{k-n+1},...w_{k-1})}$$
参数n(word2vec中的窗口大小)确定需要根据模型参数的数量来确定。一般来说越大越好,后面效果增加减少。
对于统计语言模型而言,利用最大似然,可把目标函数设为:
其中,C表示语料(Corpus),Context(w)表示词w的上下文,即w周边的词的集合。当Context(w)为空时,就取
。特别地,对于前面介绍的n-gram模型,就有
。
模型基础
当然,实际应用中常采用最大对数似然,即把目标函数设为
然后对这个函数进行最大化。
从公式(4)可见,概率 已被视为关于w和Context(w)的函数,即:
其中
为待定参数集。这样一来,一旦对(4)进行优化得到最优参数集
后,F也就唯一被确定了,以后任何概率p(w|Context(w))就可以通过函数
来计算了。与n-gram相比,这种方法不需要事先计算并保存所有的概率值,而是通过直接计算来获取,且通选取合适的模型可使得
中参数的个数远小于n-gram中模型参数的个数。
word2vec网络结构
word2vec是轻量级的神经网络,其模型仅仅包括输入层、隐藏层和输出层,分为CBOW和Skip-gram模型。CBOW是知道上下文语料的情况下,预测当前的词。skip-gram则是根据一个词预测上下文。上下文是指根据window_size设置的前后各n个词。
CBOW模型
skip-gram模型
参考
[1] 深入浅出Word2Vec原理解析 - 知乎 (zhihu.com)