首頁>Club>
10
回覆列表
  • 1 # 錢布斯

    word2vec本質上來說就是一個矩陣分解的模型,簡單地說,矩陣刻畫了每個詞和其上下文的詞的集合的相關情況。對這個矩陣進行分解,只取每個詞對應在隱含空間的向量。

    所以word2vec適合的情況就是對於一個序列的資料,在序列區域性資料間存在著很強的關聯。典型的就是文字的序列了,鄰近的詞之間關聯很強,甚至可以透過一個詞的上下文大概預測出中間那個詞是什麼。學習到的詞向量代表了詞的語義,可以用來做分類、聚類、也可以做詞的相似度計算。此外,Word2vec本身的層次分類器或者取樣方式實際上對熱門item做了很大的懲罰,所以不會像一般的矩陣分解一樣,最後算出來語義接近的都是熱門詞,這也是word2vec很好的一個特性。

    對於短文字分類,直接把文件裡面所有的word對應的向量線性相加,作為文字的特徵訓練分類器,效果也很不錯。這種方式其實在word2vec的訓練過程中也有使用。另外如果換成非線性分類器,比如rbf kernel SVM,分類準確度還能再高,這個也是符合預期的。

    其他序列的資料也是可以這樣做的,記得去年KDD上有一篇DeepWalk的文章,在社交網路上進行隨機遊走生成一組組節點的序列,然後透過word2vec訓練每個節點對應的向量。但是我用這個方法在qq的社交網路上面做了一些實驗,發現效果非常不理想,可能和qq社交網路的複雜性有關。

    我非常滿意的一個應用是把word2vec應用在使用者app下載序列上,根據使用者下載app的順序,把app看做單詞,也是可以形成這樣的序列資料,進而訓練處每個app對應的向量。利用這個向量計算app之間的相似度,效果非常好,能夠把真正內容相關的app聚合在一起,同事規避熱門app的影響。類似的場景應該還有很多,而且應用也很廣泛,比如說推薦系統、廣告系統都可以用上。

  • 中秋節和大豐收的關聯?
  • 女神節到了,你會給你的女神買花嗎?