Google开源word2vec,文本相似度计算工具
Google開(kāi)源word2vec,文本相似度計(jì)算工具
谷歌已經(jīng)使用Deep Learning技術(shù)開(kāi)發(fā)了許多新方法來(lái)解析語(yǔ)言,目前,谷歌開(kāi)源了一款基于Deep Learning的學(xué)習(xí)工具——word2vec,這是首款面向大眾的Deep Learning學(xué)習(xí)工具。
word2vec(word to vector)顧名思義,這是一個(gè)將單詞轉(zhuǎn)換成向量形式的工具。通過(guò)轉(zhuǎn)換,可以把對(duì)文本內(nèi)容的處理簡(jiǎn)化為向量空間中的向量運(yùn)算,計(jì)算出向量空間上的相似度,來(lái)表示文本語(yǔ)義上的相似度。
word2vec為計(jì)算向量詞提供了一種有效的連續(xù)詞袋(bag-of-words)和skip-gram架構(gòu)實(shí)現(xiàn),word2vec遵循Apache License 2.0開(kāi)源協(xié)議。
如何轉(zhuǎn)換?
word2vec主要是將文本語(yǔ)料庫(kù)轉(zhuǎn)換成詞向量。它會(huì)先從訓(xùn)練文本數(shù)據(jù)中構(gòu)建一個(gè)詞匯,然后獲取向量表示詞,由此產(chǎn)生的詞向量可以作為某項(xiàng)功能用在許多自然語(yǔ)言處理和機(jī)器學(xué)習(xí)應(yīng)用中。
在舉例子之前,引入余弦距離(Cosine distance)這個(gè)概念(摘自維基百科):
通過(guò)測(cè)量?jī)蓚€(gè)向量?jī)?nèi)積空間的夾角的余弦值來(lái)度量它們之間的相似性。0度角的余弦值是1,而其他任何角度的余弦值都不大于1;并且其最小值是-1。從而兩個(gè)向量之間的角度的余弦值確定兩個(gè)向量是否大致指向相同的方向。兩個(gè)向量有相同的指向時(shí),余弦相似度的值為1;兩個(gè)向量夾角為90°時(shí),余弦相似度的值為0;兩個(gè)向量指向完全相反的方向時(shí),余弦相似度的值為-1。在比較過(guò)程中,向量的規(guī)模大小不予考慮,僅僅考慮到向量的指向方向。余弦相似度通常用于兩個(gè)向量的夾角小于90°之內(nèi),因此余弦相似度的值為0到1之間。然后可以通過(guò)distance工具根據(jù)轉(zhuǎn)換后的向量計(jì)算出余弦距離,來(lái)表示向量(詞語(yǔ))的相似度。例如,你輸入“france”,distance工具會(huì)計(jì)算并顯示與“france”距離最相近的詞,如下:
Word Cosine distance-------------------------------------------spain 0.678515belgium 0.665923netherlands 0.652428italy 0.633130switzerland 0.622323luxembourg 0.610033portugal 0.577154russia 0.571507germany 0.563291catalonia 0.534176在word2vec中主要有兩種學(xué)習(xí)算法:連續(xù)詞袋和連續(xù)skip-gram,switch-cbow允許用戶選擇學(xué)習(xí)算法。這兩種算法有助于預(yù)測(cè)其它句子的詞匯。
從詞轉(zhuǎn)換到句子或更長(zhǎng)的文本
在一些特定的應(yīng)用程序中,它還可以用于多個(gè)詞匯,例如,“san francisco”,這樣它就會(huì)通過(guò)預(yù)先處理數(shù)據(jù)集,讓其形成句子,找到與“san francisco”余弦距離最近的內(nèi)容:
Word Cosine distance -------------------------------------------los_angeles 0.666175golden_gate 0.571522oakland 0.557521california 0.554623san_diego 0.534939pasadena 0.519115seattle 0.512098taiko 0.507570houston 0.499762chicago_illinois 0.491598如何衡量詞向量質(zhì)量
可能影響到詞向量質(zhì)量的幾個(gè)因素:
- 訓(xùn)練數(shù)據(jù)的數(shù)量和質(zhì)量
- 向量的大小
- 訓(xùn)練算法
向量的質(zhì)量對(duì)任何一個(gè)應(yīng)用程序都非常重要,然而,根據(jù)復(fù)雜的任務(wù)來(lái)探索不同的超參數(shù)設(shè)置可能會(huì)過(guò)于苛刻。因此,我們?cè)O(shè)計(jì)了簡(jiǎn)單的測(cè)試集,來(lái)快速評(píng)估矢量詞的質(zhì)量。
詞聚類(Word clustering)
詞向量也可以從巨大的數(shù)據(jù)集中導(dǎo)出詞類,通過(guò)執(zhí)行詞向量頂部的K-means聚類即可實(shí)現(xiàn),腳本演示地址:./demo-classes.sh,最后輸出的是一個(gè)詞匯表文件和與之對(duì)應(yīng)的類ID標(biāo)識(shí),例如:
carnivores 234 carnivorous 234 cetaceans 234 cormorant 234 coyotes 234 crocodile 234 crocodiles 234 crustaceans 234 cultivated 234 danios 234 . . . acceptance 412 argue 412 argues 412 arguing 412 argument 412 arguments 412 belief 412 believe 412 challenge 412 claim 412性能
在多核CPU上(使用開(kāi)關(guān)‘-threads N’),通過(guò)使用并行訓(xùn)練可以顯著提高訓(xùn)練速度,超參數(shù)選擇對(duì)性能也至關(guān)重要(包括速度和準(zhǔn)確率),主要選擇有:
- 架構(gòu):skip-gram(慢、對(duì)罕見(jiàn)字有利)vs CBOW(快)
- 訓(xùn)練算法:分層softmax(對(duì)罕見(jiàn)字有利)vs 負(fù)采樣(對(duì)常見(jiàn)詞和低緯向量有利)
- 欠采樣頻繁詞:可以提高結(jié)果的準(zhǔn)確性和速度(適用范圍1e-3到1e-5)
- 維度詞向量:通常情況下表現(xiàn)都很好
- 文本(window)大小:skip-gram通常在10附近,CBOW通常在5附近
去哪里收集訓(xùn)練數(shù)據(jù)
隨著訓(xùn)練數(shù)據(jù)的增加,詞向量質(zhì)量也顯著提升,如果以研究為目的的,可以考慮線上數(shù)據(jù)集:
- 來(lái)自維基百科的上億字符(在Matt Mahoney頁(yè)面底部,適用預(yù)處理perl腳本)
- WMT11網(wǎng)站:多語(yǔ)言的大量文本數(shù)據(jù)。
快速入門(mén)
關(guān)于word2vec更多介紹,大家可以閱讀:https://code.google.com/p/word2vec/
總結(jié)
以上是生活随笔為你收集整理的Google开源word2vec,文本相似度计算工具的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 大数据 URL
- 下一篇: 空间金字塔方法表示图像