Google开源word2vec,文本相似度计算工具
Google開源word2vec,文本相似度計算工具
谷歌已經使用Deep Learning技術開發了許多新方法來解析語言,目前,谷歌開源了一款基于Deep Learning的學習工具——word2vec,這是首款面向大眾的Deep Learning學習工具。
word2vec(word to vector)顧名思義,這是一個將單詞轉換成向量形式的工具。通過轉換,可以把對文本內容的處理簡化為向量空間中的向量運算,計算出向量空間上的相似度,來表示文本語義上的相似度。
word2vec為計算向量詞提供了一種有效的連續詞袋(bag-of-words)和skip-gram架構實現,word2vec遵循Apache License 2.0開源協議。
如何轉換?
word2vec主要是將文本語料庫轉換成詞向量。它會先從訓練文本數據中構建一個詞匯,然后獲取向量表示詞,由此產生的詞向量可以作為某項功能用在許多自然語言處理和機器學習應用中。
在舉例子之前,引入余弦距離(Cosine distance)這個概念(摘自維基百科):
通過測量兩個向量內積空間的夾角的余弦值來度量它們之間的相似性。0度角的余弦值是1,而其他任何角度的余弦值都不大于1;并且其最小值是-1。從而兩個向量之間的角度的余弦值確定兩個向量是否大致指向相同的方向。兩個向量有相同的指向時,余弦相似度的值為1;兩個向量夾角為90°時,余弦相似度的值為0;兩個向量指向完全相反的方向時,余弦相似度的值為-1。在比較過程中,向量的規模大小不予考慮,僅僅考慮到向量的指向方向。余弦相似度通常用于兩個向量的夾角小于90°之內,因此余弦相似度的值為0到1之間。然后可以通過distance工具根據轉換后的向量計算出余弦距離,來表示向量(詞語)的相似度。例如,你輸入“france”,distance工具會計算并顯示與“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中主要有兩種學習算法:連續詞袋和連續skip-gram,switch-cbow允許用戶選擇學習算法。這兩種算法有助于預測其它句子的詞匯。
從詞轉換到句子或更長的文本
在一些特定的應用程序中,它還可以用于多個詞匯,例如,“san francisco”,這樣它就會通過預先處理數據集,讓其形成句子,找到與“san francisco”余弦距離最近的內容:
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如何衡量詞向量質量
可能影響到詞向量質量的幾個因素:
- 訓練數據的數量和質量
- 向量的大小
- 訓練算法
向量的質量對任何一個應用程序都非常重要,然而,根據復雜的任務來探索不同的超參數設置可能會過于苛刻。因此,我們設計了簡單的測試集,來快速評估矢量詞的質量。
詞聚類(Word clustering)
詞向量也可以從巨大的數據集中導出詞類,通過執行詞向量頂部的K-means聚類即可實現,腳本演示地址:./demo-classes.sh,最后輸出的是一個詞匯表文件和與之對應的類ID標識,例如:
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上(使用開關‘-threads N’),通過使用并行訓練可以顯著提高訓練速度,超參數選擇對性能也至關重要(包括速度和準確率),主要選擇有:
- 架構:skip-gram(慢、對罕見字有利)vs CBOW(快)
- 訓練算法:分層softmax(對罕見字有利)vs 負采樣(對常見詞和低緯向量有利)
- 欠采樣頻繁詞:可以提高結果的準確性和速度(適用范圍1e-3到1e-5)
- 維度詞向量:通常情況下表現都很好
- 文本(window)大小:skip-gram通常在10附近,CBOW通常在5附近
去哪里收集訓練數據
隨著訓練數據的增加,詞向量質量也顯著提升,如果以研究為目的的,可以考慮線上數據集:
- 來自維基百科的上億字符(在Matt Mahoney頁面底部,適用預處理perl腳本)
- WMT11網站:多語言的大量文本數據。
快速入門
關于word2vec更多介紹,大家可以閱讀:https://code.google.com/p/word2vec/
總結
以上是生活随笔為你收集整理的Google开源word2vec,文本相似度计算工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大数据 URL
- 下一篇: 空间金字塔方法表示图像