任何採樣算法都應該保證頻次越高的樣本越容易被採樣出來。基本的思路是對於長度爲1的線段,根據詞語的詞頻將其公平地分配給每一個詞語:html
counter就是w的詞頻。算法
因而咱們將該線段公平地分配了:數組
接下來咱們只要生成一個0-1之間的隨機數,看看落到哪一個區間,就能採樣到該區間對應的單詞了,很公平。spa
但怎麼根據小數找區間呢?速度慢可不行。htm
word2vec用的是一種查表的方式,將上述線段標上M個「刻度」,刻度之間的間隔是相等的,即1/M:blog
接着咱們就不生成0-1之間的隨機數了,咱們生成0-M之間的整數,去這個刻度尺上一查就能抽中一個單詞了。get
在word2vec中,該「刻度尺」對應着table數組。在具體實現時,不是直接用counter(w),而是對詞頻取了α次冪,通常去α=3/4=0.75,即:it
這個冪其實是一種「平滑」策略,可以讓低頻詞多一些出場機會,高頻詞貢獻一些出場機會,劫富濟貧。table
原文:word2vec原理推導與代碼分析原理