什麼是Word Embeddings

注:因爲很喜歡一個博文,就把它部分翻譯過來,原作者網名叫NSS。他的這篇博文的名字是: “An Intuitive Understanding of Word Embeddings: From Count Vectors to Word2Vec”. 原網址如下:https://www.analyticsvidhya.com/blog/2017/06/word-embeddings-count-word2veec/

注:這裏只撿自己喜歡的部分寫出來。

1 什麼是Word Embeddings

我們知道計算機不認識字符串,所以我們需要將文字轉換爲數字。Word Embedding就是來完成這樣的工作。 定義:A Word Embedding format generally tries to map a word using a dictionary to a vector。

2 Word Embeddings們

既然我們用向量來表示一個詞或詞語,那麼這種表示一定不止有一種方式,所以在這裏總結一下不同的表示。

2.1 Frequency based Embedding

在這個分類下有三個小分類.

  1. Count Vector
  2. TF-IDF Vector(不翻譯,略過)
  3. Co-Occurrence Vector(不翻譯,略過)

2.1.1 Count Vector

我們先舉一個例子。先觀察以下兩句話,D1: He is a lazy boy. She is also lazy. D2: Neeraj is a lazy person. 這兩句話一共有6個不同的單詞,我們按照如下的方式來分下一下這6個單詞在這兩句話中的分佈情況:

Fig 0.

這張表中的數字表示某個單詞在某個句子中出現的次數,比如He在D1中出現1詞,在D2中出現0詞,如此等等。這時我們就可以看到He這個單詞可以形成一個向量,[1,0],向量中的每個元素代表這個單詞出現在某句話中的次數。

2.2 Prediction based Vector

2.2.1 CBOW (Continuous Bag of words)

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.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章