1、以前怎麼計算兩句話的相似度呢?就是詞袋模型
我很帥 》[1(我),1(帥),1(很),0(不)]
我不帥 》[1,1,0,1]
2、現在怎麼計算呢?就是把每個字轉換成一個向量(也可以把一句話變成一個向量)下面是兩種經典模型
CBOW簡單說一下:一共N個字,上下文各兩個字,每個字是一個1*N向量,對應位置是1,其餘全爲0.然後呢乘以一個N*K的矩陣,K就是詞向量的維度,再疊加,再乘以一個K*N的矩陣再softmax,得到一個1*N的向量,與這個字做比較,計算損失就行了,bp算法,最後得到N*K的矩陣用來計算每個字的詞向量。
這樣是不是就完美了?但是這樣一個字一個字來很慢啊,效率很重要呀,
解決方案:Hierarchical Softmax和Negative Sampling兩種方法
我之前上傳的資料裏面有一個講Word2vec數學原理的