對於搞自然語言處理的人來說,google的word2vec是比較流行的詞向量生成工具。一些開源框架,也集成了它,如JAVA語言的deeplearning4j,Python語言的gensim。對於大規模文字語料經word2vec訓練後,可以得到wordvectors,即詞向量,它用多維空間的點來表示一個詞,因而可以通過計算向量的空間距離(Cosine )來衡量詞的(語義)距離,如,與詞“暴跌”語義相近的:
./distance negative.bin
Enter word or sentence (EXIT to break): 暴跌
Word: 暴跌 Position in vocabulary: 1478
Word Cosine distance
------------------------------------------------------------------------
下挫 0.902400
大跌 0.877469
下跌 0.876485
跳水 0.871455
震盪 0.865968
跌 0.864824
拉昇 0.843199
暴漲 0.830831
深跌 0.830196
崩盤式 0.829867
反彈 0.824941
高位 0.818257
一度 0.818016
這表明,和“暴跌”相關聯的詞是“下挫”、“大跌”等。
從數學角度來講,word2vec實際上是利用了矩陣模型,所以,矩陣裏面的數據可以是任意信息。因此,“詞”不僅僅是文檔中的詞,而可以是任意構成序列的信息。大自然還是挺奇妙的,因爲人性(性格、習慣等)的原因,大多數人的語言和行爲,還是可以有規律的。語言產生了文字,形成了信息;而行爲同樣產生了信息。舉幾個例子:
人們購物的行爲,會產生一系列信息,如超市收銀條:
可以把“商品名稱”看成“詞”,超市所有的電子收銀條記錄進行詞向量訓練,可以得到商品的關聯性,用來指導超市商品的擺放順序。這是實體超市的應用場景。電子商務網站同樣可以這麼做,把用戶的瀏覽行爲,購買記錄,當做“詞”,同樣可以給用戶做關聯推薦。類似的消費行爲有很多,如點菜單上的菜名當做“詞”向量,可以通過大量的菜單來制定套餐。
知乎上也提到了,根據詞向量做成app推薦系統、社交網絡大V推薦等應用。