文本分類是自然語言處理領域一個非常經典的任務,一般文本分類分為三種,基於規則的文本分類,基於機器學習的文本分類和基於深度學習的文本分類。本文我們重點關注基於深度學習的文本分類,並為大家介紹文本分類中非常經典的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希望大家保持關注~