今天我們來看 Mikolov 大佬 2016 年的另一大巨作——fastText。2013 年大佬在 Google 開源了 Word2Vec,2016 年剛就職于 FaceBook 就開源了 fastText,全都掀起了軒然大波。
fastText 模型有兩篇相關(guān)論文:
《Bag of Tricks for Efficient Text Classification》
《Enriching Word Vectors with Subword Information》
截至目前為止,第一篇有 1500 多引用量,第二篇有 2700 多引用量。
從這兩篇文的標(biāo)題我們可以看出來 fastText 有兩大用途——文本分類和Word Embedding。
由于 fastText 模型比較簡單,所以我們可以把兩篇論文放在一起看。
1. Introduction
fastText 提供了簡單而高效的文本分類和 Word Embedding 方法,分類精度比肩深度學(xué)習(xí)而且速度快上幾個數(shù)量級。
舉個例子:使用標(biāo)準(zhǔn)的 CPU 可以在十分鐘的時間里訓(xùn)練超過 10 億個單詞,在不到一分鐘的時間里可以將 50 萬個句子分到 31 萬個類別中。
可以看到 fastText 的速度有多驚人。
2. fastText
fastText 之所以能做到速度快效果好主要是兩個原因:N-Gram 和 Hierarchical softmax。由于 Hierarchical softmax 在 Word2Vec 中已經(jīng)介紹過了,所以我們只介紹一下 N-gram。
2.1 N-gram
N-gram 是一種基于統(tǒng)計語言模型的算法,常用于 NLP 領(lǐng)域。其思想在于將文本內(nèi)容按照字節(jié)順序進(jìn)行大小為 N 的滑動窗口操作,從而形成了長度為 N 的字節(jié)片段序列,其片段我們稱為 gram。
以“谷歌是家好公司” 為例子:
二元 Bi-gram 特征為:谷歌 歌是 是家 家好 好公 公司
三元 Tri-gram 特征為:谷歌是 歌是家 是家好 家好公 好公司
當(dāng)然,我們可以用字粒度也可以用詞粒度。
例如:谷歌 是 家 好 公司二元 Bi-gram 特征為:谷歌是 是家 家好 好公司三元 Tri-gram 特征為:谷歌是家 是家好 家好公司
N-gram 產(chǎn)生的特征只是作為文本特征的候選集,后面還可以通過信息熵、卡方統(tǒng)計、IDF 等文本特征選擇方式篩選出比較重要的特征。
2.2 Embedding Model
這邊值得注意的是,fastText 是一個庫,而不是一個算法。類似于 Word2Vec 也只是一個工具,Skip-Gram 和 CBOW 才是其中的算法。
?
fastText is a library for efficient learning of word representations and sentence classification.
”
fastText 在 Skip-Gram 的基礎(chǔ)上實現(xiàn) Word Embedding,具體來說:fastText 通過 Skip-Gram 訓(xùn)練了字符級別 N-gram 的 Embedding,然后通過將其相加得到詞向量。
舉個例子:對于 “where” 這個單詞來說,它的 Tri-gram 為:“
這樣做主要有兩個好處:
低頻詞生成的 Embedding 效果會更好,因為它們的 N-gram 可以和其它詞共享而不用擔(dān)心詞頻過低無法得到充分的訓(xùn)練;
對于訓(xùn)練詞庫之外的單詞(比如拼錯了),仍然可以通過對它們字符級的 N-gram 向量求和來構(gòu)建它們的詞向量。
為了節(jié)省內(nèi)存空間,我們使用 HashMap 將 N-gram 映射到 1 到 K,所以單詞的除了存儲自己在單詞表的 Index 外,還存儲了其包含的 N-gram 的哈希索引。
2.3 Classification Model
一般來說,速度快的模型其結(jié)構(gòu)都會比較簡單,fastText 也不例外,其架構(gòu)圖如下圖所示:

fastText Architecture
其中, 為一個句子的 N-gram 特征。
我們看到這個架構(gòu)是不是感覺似曾相似?
fastText 與 Word2Vec 的 CBOW 架構(gòu)是非常相似的,但與 CBOW 不同的是:fastText 輸入不僅是多個單詞 Embedding 向量,還將字符級別的 N-gram 向量作為額外的特征,其預(yù)測是也不是單詞,而是 Label(fastText 主要用于文本分類,所以預(yù)測的是分類標(biāo)簽)。
3. Experiment
我們簡單看下 fastText 的兩個實驗——Embedding 和文本分類;
3.1 Embeddng
sisg 是 fastText 用于 Embedding 的模型,實驗效果如下:
3.2 Classification
分類實驗的精度 fastText 比 char-CNN、 char-RCNN 要好,但比 VDCNN 要差。(但這里注意:fastText 僅僅使用 10 個隱藏層節(jié)點 ,訓(xùn)練了 5 次 epochs。)
在速度上 fastText 快了幾個數(shù)量級。(此處注意:CNN 和 VDCNN 用的都是 Tesla K40 的 GPU,而 fastText 用的是 CPU)
下面是標(biāo)簽預(yù)測的結(jié)果,兩個模型都使用 CPU 并開了 20 個線程:
4. Conclusion
一句話總結(jié):fastText 是一個用于文本分類和 Embedding 計算的工具庫,主要通過 N-gram 和 Hierarchical softmax 保證算法的速度和精度。
關(guān)于 Hierarchical softmax 為什么會使 fastText 速度那么快?而在 Word2Vec 中沒有看到類似的效果?
我覺得是因為 fastText 的標(biāo)簽數(shù)量相比 Word2Vec 來說要少很多,所以速度會變的非常快。其次 Hierarchical softmax 是必要的,如果不同的話速度會慢非常多。
另外,fastText 可能沒有什么創(chuàng)新,但他卻異?;鸨?,可能有多個原因,其中包括開源了高質(zhì)量的 fastText,類似 Work2Vec,當(dāng)然也會有 Mikolov 大佬和 Facebook 的背書。
總的來說,fastText 還是一個極具競爭力的一個工具包。
5. Reference
《Bag of Tricks for Efficient Text Classification》
《Enriching Word Vectors with Subword Information》
責(zé)任編輯:lq
-
算法
+關(guān)注
關(guān)注
23文章
4810瀏覽量
98622 -
文本分類
+關(guān)注
關(guān)注
0文章
18瀏覽量
7474 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5610瀏覽量
124663
原文標(biāo)題:fastText:極快的文本分類工具
文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
SparkFun 5V Step - Up Breakout - NCP1402:小身材大用途的電源轉(zhuǎn)換利器
基本半導(dǎo)體成功簽約兩大合作項目
森源電氣中標(biāo)蒙西電網(wǎng)和廣西電網(wǎng)兩大核心項目
“中國智造出?!迸c“物理AI落地”兩大核心主題將繼續(xù)解鎖全新產(chǎn)業(yè)機(jī)遇
兩大半導(dǎo)體巨頭,關(guān)廠!
博世中國一舉斬獲兩大重要獎項
曦智科技榮登2025VENTURE50兩大榜單
潤和軟件榮獲ESG領(lǐng)域兩大獎項
pdf轉(zhuǎn)換成word文檔格式亂了
華寶新能美學(xué)曲面光伏瓦亮相兩大行業(yè)盛會
英創(chuàng)立亮相香港兩大電子展會
迅鐳激光多款核心產(chǎn)品亮相兩大制造業(yè)盛會
水晶光電榮登2025年度浙江省兩大榜單
新思科技與TeraSignal在光網(wǎng)絡(luò)領(lǐng)域達(dá)成兩大里程碑
fastText有兩大用途——文本分類和Word Embedding
評論