一、Word2vec
word2vec是Google與2013年開源推出的一個用於獲取word vecter的工具包,利用神經網絡為單詞尋找一個連續向量看空間中的表示。word2vec是將單詞轉換為向量的算法,該算法使得具有相似含義的單詞表示為相互靠近的向量。
此外,它能讓我們使用向量算法來處理類別,例如着名等式King−Man+Woman=Queen。
word2vec一般分為CBOW(Continuous Bag-of-Words 與Skip-Gram兩種模型:
1、CBOW:根據中心詞周圍的詞來預測中心詞,有negative sample和Huffman兩種加速算法;
2、Skip-Gram:根據中心詞來預測周圍詞;
二者的結構十分相似,理解了CBOW,對於Skip-Gram也就基本理解了。下面主要來講講CBOW。
來源:word2vec原理(一) CBOW與Skip-Gram模型基礎
二、CBOW
上圖為CBOW的主要結構形式。對於上圖,假設單詞的向量空間維度為V,上下文單詞個數為C,求解兩個權重均值W和W'。對於上圖的解釋如下:
1、輸入層:上下文單詞的onehot形式;
2、隱藏層:將輸入層所有onehot后的向量乘以第一個權重矩陣W(所有的權重矩陣相同,即共享權重矩陣),然后相加求平均作為隱藏層向量,該向量的大小與輸入層的每一個樣本大小相同;
3、輸出層:將隱藏層向量乘以第二權重矩陣W‘,得到一個V維的向量,然后再通過激活函數(softmax)得到每一維詞的概率分布,概率最大的位置所指示的單詞為預測出的中間詞;
4、一般使用使用的損失函數為交叉熵損失函數,采用梯度下降的方式來更新W和W’;這實際上是一個假任務,即我們需要的只是第一個權重矩陣W。得到第一個矩陣W之后,我們就能得到每個單詞的詞向量了。
更具體的結構以及流程如下:
來源:究竟什么是Word2vec ? Skip-Gram模型和Continuous Bag of Words(CBOW)模型 ?
I drink coffee everyday
我們使用的window size設為2。
三、word2vec的python使用
可以使用python中的gensim庫。
具體可以見談談Word2Vec的CBOW模型最后一個部分,以及官網https://radimrehurek.com/gensim/models/word2vec.html