1. 程式人生 > >fasttext原理複習與程式碼實現

fasttext原理複習與程式碼實現

一:fasttext原理

fastText簡而言之,就是把文件中所有詞通過lookup table變成向量,取平均後直接用線性分類器得到分類結果。fastText和ACL-15上的deep averaging network [1] (DAN,如下圖)非常相似,區別就是去掉了中間的隱層。兩篇文章的結論也比較類似,也是指出對一些簡單的分類任務,沒有必要使用太複雜的網路結構就可以取得差不多的結果。

有兩個tricks,文章使用了Hierarchical softmax(分層softmax)和n-gram features

1:Hierarchical softmax

就是類別較多時,通過構建一個Huffman編碼樹來加速softmax layer的計算,和之前word2vec中的trick是相同的

並且時間複雜度為O(hlog2(k));

2: N-gram features

只用unigram的話會丟掉word order資訊,所以通過加入N-gram features進行補充,用hashing來減少N-gram的儲存。

二:fasttext程式碼實現例子

1:詞向量模型學習

文字分類

classifier=fasttext.supervised('data.train.txt','model')

data.train.txt是一個含有訓練句子,每行加上標籤的文字檔案,預設情況下,假設標籤的話,字首

字串_label_.

輸出model.bin 和model.vec