例句:算法
Jane wants to go to Shenzhen.數組
Bob wants to go to Shanghai.網絡
1、詞袋模型函數
將全部詞語裝進一個袋子裏,不考慮其詞法和語序的問題,即每一個詞語都是獨立的。例如上面2個例句,就能夠構成一個詞袋,袋子裏包括Jane、wants、to、go、Shenzhen、Bob、Shanghai。假設創建一個數組(或詞典)用於映射匹配spa
1 [Jane, wants, to, go, Shenzhen, Bob, Shanghai]
那麼上面兩個例句就能夠用如下兩個向量表示,對應的下標與映射數組的下標相匹配,其值爲該詞語出現的次數code
1 [1,1,2,1,1,0,0] 2 [0,1,2,1,0,1,1]
這兩個詞頻向量就是詞袋模型,能夠很明顯的看到語序關係已經徹底丟失。blog
2、詞向量模型ip
詞向量模型是考慮詞語位置關係的一種模型。經過大量語料的訓練,將每個詞語映射到高維度(幾千、幾萬維以上)的向量當中,經過求餘弦的方式,能夠判斷兩個詞語之間的關係,例如例句中的Jane和Bob在詞向量模型中,他們的餘弦值可能就接近1,由於這兩個都是人名,Shenzhen和Bob的餘弦值可能就接近0,由於一個是人名一個是地名。class
如今經常使用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機率對應的神經元所對應的詞便可。
詞向量模型突出特色:
在詞向量模型中,詞向量與詞向量之間有這很是特殊的特性。例如如今存在國王、男生、女人、皇后四個詞向量,那麼一個完善的詞向量模型,就存在「國王-男人+女人=皇后」這樣的關係。