iT邦幫忙

2022 iThome 鐵人賽

DAY 24
0
自我挑戰組

AI :PyTorch系列 第 24

第二十四天 fasttext

  • 分享至 

  • xImage
  •  

獲取詞向量
判斷分出來的詞語屬於什麽詞性,得到這段話裏面這個詞語在同一此序列裏面分類的概率

https://ithelp.ithome.com.tw/upload/images/20221010/20152487EUy7UiLtPo.png

fastText是Facebook於2016年開源的一個詞向量計算和文本分類工具,在文本分類任務中,fastText(淺層網路)往往能取得和深度網路相媲美的精度,卻在訓練時間上比深度網路快許多數量級。在標準的多核CPU上, 能夠訓練10億詞級別語料庫的詞向量在10分鐘之內,能夠分類有著30萬多類別的50多萬句子在1分鐘之內。

該工具的理論基礎是以下兩篇論文:

​ ​Enriching Word Vectors with Subword Information​​:這篇論文提出了用 word n-gram 的向量之和來代替簡單的詞向量的方法,以解決簡單 word2vec 無法處理同一詞的不同形態的問題。fastText 中提供了 maxn 這個參數來確定 word n-gram 的 n 的大小。
​ ​Bag of Tricks for Efficient Text Classification​​:這篇論文提出了 fastText 演算法,該演算法實際上是將目前用來算 word2vec 的網路架構做了個小修改,原先使用一個詞的上下文的所有詞向量之和來預測詞本身(CBOW 模型),現在改為用一段短文本的詞向量之和來對文本進行分類。
FastText背後的主要原理是,單詞的詞法結構會攜帶有關單詞含義的重要信息,而傳統的單詞嵌入並不會考慮這些信息,傳統的單詞嵌入會為每個單詞訓練一個唯一的單詞嵌入。這對於形態豐富的語言(德語,土耳其語)尤其重要,在這種語言中,單個單詞可能具有大量的形態形式,每種形態形式很少出現,因此很難訓練良好的詞嵌入。

FastText嘗試通過將每個單詞視為其子單詞的集合來解決此問題。為了簡單和獨立於語言,將子詞視為該詞的字元n-gram(n元)。一個單詞的向量被簡單地認為是其組成特徵圖的所有向量之和。

與原始Word2Vec相比,FastText在語法任務上的表現要好得多,尤其是在訓練語料庫較小的情況下。在語義任務上,Word2Vec的性能略優於FastText。隨著訓練語料庫大小的增加,差異變得越來越小。

FastText的訓練時間明顯長於Word2Vec的Gensim版本(15min 42s vs 6min 42s on text8, 17 mil tokens, 5 epochs, and a vector size of 100)。

總的來說,word2vec有一個很大的局限性,那就是該模型無法推斷出不熟悉的單詞的向量。如果這個限制了我們,那就嘗試使用FastText模型。


上一篇
第二十三天 意圖識別
下一篇
第二十五天 語料的處理
系列文
AI :PyTorch30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言