注:由於很喜歡一個博文,就把它部分翻譯過來,原做者網名叫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.