文本分類經典論文:fasttext,textcnn解讀

2021-03-01 阿黎投餵舍


文本分類是自然語言處理領域一個非常經典的任務,一般文本分類分為三種,基於規則的文本分類,基於機器學習的文本分類和基於深度學習的文本分類。本文我們重點關注基於深度學習的文本分類,並為大家介紹文本分類中非常經典的fasttext和textcnn。

文本分類是對給定文檔,對文檔進行歸類的過程,常見的文本分類任務是垃圾郵件識別和情感分析。文本分類的處理大致分為文本預處理、文本特徵提取、分類模型構建等。常見的文本分類方法一般分為三種,基於規則的文本分類,這種方法通常是基於詞表;基於機器學習的文本分類,這種方法通常是將文章轉換為向量然後採用傳統的機器學習算法如SVM,GBDT等;第三種方法是基於深度學習的方法,關於文本分類的論文很多,這篇文章我們將為大家介紹幾篇基於深度學習的文本分類的論文,由於篇幅有限本文將重點介紹fasttext和textcnn。

02 Bag of Tricks for Efficient Text Classification

論文連結:https://arxiv.org/pdf/1607.01759v2.pdf

源碼:https://github.com/facebookresearch/fastText

推薦理由:傳說中的fasttextfacebook推出的非常經典的文本分類模型,訓練速度非常快,可以快速上手反覆迭代哦

這是2016年由Facebook提出的一種比較迅速的詞向量和文本分類方法,模型的結構類似於CBOW(連續詞袋模型)都是由輸入層,隱藏層,輸出層組成,輸出層的結果是一個特定的目標,例如預測下一個詞彙之類的。但是fasttext和CBOW的區別是,如下圖所示:

fasttext的輸入不僅是句子中詞語的one-hot編碼還有N-gram的特徵,N-gram的特徵默認是3~6gram,為了提高模型的訓練速度,N-gram的查找採用了hashing trick。這樣做的好處是,one-hot編碼是沒有考慮到詞語之間的順序的,加入N-gram特徵可以讓模型學習到詞語之間的連續特徵。

另一個區別是為了提高softmax計算的速度,fasttext採用了hierarchal softmax,也就是計算從根節點到某個分類的路徑上的所有節點的softmax的總和,這樣對於分類類別非常多的情況下,可以將時間複雜度由O(kh)降低到O(hlog2(k)),這樣也可以提高模型的訓練速度。

為了驗證fasttext的效果,作者在情感分類和Tag識別上分別進行了實驗,情感分類的實驗結果如下所示,加了bigram的fasttext的效果在AG數據集上超過了char-cnn,char-rnn, VDCNN的效果,在其他數據集上略遜於其他模型或者持平。總體來說效果還是很不錯的。

但是在訓練速度上fasttext可以說遠超其他模型,當然這也是fasttext的迷人之處了,在效果和速度上取得了一個很好的balance。

03 Convolutional Neural Networks for Sentence Classification

論文連結:https://arxiv.org/pdf/1408.5882.pdf

源碼:github很多

推薦理由:textcnn文本分類必讀論文

談到文本分類,TextCNN絕對是不能繞開的,本文作者將卷積應用到NLP任務中。模型的結構非常經典,輸入層,卷積層,池化層和輸出層。

1. 輸入層是由文本的word embedding拼接的矩陣

2. 卷積層圖中看著只有一層,但是實際上模型中有不同大小的卷積核,可以在不同的窗口大小下捕捉到文本的上下文信息。

3. 卷積層的結果拼接之後經過池化層,然後輸入到全連接層,最後經過softmax可以得到文本分類的結果。

在以上結構上作者做了很多實驗:

CNN-rand: 這是基礎模型,word embedding被隨機初始化CNN-static: 模型使用預訓練的word2vec初始化Embedding layer,對於那些在預訓練的word2vec沒有的單詞,隨機初始化CNN-non-static: word embdding和CNN-static一樣,只是訓練過程中embedding層也一起訓練CNN-multichannel: Embedding layer有兩個channel,一個channel為static,一個為non-static,fine-tune時只有一個channel更新參數。兩個channel都是使用預訓練的word2vec初始化的。

作者在7個數據集上進行實驗,可以看出除了隨機word embedding以外,預訓練之後加載word embedding的效果都優於隨機初始化。

04 A Sensitivity Analysis of (and Practitioners』 Guide to) Convolutional Neural Networks for Sentence Classification

論文連結:https://arxiv.org/pdf/1510.03820.pdf

推薦理由:這篇文章可以看成是對textcnn的補充,作者做了大量的實驗來探索什麼樣的參數和訓練方法可以使textcnn的效果達到最優

在CNN在文本分類上取得一系列不錯的成績之後,本文將聚焦在可能影響模型的效果的其他因素上面。

因此本文採用的模型是textCNN模型,模型的輸入是word embedding的拼接,卷積層有6個大小分別是2,3,4的卷積核,然後對卷積層的輸出結果進行籌劃拼接之後接softmax層最後輸出分類結果。

有了這個基礎的CNN模型之後本文將重點放在影響模型效果的其他因素上,文中對embedding生成方式,卷積核的大小,feature map的數量,激活函數,池化方法,正則化等其他因素對模型的影響。

通過多種實驗,作者得出結論,embedding的生成方式,卷積核的大小,feature map的數量對模型效果有比較重要的影響,1-max pooling的效果要優於其他方法而正則化對模型的影響比較少。

以上就是文本分類中比較經典的三篇論文啦,fasttext因為其優越的性能,知道現在訓練word embedding,文本分類中還是會看到他的身影。textcnn在NLP領域中應用了卷積層,可以提取到上下文的信息,而且模型結構非常簡單清晰,效果也不錯,也是文本分類入門的經典哈哈。以上就是本文分享的內容啦,下篇我們會分享文本分類中同樣經典的textrnn和HAN希望大家保持關注~

相關焦點

  • 【深度學習】textCNN論文與原理——短文本分類(基於pytorch)
    前言前文已經介紹了TextCNN的基本原理,如果還不熟悉的建議看看原理:【深度學習】textCNN論文與原理[1]及一個簡單的基於pytorch的圖像分類案例:【深度學習】卷積神經網絡-圖片分類案例(pytorch實現)[2]。
  • 【NLP實戰】手把手帶你fastText文本分類
    也就是我們常說的fastText。最讓人欣喜的這篇論文配套提供了fasttext工具包。這個工具包代碼質量非常高,論文結果一鍵還原,目前已經是包裝地非常專業了,這是fastText官網和其github代碼庫,以及提供了python接口,可以直接通過pip安裝。這樣準確率高又快的模型絕對是實戰利器。
  • fastText,智慧與美貌並重的文本分類及向量化工具
    fastText是FAIR(Facebook AIResearch) 在2016年推出的一款文本分類與向量化工具。
  • 【深度學習】textCNN論文與原理
    前言文本分類是自然語言處理中一個比較基礎與常見的任務。咱也不談傳統的文本分類方法,就看看這個使用CNN是如何進行文本分類了,聽說效果還不錯。如果CNN不是很了解的話,可以看看我之前的文章:【深度學習】卷積神經網絡-CNN簡單理論介紹[1] 、 【深度學習】卷積神經網絡-圖片分類案例(pytorch實現)[2],當然既然是一種深度學習方法進行文本分類,跑不了使用詞向量相關內容,所以讀者也是需要有一定詞向量(也就是詞語的一種分布式表示而已)的概念。
  • Keras-TextClassification 文本分類工具包
    為例進行多標籤分類實例,轉化為multi-onehot標籤類別,分類則取一定閥值的類- sentence_similarity/目錄下以bert為例進行兩個句子文本相似度計算,數據格式如data/sim_webank/目錄下所示- predict_bert_text_cnn.py- tet_char_bert_embedding.py- tet_char_bert_embedding.py
  • FastText的內部機制
    fasttext是一個被用於對詞向量和句子分類進行高效學習訓練的工具庫,採用c++編寫,並支持訓練過程中的多進程處理。你可以使用這個工具在監督和非監督情況下訓練單詞和句子的向量表示。這些訓練出來的詞向量,可以應用於許多處理數據壓縮的應用程式,或者其他模型的特徵選擇,或者遷移學習的初始化。
  • textCNN論文與原理——短文本分類(基於pytorch和torchtext)
    前言之前書寫了使用pytorch進行短文本分類,其中的數據處理方式比較簡單粗暴。自然語言處理領域包含很多任務,很多的數據向之前那樣處理的話未免有點繁瑣和耗時。在pytorch中眾所周知的數據處理包是處理圖片的torchvision,而處理文本的少有提及,快速處理文本數據的包也是有的,那就是torchtext[1]。
  • Facebook 開源的快速文本分類器 FastTex
    FastText是Facebook開發的一款快速文本分類器,提供簡單而高效的文本分類和表徵學習的方法,性能比肩深度學習而且速度更快。
  • 一文讀懂深度學習文本分類方法
    近些天一直忙著畢業以及小論文投遞的事情,沒有及時更新公眾號。在此表示抱歉。最近有很多小夥伴想了解深度學習在文本分類的發展,因此,筆者整理最近幾年比較經典的深度文本分類方法,希望幫助小夥伴們了解深度學習在文本分類中的應用。
  • 論文推薦|[AAAI 2020] TextScanner:依序閱讀分類的魯棒場景文本識別
    該論文分析了現有的場景文本方法,包括基於RNN注意力的方法以及基於語義分割的方法的局限性,針對上述方法存在的不足之處提出改進。圖1 本文方法的對比結果場景文本識別任務在近幾年得到很大的關注,現有的場景文本識別的方法主要分為兩種,一種是基於RNN Attention的方法[1][2],通過對編碼後的圖片特徵序列使用注意力機制來對準字符同時進行解碼
  • 文本分類需要CNN? No!fastText完美解決你的需求(上篇)
    簡單說,就是一種準確率和深度學習相同,但速度卻快出幾個世紀的文本分類算法。這個算法與CBOW類似,親是不是又要問CBOW是神馬?
  • CNN與RNN中文文本分類-基於TensorFlow 實現
    摘要:本文是基於TensorFlow在中文數據集上的簡化實現,使用了字符級CNN和RNN對中文文本進行分類,達到了較好的效果。
  • fastText原理及實踐
    搭建一個簡單的fastText分類器,最後,我們會介紹fastText在達觀數據的應用。 你可能要問,這篇文章不是介紹fastText的麼,怎麼開始介紹起了word2vec?最主要的原因是word2vec的CBOW模型架構和fastText模型非常相似。於是,你看到facebook開源的fastText工具不僅實現了fastText文本分類工具,還實現了快速詞向量訓練工具。
  • 專欄 | fastText原理及實踐
    你可能要問,這篇文章不是介紹fastText的麼,怎麼開始介紹起了word2vec?最主要的原因是word2vec的CBOW模型架構和fastText模型非常相似。於是,你看到facebook開源的fastText工具不僅實現了fastText文本分類工具,還實現了快速詞向量訓練工具。
  • 乾貨| 深度學習在文本分類中的應用
    3 CNN用於文本分類論文Convolutional Neural Networks for Sentence Classification提出了使用CNN進行句子分類的方法。3.5 字符級別的CNN用於文本分類論文Character-level convolutional networks for text classification將文本看成字符級別的序列,使用字符級別(Character-level)的CNN進行文本分類。
  • 文本分類綜述 | 邁向NLP大師的第一步(上)
    (文末 下期預告 別錯過)綜述內涉及的所有文本分類必讀論文清單,我們已經為大家整理打包好啦,訂閱號後臺回復『文本分類』即可獲取喔~文本分類綜述A Survey on Text Classification: From Shallow to Deep Learning,2020[1]文本分類是自然語言處理中最基本,也是最重要的任務
  • 【關於 文本分類 trick】那些你不知道的事
    文本特徵挖掘關鍵詞&實體詞與文本拼接:將從文本序列提取的關鍵詞或實體詞拼接在文本序列後,再進行分類。如在BERT中:[CLS][原始文本][SEP][關鍵詞1][SEP][實體詞1]...關鍵詞embedding化:將關鍵詞劃分為不同的類別屬性,進行embedding化,不同於離散數據挖掘,這裡的embedding不應稀疏。
  • 如何用 Python 和 BERT 做多標籤(multi-label)文本分類?
    10餘行代碼,藉助 BERT 輕鬆完成多標籤(multi-label)文本分類任務。疑問之前我寫了《如何用 Python 和 BERT 做中文文本二元分類?》一文,為你講解過如何用 BERT 語言模型和遷移學習進行文本分類。不少讀者留言詢問:王老師,難道 BERT 只能支持二元分類嗎?
  • 論文推薦丨[IEEE TIP2020、IEEE T-ITS2020]場景文本檢測中的錨點機制探索及改進方法(有源碼)
    這兩篇論文首先將錨點進行長度、高度、角度的解耦合[5],然後採用不同的改進方法將錨點重構為最終的文本檢測結果,能夠克服錨點設計的複雜性,自適應的檢測不同方向、不同尺度的場景文本。其中,隱式錨點機制 HAM將所有錨點的預測值當做一個隱藏層,然後將所有的預測結果融合,使得網絡的輸出類似於直接回歸方法。
  • fastText的源碼,看這一篇就夠了!
    1 fasteText能幹什麼1.1 fastText是什麼fastText是Facebook AI Reserch在16年開源的一個詞向量及文本分類工具,性能比肩深度學習而且速度更快,能夠訓練模型「在使用標準多核CPU的情況下10分鐘內處理超過10億個詞彙」,特別是與深度模型對比,fastText能將訓練時間由數天縮短到幾秒鐘。