word2vec實(shí)例詳解 word2vec有什么用?
word2vec有什么用?Word2vec本質(zhì)上是一個(gè)矩陣分解模型。簡(jiǎn)言之,矩陣描述了每個(gè)單詞和上下文中的一組單詞之間的相關(guān)性。對(duì)矩陣進(jìn)行分解,只取隱藏空間中每個(gè)單詞的向量。所以word2vec適用于
word2vec有什么用?
Word2vec本質(zhì)上是一個(gè)矩陣分解模型。簡(jiǎn)言之,矩陣描述了每個(gè)單詞和上下文中的一組單詞之間的相關(guān)性。對(duì)矩陣進(jìn)行分解,只取隱藏空間中每個(gè)單詞的向量。
所以word2vec適用于一個(gè)數(shù)據(jù)序列,該序列的本地?cái)?shù)據(jù)之間有很強(qiáng)的相關(guān)性。典型的是文本的順序,相鄰的詞是密切相關(guān)的,甚至一個(gè)詞的上下文都可以大致預(yù)測(cè)中間的詞是什么。所學(xué)習(xí)的詞向量表示詞的語(yǔ)義,可用于分類(lèi)、聚類(lèi)和相似度計(jì)算。另外,word2vec的分層分類(lèi)器或抽樣方法實(shí)際上對(duì)流行項(xiàng)做了大量的懲罰,因此不會(huì)像一般的矩陣分解那樣,語(yǔ)義相似的最后一個(gè)詞就是流行詞,這是word2vec的一個(gè)很好的特點(diǎn)。
對(duì)于短文本分類(lèi),我們直接在文檔中加入所有的詞向量作為文本特征來(lái)訓(xùn)練分類(lèi)器,效果也很好。該方法也應(yīng)用于word2vec的訓(xùn)練過(guò)程中。另外,如果改用RBF核支持向量機(jī)等非線性分類(lèi)器,分類(lèi)精度會(huì)更高,也符合預(yù)期。
其他序列的數(shù)據(jù)也可以這樣做。我記得去年關(guān)于KDD的文章deepwalk,使用社交網(wǎng)絡(luò)上的隨機(jī)游走來(lái)生成節(jié)點(diǎn)序列,然后使用word2vec來(lái)訓(xùn)練每個(gè)節(jié)點(diǎn)對(duì)應(yīng)的向量。但我用這種方法在QQ社交網(wǎng)絡(luò)上做了一些實(shí)驗(yàn),發(fā)現(xiàn)效果很不理想,這可能與QQ社交網(wǎng)絡(luò)的復(fù)雜性有關(guān)。
我非常滿意的一個(gè)應(yīng)用程序是將word2vec應(yīng)用到用戶的應(yīng)用程序下載序列。根據(jù)用戶的app下載序列,將app視為一個(gè)詞,也可以形成這樣的序列數(shù)據(jù),然后訓(xùn)練每個(gè)app對(duì)應(yīng)的向量。利用這個(gè)向量來(lái)計(jì)算應(yīng)用之間的相似度,效果非常好。它可以聚合真正與內(nèi)容相關(guān)的應(yīng)用程序,同事可以避免受流行應(yīng)用程序的影響。類(lèi)似的場(chǎng)景應(yīng)該有很多,而且應(yīng)用也很廣泛,比如推薦系統(tǒng)和廣告系統(tǒng)。
為什么word2vec出來(lái)以后,大家還在用distributional hypothesis找近義詞?
Word2vec翻譯是我們通常所說(shuō)的詞嵌入技術(shù),主要用于自然語(yǔ)言處理。那么這個(gè)基本存在的意義是什么呢?簡(jiǎn)單地說(shuō),人工智能無(wú)法區(qū)分自然語(yǔ)言甚至原始語(yǔ)言所描述的意義。它需要向人工智能輸入一段文本,并且必須將其轉(zhuǎn)換成一個(gè)可直接用于機(jī)器學(xué)習(xí)算法的實(shí)向量,即word2vec中的V(vector)。該技術(shù)將原始單詞轉(zhuǎn)化為人工智能,通過(guò)分析單詞的上下兩個(gè)單詞,甚至單詞所在段落的上下文,識(shí)別向量可以更好地理解嵌入的兩個(gè)單詞的意思。簡(jiǎn)單的一點(diǎn)是,人工智能所未知的單詞可以轉(zhuǎn)化成他們能理解的單詞。這個(gè)函數(shù)更接近同義詞。然而,分布式假設(shè)技術(shù)是一種傳統(tǒng)的同義詞發(fā)現(xiàn)技術(shù)。應(yīng)該注意的是,同義詞和同義詞雖然有相似的含義,但它們并不完全相同。這種差異對(duì)于人類(lèi)來(lái)說(shuō)也許是細(xì)微的,但是對(duì)于人工智能的快速、準(zhǔn)確發(fā)展來(lái)說(shuō)卻是不可忽視的。因此,分布式假設(shè)在一些問(wèn)題的處理上還將繼續(xù)存在,甚至有待進(jìn)一步的研究和探索。我是一個(gè)非專(zhuān)業(yè)的學(xué)習(xí)者,以上只是一個(gè)很淺薄的個(gè)人觀點(diǎn)。
如何用word2vec計(jì)算兩個(gè)句子之間的相似度?
就是用word2vec來(lái)尋找句子之間的相似性。
今天我想介紹一個(gè)簡(jiǎn)單有效的方法,就是用word2vec來(lái)尋找句子之間的相似度。
首先,選擇同義詞庫(kù),例如500000個(gè)單詞。然后,使用word2vec計(jì)算所有單詞的向量。然后,為每個(gè)句子構(gòu)造一個(gè)200000維向量。向量的每個(gè)維度是對(duì)應(yīng)單詞和句子中每個(gè)單詞之間的最大相似度。這樣,句子的向量就被構(gòu)造出來(lái)了。因?yàn)榫渥硬惶L(zhǎng),所以200000維向量的大多數(shù)位置的值是0,因?yàn)榻馐窍∈璧牟⑶覜](méi)有計(jì)算挑戰(zhàn)。