系列文章:
- 【word2vec】篇一:理解词向量、CBOW与Skip-Gram等知识
- 【word2vec】篇二:基于Hierarchical Softmax的 CBOW 模型和 Skip-gram 模型
- 【word2vec】篇三:基于Negative Sampling 的 CBOW 模型和 Skip-gram 模型
由于计算机不能直接对各种字符进行运算,为此需要将词的表示进行一些转换。因此,在自然语言处理中,通常需要对输入的语料进行一些预处理:
其中,如何对词汇进行表示是很关键的问题,糟糕的表示方法容易导致所谓的 “Garbage in, garbage out”。
词向量基础
对词汇的表示,常见的有One-hot represention 和 Distributed Representation 两种形式。
One-hot represention
One-hot represention 将词汇用二进制向量表示,这个向量表示的词汇,仅仅在词汇表中的索引位置处为1,其他地方都为0。例子如下图所示:
这样的方式表示词汇虽然简单,但是也有如下缺点:
- 单词的上下文丢失了。
- 没有考虑频率信息。
- 词汇量大的情况下,向量维度高且稀疏,占用内存。
Distributed Representation
Distributed Representation 也可以理解为Word Embedding,具体形式为:
注意到,使用Word Embedding得到的向量维度远小于词汇表的个数。如果将上面的向量在空间中表示,可以得到:
上图告诉我们,通过词向量之间的距离可以度量他们之间的关系,意思相近的词在空间中的距离比较近。出现这种现象的原因是,我们最后得到的词向量在训练过程中学习到了词的上下文。
那么,Distributed Representation 要如何得到?
-
之前介绍的神经网络语言模型可以得到。
-
接下来要介绍的 word2vec 就是另一种更受欢迎的方法。
word2vec 基础知识
word2vec 是 Google 于 2013 年推出的一个用于获取 word vector 的工具包,它简单、高效,因此引起了很多人的关注。在正式讲解 word2vec 前,还需要对一些基本概念有所了解。
CBOW 和 Skip-gram
CBOW 的思想是输入是某一个词 w t w_t wt