Word2vec

223 阅读3分钟

Word2vec 是Word Embedding方式之一,属于 NLP领域。他是将词转化为「可计算」「结构化」的向量的过程。本文将讲解 Word2vec 的原理和优缺点。
这种方式在 2018 年之前比较主流,但是随着 BERT、GPT2.0 的出现,这种方式已经不算效果最好的方法了。easyai.tech/ai-definiti…

什么是word2vec?

在解释word2vec之前,需要先解释一下Word Embedding.Word Embedding就是将不可计算、非结构化的词转化为可计算的、结构化的向量. 这一步解决的是将现实问题转化为数学问题
Word Embedding 的模型本身并不重要,重要的是生成出来的结果——词向量
什么是word2vec?
Word2vec 是 Word Embedding 的方法之一。 Word2vec 在整个 NLP 里的位置可以用下图表示:
图片.png 下面会详细介绍 Word2vec 的训练模型和用法。

Word2vec 的 2 种训练模式

CBOW(Continuous Bag-of-Words Model)和Skip-gram (Continuous Skip-gram Model),是Word2vec 的两种训练模式。下面简单做一下解释:

CBOW

通过上下文来预测当前值。相当于一句话中扣掉一个词,让你猜这个词是什么。

CBOW通过上下文来预测当前值

Skip-gram

用当前词来预测上下文。相当于给你一个词,让你猜前面和后面可能出现什么词。

Skip-gram用当前词来预测上下文

优化方法

为了提高速度,Word2vec 经常采用 2 种加速方式:

  1. Negative Sample(负采样)
  2. Hierarchical Softmax

Word2vec 的优缺点

需要说明的是:Word2vec 是上一代的产物(18 年之前), 18 年之后想要得到最好的效果,已经不使用 Word Embedding 的方法了,所以也不会用到 Word2vec。

优点:

  1. 由于 Word2vec 会考虑上下文,跟之前的 Embedding 方法相比,效果要更好(但不如 18 年之后的方法)
  2. 比之前的 Embedding方 法维度更少,所以速度更快
  3. 通用性很强,可以用在各种 NLP 任务中

Word2vec在相似度计算上效果不错

缺点:

  1. 由于词和向量是一对一的关系,所以多义词的问题无法解决。
  2. Word2vec 是一种静态的方式,虽然通用性强,但是无法针对特定任务做动态优化

Word2vec无法解决多义词的问题

以上内容均来自:easyai.tech/ai-definiti…

word2vec中的一些参数

  • size:词向量的维度
  • sentences:要分析的语料,可以是一个列表,或者从文件中遍历读出
  • window:决定了目标词会与多远距离的上下文产生关系,默认值是5
  • sg:word2vec两个模型的选择。如果是0, 则是CBOW模型,是1则是Skip-Gram模型,默认是0即CBOW模型
  • hs:word2vec两个解法的选择了。如果是0, 则是Negative Sampling,是1的话并且负采样个数negative大于0, 则是Hierarchical Softmax。默认是0即Negative Sampling
  • negative:即使用Negative Sampling时负采样的个数,默认是5。推荐在[3,10]之间。
  • cbow_mean:仅用于CBOW在做投影的时候,为0,则算法中的xw为上下文的词向量之和,为1则为上下文的词向量的平均值。
  • min_count:需要计算词向量的最小词频。这个值可以去掉一些很生僻的低频词,默认是5。如果是小语料,可以调低这个值。
  • iter:随机梯度下降法中迭代的最大次数,默认是5。对于大语料,可以增大这个值。
  • alpha:在随机梯度下降法中迭代的初始步长。默认是0.025。
  • min_alpha:由于算法支持在迭代的过程中逐渐减小步长,min_alpha给出了最小的迭代步长值。随机梯度下降中每轮的迭代步长可以由iter,alpha, min_alpha一起得出。对于大语料,需要对alpha, min_alpha,iter一起调参,来选择合适的三个值。