1. 程式人生 > >GloVe模型的理解及實踐(1)

GloVe模型的理解及實踐(1)

一、GloVe模型的理解

1) 原理

功能:基於語料庫構建詞的共現矩陣,然後基於共現矩陣和GloVe模型對詞彙進行向量化表示

輸入:語料庫  輸出:詞向量

2)與Skip-Gram、CBOW模型比較

例如:句子為"dog barked at the mailman" ,目標單詞為'at'

Skip-gram模型:Skip-gram模型只關注單個輸入/輸出元組中的目標詞和上下文中的單個單詞,輸入為["dog", "at"]

CBOW模型:關注目標單詞和單個樣本中上下文的所有單詞,則輸入為[["dog","barked","the","mailman"],"at"]

因此,在給定資料集中,對於指定單詞的上下文而言,CBOW比Skip-gram會獲取更多的資訊。Global Vector融合了矩陣分解的全域性統計資訊和上下文資訊。

3)步驟

1.構建共現矩陣

例如句子為:i love you but you love him i am sad
包括7個單詞:i、love、you、but、him、am、sad

設context = 5,則目標單詞的左右長度都為2,以下為統計視窗:

注:中心詞為目標單詞,視窗內容為目標單詞的左右各兩個單詞。

如:"i"左邊無單詞,右邊有兩個單詞"love","you",所以視窗內容為["i","love","you"]

 

設:語料句子長度為n,共現矩陣為 X ,n*n維的矩陣,矩陣元素為 X_{i,j}

X_{i,j} 表示在整個語料庫中,單詞 i 和單詞 j 出現在同一個視窗中的次數。

如中心詞為“you”(下標為2),context單詞為“i、love、but、you”

(下標分別為0,1,3,4),則執行:

X_{2,0}+=1

X_{2,1}+=1

X_{2,3}+=1

X_{2,4}+=1

再重複以上步驟,將整個語料庫遍歷一遍。

2.使用GloVe模型訓練詞向量

代價函式為

下一篇文章為Glove工具的具體實現。

參考:https://blog.csdn.net/codertc/article/details/73864097