注:由于很喜欢一个博文,就把它部分翻译过来,原做者网名叫NSS。他的这篇博文的名字是: “An Intuitive Understanding of Word Embeddings: From Count Vectors to Word2Vec”. 原网址以下:https://www.analyticsvidhya.com/blog/2017/06/word-embeddings-count-word2veec/windows
注:这里只捡本身喜欢的部分写出来。网络
咱们知道计算机不认识字符串,因此咱们须要将文字转换为数字。Word Embedding就是来完成这样的工做。 定义:A Word Embedding format generally tries to map a word using a dictionary to a vector。优化
既然咱们用向量来表示一个词或词语,那么这种表示必定不止有一种方式,因此在这里总结一下不一样的表示。ui
2.1 Frequency based Embeddingthis
在这个分类下有三个小分类.spa
2.1.1 Count Vector翻译
咱们先举一个例子。先观察如下两句话,D1: He is a lazy boy. She is also lazy. D2: Neeraj is a lazy person. 这两句话一共有6个不一样的单词,咱们按照以下的方式来分下一下这6个单词在这两句话中的分布状况:code
Fig 0.orm
这张表中的数字表示某个单词在某个句子中出现的次数,好比He在D1中出现1词,在D2中出现0词,如此等等。这时咱们就能够看到He这个单词能够造成一个向量,[1,0],向量中的每一个元素表明这个单词出如今某句话中的次数。blog
2.2 Prediction based Vector
CBOW这个模型是给定一个context的条件下,预测在该context下出现某个词的几率。假设咱们有一句话:“I like Julia”,咱们把context window设置为1,也就是咱们只考虑一个词的前一个词或后一个词,而后这句话能够转换成Fig 1中的形式。右侧的矩阵是Input的unicode.
Fig 1. 注:原图太复杂,在这里我用了一个简单的例子。
这些数据点被传递给一个神经网络,如图Fig 2所示,输出层是一个softmax层,用来计算几率。流程是: 输入被映射到一个低维的向量,好比如Fig 3所示。获得这个二维向量后,再用一个矩阵将它转换成一个三维矩阵,这个三维矩阵通过softmax后就是咱们的output。通过优化后获得的向量就是咱们所求的向量。
Fig 2.
Fig 3.
注:这里的基本的思想是,一个词=它所处的环境(没有看出,这里的=是等于号)。恩,好有哲理的一句话。好比咱们要判断某我的属于哪个阶级,只须要看他的朋友圈就能够知道。好比在咱们的例子中,当给咱们一个context的时候,好比‘I’,那么这个context对应一个单词“like”。在这里咱们的windows设置为1,也就是仅仅考虑一个词的先后词,当咱们将windows设置为2的时候,Julia的context就变成了I和like,这个时候的Input就成了两个向量,也就是I向量和like向量,这两个向量分别通过W和W`两个矩阵的做用,获得两个vector,这个时候取这两个向量的平均值就是获得咱们的output vector,最后通过softmax变换就能够获得最后的结果。如图Fig4所示。
Fig 4.
2.2.2 Skip – Gram model
这个方法正好和上边的方法相反,当给定咱们一个word的时候,咱们用这种方法来计算它的context。如Fig 5.2所示。好比咱们有句话: ”Hey, this is sample corpus using only one context word.” 让咱们构建training data:
Fig 5.
Fig 5.2
由于咱们定义了context window=1,也就是该词的先后应该分别对应一个词,如Fig 5所示。
注意的是,在这里咱们有两个输出,分别对应先后两个词。计算流程如Fig6-Fig 8所示.
Fig 6.
Fig 7.
Fig 8.