獲取詞向量
判斷分出來的詞語屬於什麽詞性,得到這段話裏面這個詞語在同一此序列裏面分類的概率
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模型。