2017-08-18 110 views
0

我對每個用戶都有一個word2vec模型,所以我理解兩個單詞在不同模型上的樣子。有沒有比這更好的方式比較訓練的模型?優化word2vec模型比較

userAvec = Word2Vec.load(userAvec.w2v) 
userBvec = Word2Vec.load(userBvec.w2v) 

#for word in vocab, perform dot product: 

cosine_similarity = np.dot(userAvec['president'], userBvec['president'])/(np.linalg.norm(userAvec['president'])* np.linalg.norm(userBvec['president'])) 

這是比較兩種模型的最佳方法嗎?有沒有更好的方法來看看兩個模型如何比較而不是逐字比較?圖片1000個用戶/模型,每個都有相似的詞彙數量。

+0

將兩個模型與直接餘弦相似性進行比較是沒有意義的。 – Mehdi

回答

0

你的問題的核心是一個錯誤的假設。

如果userAvecuserBvec被訓練在單獨的會話,在不同的數據模型,在userAvec['president']userBvec['president']之間的計算角度,獨自一人,基本上是毫無意義的。在算法初始化過程中存在隨機性,然後在大多數訓練模式中 - 通過諸如負面採樣,頻繁向下採樣以及由於線程調度可變性導致的訓練實例的任意重新排序等事情)。因此,即使使用完全相同的語料庫和參數進行重複的模型訓練,也會導致相同詞語的座標不同。

這只是在相同迭代過程中共同訓練過的單詞之間的相對距離/方向,具有重要意義。

因此,比較一個特定單詞的兩個模型的前N個相似單詞是否相似,可能會比較有趣。但是在替代模型中相同單詞的座標之間的角度的原始值不是有意義的度量。