什麼是FastText
- 英語單詞通常有其內部結構和形成⽅式。例如,我們可以從“dog”“dogs”和“dogcatcher”的字⾯上推測它們的關係。這些詞都有同⼀個詞根“dog”,但使⽤不同的後綴來改變詞的含義。而且,這個關聯可以推⼴⾄其他詞彙。
- 在word2vec中,我們並沒有直接利⽤構詞學中的信息。⽆論是在跳字模型還是連續詞袋模型中,我們都將形態不同的單詞⽤不同的向量來表⽰。例如,“dog”和“dogs”分別⽤兩個不同的向量表⽰,而模型中並未直接表達這兩個向量之間的關係。鑑於此,fastText提出了⼦詞嵌⼊(subword embedding)的⽅法,從而試圖將構詞信息引⼊word2vec中的CBOW。
- 這裏有一點需要特別注意,一般情況下,使用fastText進行文本分類的同時也會產生詞的embedding,即embedding是fastText分類的產物。除非你決定使用預訓練的embedding來訓練fastText分類模型,這另當別論。
FastText
- FastText是一個文本分類和詞向量訓練工具/網絡結構,最大的特 點就是模型簡單,只有一層隱層和輸出層;結構基本的CBOW類 似,主要區別在於:
- CBOW中輸出的是詞向量,FastText輸出的是類別label;
- CBOW中輸入是當前窗口除中心詞之外的所有詞,而FastText輸入的是文章中的所有詞;
- 在詞向量的訓練過程中,增加了subwords特性,其實就是一個詞 的character-level(字符集)的n-gram,比如單詞”hello”,長度至少爲3的 character-level的n-gram的’hel’, ‘ell’, ‘llo’, ‘hell’, ‘ello’以及’hello’,每個 n-gram都可以使用一個dense(密集)的向量zg表示,故最終一個單詞可以 表示爲:
- FastText在分類中也增加了N-gram的特徵,主要是爲了通過增加 N-Gram的特徵信息來保留詞序信息(因爲隱層是通過簡單的求和平均得到的),比如:某篇文檔有3個詞,,N-gram 取N爲2,以及bigram 是新的embedding向 量,那麼文章的隱層表示爲:
FastText與Word2Vec的不同
- 相同點:
- 圖模型結構很像,都是採用embedding向量的形式,得到word的隱向量表達。
- 都採用很多相似的優化方法,比如使用Hierarchical softmax優化訓練和預測中的打分速度。
fasttext葉子節點裏是類標和類標的頻數。
Word2Vec | fastText | |
---|---|---|
輸入 | one-hot形式的單詞的向量 | embedding過的單詞的詞向量和n-gram向量 |
輸出 | 對應的是每一個term,計算某term概率最大 | 對應的是分類的標籤。 |
本質不同,體現在softmax的使用:
- word2vec的目的是得到詞向量,該詞向量最終是在輸入層得到的,輸出層對應的h-softmax也會生成一系列的向量,但是最終都被拋棄,不會使用。
- fastText則充分利用了h-softmax的分類功能,遍歷分類樹的所有葉節點,找到概率最大的label
FastText優點:
- 適合大型數據+高效的訓練速度:能夠訓練模型“在使用標準多核CPU的情況下10分鐘內處理超過10億個詞彙”
- 支持多語言表達:利用其語言形態結構,fastText能夠被設計用來支持包括英語、德語、西班牙語、法語以及捷克語等多種語言。FastText的性能要比時下流行的word2vec工具明顯好上不少,也比其他目前最先進的詞態詞彙表徵要好。
- 專注於文本分類,在許多標準問題上實現當下最好的表現(例如文本傾向性分析或標籤預測)。
--------------------------------------
cw2vec
思想:類似FastText的思想,利用中文漢字的筆畫信息,使用N-Gram的 的方式來提取中文漢字對應的高階特徵信息。
- 可以看到從偏旁部首或者字件來提取詞語的信息可以改進基於漢字的詞語信息的提取效果,但是在某些漢字中,偏旁的設計僅只是爲了方便漢字的查詢,而不是爲了表達漢字的語義信息,所以 在cw2vec中提出了一種基於筆畫的特徵信息提取。
- 舉個例子:大人
- 將詞語分割成字符;
- 提取每個字符的筆畫信息, 然後將所有字符的筆畫信息組 合到一起;
- 查表得到每個筆畫對應的 ID,組成這個詞語對應的ID列 表;
- 產生N-Gram筆畫特徵。
- cw2vec使用和Word2Vec中的Skip-Gram的基礎上進行模型訓練, 僅僅是將詞語替換爲詞語的n-gram筆畫特徵信息來進行模型訓練。