入門NLP,找空再來糾正並且補全相關代碼示例。
reference:
1.https://blog.csdn.net/qq_22238533/article/details/78534743
2.http://wiki.jikexueyuan.com/project/deep-learning/word-vector.html
3.https://www.cnblogs.com/qniguoym/p/7783604.html
w2v參考文章1
另外一篇是關於Skip-Gram和CBow的介紹。
Skip-Gram&CBOW
邏輯比較清晰的綜述文章:
綜述文章
數學原理很清晰很短的一篇文章(也有關於負採樣的簡單說明)
參考文章
在這些互聯網服務裏,我們經常要比較兩個詞或者兩段文本之間的相關性。為了做這樣的比較,我們往往先要把詞表示成計算機適合處理的方式。詞的向量表徵也稱為word embedding。將word進行向量化,我們最自然的會想到將每個詞被表示成一個實數向量(one-hot vector),其長度為字典大小,每個維度對應一個字典裏的每個詞,除了這個詞對應維度上的值是1,其他元素都是0。One-hot vector雖然自然,但是用處有限。
我們先來看一個問題,假如有一個句子 " the dog bark at the mailman"。用one hot 編碼的方式來表達每個單詞,具體來說。
the : [1,0,0,0,0]
dog : [0,1,0,0,0]
bark: [0,0,1,0,0]
at : [0,0,0,1,0]
mailman:[0,0,0,0,1]
通過one-hot的表達,我們可以將每個單詞用一個向量來表示。但以上表達存在幾個問題:
(1)每個向量之間相互正交的(內積為0)。向量正交意味著無相關性,這也正交意味著詞與詞之間是沒有任何關係的。
(2)每個詞的向量維度和不同詞的個數有關。比方說,在上面的這個句子裏,有5個不同的詞,所以向量的維度是5。然而往往實際應用中,一篇文章的中不同的詞的個數是很多的。這樣,向量的維度會非常的高。
補充:除one-hot模型外,詞向量模型可以是概率模型、共生矩陣(co-occurrence matrix)模型或神經元網路模型。在用神經網路求詞向量之前,傳統做法是統計一個詞語的共生矩陣X。X是一個|V|×|V| 大小的矩陣,Xij表示在所有語料中,辭彙表V(vocabulary)中第i個詞和第j個詞同時出現的詞數,|V|為辭彙表的大小。對X做矩陣分解(如奇異值分解,Singular Value Decomposition [5]),得到的U即視為所有詞的詞向量: