什麼是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/windows

注:這裏只撿本身喜歡的部分寫出來。網絡

1 什麼是Word Embeddings

咱們知道計算機不認識字符串,因此咱們須要將文字轉換爲數字。Word Embedding就是來完成這樣的工做。 定義:A Word Embedding format generally tries to map a word using a dictionary to a vector。優化

2 Word Embeddings們

既然咱們用向量來表示一個詞或詞語,那麼這種表示必定不止有一種方式,因此在這裏總結一下不一樣的表示。ui

2.1 Frequency based Embeddingthis

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

  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個單詞在這兩句話中的分佈狀況:code

Fig 0.orm

這張表中的數字表示某個單詞在某個句子中出現的次數,好比He在D1中出現1詞,在D2中出現0詞,如此等等。這時咱們就能夠看到He這個單詞能夠造成一個向量,[1,0],向量中的每一個元素表明這個單詞出如今某句話中的次數。blog

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.

相關文章
相關標籤/搜索