Facebook 開源的快速文本分類器 FastTex

2021-01-08 開源中國

FastText是Facebook開發的一款快速文本分類器,提供簡單而高效的文本分類和表徵學習的方法,性能比肩深度學習而且速度更快。

1. fastText 原理

fastText 方法包含三部分:模型架構、層次 Softmax 和 N-gram 特徵。下面我們一一介紹。

1.1 模型架構

fastText 模型架構如下圖所示。fastText 模型輸入一個詞的序列(一段文本或者一句話),輸出這個詞序列屬於不同類別的概率。序列中的詞和詞組組成特徵向量,特徵向量通過線性變換映射到中間層,中間層再映射到標籤。fastText 在預測標籤時使用了非線性激活函數,但在中間層不使用非線性激活函數。

fastText 模型架構和 Word2Vec 中的 CBOW 模型很類似。不同之處在於,fastText 預測標籤,而 CBOW 模型預測中間詞。

1.2 層次 Softmax

在某些文本分類任務中類別很多,計算線性分類器的複雜度高。為了改善運行時間,fastText 模型使用了層次 Softmax 技巧。層次 Softmax 技巧建立在哈弗曼編碼的基礎上,對標籤進行編碼,能夠極大地縮小模型預測目標的數量。具體細節參見 文章 。

1.3 N-gram 特徵

fastText 可以用於文本分類和句子分類。不管是文本分類還是句子分類,我們常用的特徵是詞袋模型。但詞袋模型不能考慮詞之間的順序,因此 fastText 還加入了 N-gram 特徵。「我 愛 她」 這句話中的詞袋模型特徵是 「我」,「愛」, 「她」。這些特徵和句子 「她 愛 我」 的特徵是一樣的。如果加入 2-Ngram,第一句話的特徵還有 「我-愛」 和 「愛-她」,這兩句話 「我 愛 她」 和 「她 愛 我」 就能區別開來了。當然啦,為了提高效率,我們需要過濾掉低頻的 N-gram。

2. fastText VS Tagspace

Mikolov 在 fastTetxt 的論文中報告了兩個實驗,其中一個實驗和 Tagspace 模型進行對比。實驗是在 YFCC100M 數據集上進行的, YFCC100M 數據集包含將近 1 億張圖片以及摘要、標題和標籤。實驗使用摘要和標題去預測標籤。Tagspace 模型是建立在 Wsabie 模型的基礎上的。Wsabie 模型除了利用 CNN 抽取特徵之外,還提出了一個帶權近似配對排序 (Weighted Approximate-Rank Pairwise, WARP) 損失函數用於處理預測目標數量巨大的問題。

上面就是實驗結果,從實驗結果來看 fastText 能夠取得比 Tagspace 好的效果,並擁有無以倫比的訓練測試速度。但嚴格來說,這個實驗對 Tagspace 有些不公平。YFCC100M 數據集是關於多標記分類的,即需要模型能從多個類別裡預測出多個類。Tagspace 確實是做多標記分類的;但 fastText 只能做多類別分類,從多個類別裡預測出一個類。而評價指標 prec@1 只評價一個預測結果,剛好能夠評價多類別分類。

4. 總結

Facebook Research 已經在 Github 上公布了 fastText 的 項目代碼 。不過這個項目其實是有兩部分組成的,一部分是這篇文章介紹的 fastText 文本分類,另一部分是詞嵌入學習。按論文來說只有文本分類部分才是 fastText,但也有人把這兩部分合在一起稱為 fastText,比如這篇文章 Comparison of FastText and Word2Vec 。fastText 的詞嵌入學習比 word2vec 考慮了詞組成的相似性。比如 fastText 的詞嵌入學習能夠考慮 english-born 和 british-born 之間有相同的後綴,但 word2vec 卻不能。fastText 的詞嵌入學習的具體原理可以參照 論文 。

部分內容出自:科技控

相關焦點

  • 文本分類經典論文:fasttext,textcnn解讀
    文本分類是自然語言處理領域一個非常經典的任務,一般文本分類分為三種,基於規則的文本分類,基於機器學習的文本分類和基於深度學習的文本分類。本文我們重點關注基於深度學習的文本分類,並為大家介紹文本分類中非常經典的fasttext和textcnn。
  • Facebook開源多款AI工具,支持遊戲、翻譯
    通過 autograd 系統,它可以進行快速靈活的實驗。>StarSpaceStarSpace 是一種通用的神經嵌入模型,可用於諸如文本分類等許多領域。2)語言(Language)FastTextFastText 是一個輕量級庫,旨在幫助開發人員構建用於文本表徵和分類的可擴展性解決方案
  • fastText,智慧與美貌並重的文本分類及向量化工具
    fastText是FAIR(Facebook AIResearch) 在2016年推出的一款文本分類與向量化工具。
  • fastText原理及實踐
    搭建一個簡單的fastText分類器,最後,我們會介紹fastText在達觀數據的應用。 你可能要問,這篇文章不是介紹fastText的麼,怎麼開始介紹起了word2vec?最主要的原因是word2vec的CBOW模型架構和fastText模型非常相似。於是,你看到facebook開源的fastText工具不僅實現了fastText文本分類工具,還實現了快速詞向量訓練工具。
  • 專欄 | fastText原理及實踐
    你可能要問,這篇文章不是介紹fastText的麼,怎麼開始介紹起了word2vec?最主要的原因是word2vec的CBOW模型架構和fastText模型非常相似。於是,你看到facebook開源的fastText工具不僅實現了fastText文本分類工具,還實現了快速詞向量訓練工具。
  • 【NLP實戰】手把手帶你fastText文本分類
    也就是我們常說的fastText。最讓人欣喜的這篇論文配套提供了fasttext工具包。這個工具包代碼質量非常高,論文結果一鍵還原,目前已經是包裝地非常專業了,這是fastText官網和其github代碼庫,以及提供了python接口,可以直接通過pip安裝。這樣準確率高又快的模型絕對是實戰利器。
  • 文本分類需要CNN? No!fastText完美解決你的需求(上篇)
    簡單說,就是一種準確率和深度學習相同,但速度卻快出幾個世紀的文本分類算法。這個算法與CBOW類似,親是不是又要問CBOW是神馬?
  • 【乾貨】去年最火的機器學習開源項目集錦(上)
    本文分上篇和下篇兩部分,下篇將於近期儘快發布,歡迎關注~名稱:FastText用於快速文本表示和分類的庫作者:Facebook ResearchStar數:11,786Github:https://github.com/facebookresearch/fastText簡介:FastText 是 Facebook
  • 2018年最實用機器學習項目Top 6(附開源連結)
    utm_source=mybridge&utm_medium=blog&utm_campaign=read_more項目連結:https://docs.fast.ai/Fast.ai庫的編寫是為了簡化訓練快速準確的神經網絡。它去掉了在實踐中實施深度神經網絡可能帶來的所有細節工作。
  • 文本分類的14種算法
    3)集成學習是指通過將多個弱分類器的分類結果進行整合,獲得比單個弱分類器更好效果的機器學習方法。集成學習和深度學習屬於機器學習。2.集成學習的bagging和boosting思想:bagging中的各個弱分類器取值是相互獨立的、無關的,常使用有放回抽樣實現。
  • Facebook開源DL模塊帶給我們什麼?
    FAIR研究員、軟體工程師Soumith Chintala表示,開源的AI工具能夠幫助研究實驗室和新興創業公司免去了從零開始研究的複雜道路,把更多的精力和時間都投入到改善現有的算法中,同時開源的AI工具也將成為Facebook和創業團隊之間的催化劑。
  • 機器學習自動文本分類
    網頁、電子郵件、科學期刊、電子書、學習內容、新聞和社交媒體都充滿了文本數據。我們想要快速創建、分析和報告信息,自動文本分類也就應運而生了。更多乾貨內容請關注微信公眾號「AI 前線」,(ID:ai-front)文本分類是對文本進行智能分類。使用機器學習來實現這些任務的自動化,使整個過程更加快速高效。人工智慧和機器學習可以說是近來最受益的技術。
  • 成立5 周年:一文覽盡 Facebook 人工智慧研究院歷年重要成果
    規模化的文本分類文本理解不是單一任務,而是一個擴展的子任務矩陣,是把詞語、短語和整個語言數據集組織為機器能夠處理的格式。但是在大量工作進行之前,文本本身需要被分類。幾年前,詞向量(word2vec)等自然語言處理模型通過大量的、基於詞的訓練來對文本進行分類,同時,模型為訓練數據集中的每個單詞分配不同向量。
  • 一文讀懂深度學習文本分類方法
    最近有很多小夥伴想了解深度學習在文本分類的發展,因此,筆者整理最近幾年比較經典的深度文本分類方法,希望幫助小夥伴們了解深度學習在文本分類中的應用。筆者整理了近些年的相關深度文本分類論文,關注「AI算法之心」,後臺回復「文本分類論文」即可下載。
  • 2016AI巨頭開源IP盤點 50個最常用的深度學習庫
    4.谷歌開源TensorFlow自動文本摘要生成模型  2016年8月25日,谷歌開源了TensorFlow中用於文本信息提取並自動生成摘要的模型,尤其擅長長文本處理,這對自動處理海量信息十分有用。
  • 一次搞定多種語言:Facebook展示全新多語言嵌入系統
    顯然,現有的適用於特定語言的 NLP 技術無法應對這種挑戰,因為支持每一種語言意味著從頭開始構建全新應用。Facebook 找到了應對之策。近日,他們展示了最新提出的多語言嵌入技術,它可以幫助處理多語言的問題,幫助人工智慧應用更快速地處理新語言的問題,為用戶提供更好的產品體驗。
  • Facebook 開源增強版 LASER 庫:可實現 93 種語言的零樣本遷移
    LASER 開源地址(含多語言編碼器、PyTorch 代碼、面向 100 多種語言的多語言測試集):https://github.com/facebookresearch/LASERLASER 為實現 NLP 模型從一種語言(如英語)到其他許多種語言(包括訓練數據極度有限的語言)的零樣本遷移帶來了可能。
  • 獨家| 人工智慧學習篇7:自然語言處理開源框架
    隨著數據量不斷積累、深度學習快速發展和計算能力飛速提升,分布式主義逐漸成為主流,即使用低維、稠密、實值的向量來表示字詞等語義單元。訓練詞向量的過程稱為詞嵌入(Word Embedding),代表性工作包括Word2Vec、GloVe、fastText等。