1. 程式人生 > >詞袋模型(BOW,bag of words)和詞向量模型(Word Embedding)概念介紹

詞袋模型(BOW,bag of words)和詞向量模型(Word Embedding)概念介紹

例句:

Jane wants to go to Shenzhen.

Bob  wants to go to Shanghai.

一、詞袋模型

    將所有詞語裝進一個袋子裡,不考慮其詞法和語序的問題,即每個詞語都是獨立的。例如上面2個例句,就可以構成一個詞袋,袋子裡包括Jane、wants、to、go、Shenzhen、Bob、Shanghai。假設建立一個數組(或詞典)用於對映匹配

[Jane, wants, to, go, Shenzhen, Bob, Shanghai]

    那麼上面兩個例句就可以用以下兩個向量表示,對應的下標與對映陣列的下標相匹配,其值為該詞語出現的次數

[1,1,2,1,1,0,0]
[0,1,2,1,0,1,1]

    這兩個詞頻向量就是詞袋模型,可以很明顯的看到語序關係已經完全丟失。

二、詞向量模型

詞向量模型是考慮詞語位置關係的一種模型。通過大量語料的訓練,將每一個詞語對映到高維度(幾千、幾萬維以上)的向量當中,通過求餘弦的方式,可以判斷兩個詞語之間的關係,例如例句中的Jane和Bob在詞向量模型中,他們的餘弦值可能就接近1,因為這兩個都是人名,Shenzhen和Bob的餘弦值可能就接近0,因為一個是人名一個是地名。

    現在常用word2vec構成詞向量模型,它的底層採用基於CBOW和Skip-Gram演算法的神經網路模型。

1. CBOW模型

    CBOW模型的訓練輸入是某一個特徵詞的上下文相關的詞對應的詞向量,而輸出就是這特定的一個詞的詞向量。比如上面的第一句話,將上下文大小取值為2,特定的這個詞是"go",也就是我們需要的輸出詞向量,上下文對應的詞有4個,前後各2個,這4個詞是我們模型的輸入。由於CBOW使用的是詞袋模型,因此這4個詞都是平等的,也就是不考慮他們和我們關注的詞之間的距離大小,只要在我們上下文之內即可。

    這樣我們這個CBOW的例子裡,我們的輸入是4個詞向量,輸出是所有詞的softmax概率(訓練的目標是期望訓練樣本特定詞對應的softmax概率最大),對應的CBOW神經網路模型輸入層有4個神經元,輸出層有詞彙表大小個神經元。隱藏層的神經元個數我們可以自己指定。通過DNN的反向傳播演算法,我們可以求出DNN模型的引數,同時得到所有的詞對應的詞向量。這樣當我們有新的需求,要求出某4個詞對應的最可能的輸出中心詞時,我們可以通過一次DNN前向傳播演算法並通過softmax啟用函式找到概率最大的詞對應的神經元即可。

2.Skip-Gram模型

    Skip-Gram模型和CBOW的思路是反著來的,即輸入是特定的一個詞的詞向量,而輸出是特定詞對應的上下文詞向量。還是上面的例子,我們的上下文大小取值為2, 特定的這個詞"go"是我們的輸入,而這4個上下文詞是我們的輸出。

    這樣我們這個Skip-Gram的例子裡,我們的輸入是特定詞, 輸出是softmax概率排前4的4個詞,對應的Skip-Gram神經網路模型輸入層有1個神經元,輸出層有詞彙表大小個神經元。隱藏層的神經元個數我們可以自己指定。通過DNN的反向傳播演算法,我們可以求出DNN模型的引數,同時得到所有的詞對應的詞向量。這樣當我們有新的需求,要求出某1個詞對應的最可能的4個上下文詞時,我們可以通過一次DNN前向傳播演算法得到概率大小排前4的softmax概率對應的神經元所對應的詞即可。

詞向量模型突出特點:

    在詞向量模型中,詞向量與詞向量之間有這非常特殊的特性。例如現在存在國王、男生、女人、皇后四個詞向量,那麼一個完善的詞向量模型,就存在“國王-男人+女人=皇后”這樣的關係。

參考:https://www.cnblogs.com/pinard/p/7160330.html