最近有很多小伙伴想了解深度學(xué)習(xí)在文本分類的發(fā)展,因此,筆者整理最近幾年比較經(jīng)典的深度文本分類方法,希望幫助小伙伴們了解深度學(xué)習(xí)在文本分類中的應(yīng)用。筆者整理了近些年的相關(guān)深度文本分類論文。 Convolutional Neural Networks for Sentence Classification (EMNLP 2014)Kim在EMNLP2014提出的TextCNN方法,在多個(gè)數(shù)據(jù)集上取得了很好的效果。由于其計(jì)算速度快以及可并行性,在產(chǎn)業(yè)界得到了廣泛使用。TextCNN的模型示意圖如下圖所示。 TextCNN模型首先將文本映射成向量,然后利用多個(gè)濾波器來(lái)捕捉文本的局部語(yǔ)義信息,接著使用最大池化,捕捉最重要的特征。最近將這些特征輸入到全連接層,得到標(biāo)簽的概率分布。 代碼參考: 1) https://github.com/alexander-rakhlin/CNN-for-Sentence-Classification-in-Keras 2) https://github.com/brightmart/text_classification 圖1:TextCNN模型架構(gòu) Document Modeling with Gated Recurrent Neural Network for Sentiment Classification (EMNLP 2015)Tang等人提出了一種利用GRU對(duì)文檔進(jìn)行建模的情感分類模型。模型如下圖所示。 該模型首先將文本映射為向量,然后利用CNN/LSTM(論文中使用3個(gè)濾波器的CNN)進(jìn)行句子表示。另外,為了捕獲句子的全局語(yǔ)義表征,將其輸送給平均池化層,再接入tanh激活函數(shù)。最后將整個(gè)句子的不同寬度卷積核的向量表示接入一個(gè)Average層,從而得到句子平均向量表示。 然后將得到的句子表示,輸入到GRU中,得到文檔向量表示。最后將文檔向量輸送給softmax層,得到標(biāo)簽的概率分布。 圖2:文檔級(jí)別情感分類的神經(jīng)網(wǎng)絡(luò)模型 Recurrent Convolutional Neural Networks for Text Classification (AAAI 2015)Lai等人提出了一種無(wú)人工特征的循環(huán)卷積神經(jīng)網(wǎng)絡(luò)分類方法,簡(jiǎn)稱RCNN。 RCNN首先利用Bi-RNN來(lái)捕捉前后的上下文表征,然后將其concat起來(lái),接著使用濾波器filter_size=1的卷積層,并使用最大池化操作得到與文檔最相關(guān)的向量表征,最后將這些向量輸入到softmax層,得到標(biāo)簽的概率表征。 代碼參考: 1) https://github.com/roomylee/rcnn-text-classification 2) https://github.com/brightmart/text_classification 圖3: RCNN的模型結(jié)構(gòu)示意圖 Recurrent Neural Network for Text Classification with Multi-Task Learning (IJCAI 2016)Liu等人針對(duì)文本多分類任務(wù),提出了基于RNN的三種不同的共享信息機(jī)制對(duì)具有特定任務(wù)和文本進(jìn)行建模。 模型1(Uniform-Layer Architecture):所有任務(wù)共享同一個(gè)LSTM層,并在每個(gè)特定任務(wù)后面拼接一個(gè)隨機(jī)生成可訓(xùn)練的向量。LSTM層的最后一個(gè)時(shí)刻的隱藏層作為輸入傳入到softmax層。 模型2(Coupled-Layer Architecture): 每個(gè)任務(wù)具有自己獨(dú)立的LSTM層,但是每一時(shí)刻所有任務(wù)的hidden state則會(huì)和下一時(shí)刻的character一起作為輸入,最后一個(gè)時(shí)刻的hidden state進(jìn)行分類。 模型3(Shared-Layer Architecture):除了一個(gè)共享的BI-LSTM層用于獲取共享信息,每個(gè)任務(wù)有自己獨(dú)立的LSTM層,LSTM的輸入包括每一時(shí)刻的character和BI-LSTM的hidden state。 圖4:三種架構(gòu)進(jìn)行多任務(wù)學(xué)習(xí)建模 Hierarchical Attention Networks for Document Classification (NAACL 2016)Yang等人提出了一種用于文檔分類的層次注意力機(jī)制網(wǎng)絡(luò),簡(jiǎn)稱HAN。這篇文章和Tang等人都是針對(duì)于文檔分類的問題,然而,這篇文章在句子級(jí)別以及文檔級(jí)別提出了注意力機(jī)制,使得模型在構(gòu)建文檔時(shí)是能夠賦予重要內(nèi)容不同的權(quán)重,同時(shí),也可以緩解RNN在捕捉文檔的序列信息產(chǎn)生的梯度消失問題。HAN模型的模型示意圖如下所示。 HAN模型首先利用Bi-GRU捕捉單詞級(jí)別的上下文信息。由于句子中的每個(gè)單詞對(duì)于句子表示并不是同等的貢獻(xiàn),因此,作者引入注意力機(jī)制來(lái)提取對(duì)句子表示有重要意義的詞匯,并將這些信息詞匯的表征聚合起來(lái)形成句子向量。具體的注意力機(jī)制的原理可以參考: FEED-FORWARD NETWORKS WITH ATTENTION CAN SOLVE SOME LONG-TERM MEMORY PROBLEMS 然后,對(duì)于所有的句子向量輸入到Bi-GRU中,捕捉句子級(jí)別的上下文信息,得到文檔向量。同樣地,為了獎(jiǎng)勵(lì)對(duì)文檔進(jìn)行正確分類的線索句,作者再次使用注意力機(jī)制,來(lái)衡量句子的重要性,得到文檔向量。最后將文檔向量均輸入到softmax層,得到標(biāo)簽的概率分布。 代碼參考: 1) https://github.com/richliao/textClassifier 2) https://github.com/brightmart/text_classification 圖3: HAN模型結(jié)構(gòu)示意圖 Bag of Tricks for Efficient Text Classification (EACL 2017)Joulin等人提出了一種簡(jiǎn)單而又有效的文本分類模型,簡(jiǎn)稱fastText。 fastText模型輸入一個(gè)詞序列(一段文本或者一句話),序列中的詞與詞組成特征向量,然后特征向量通過(guò)線性變換映射到中間層,中間層再映射到標(biāo)簽。輸出這個(gè)詞序列屬于不同類別的概率。其中fastText在預(yù)測(cè)標(biāo)簽是使用了非線性激活函數(shù),但在中間層不使用非線性激活函數(shù)。 代碼參考: 1) https://github.com/facebookresearch/fastText 2) https:///gensim/models/fasttext.html 圖4:fastText模型結(jié)構(gòu)示意圖 Deep Pyramid Convolutional Neural Networks for Text Categorization (ACL 2017)Johnson 和Zhang 提出了一種單詞級(jí)別的深層CNN模型,來(lái)捕捉文本的全局語(yǔ)義表征,該模型在不增加太多的計(jì)算開銷的情況下,通過(guò)增加網(wǎng)絡(luò)深度可以獲得最佳的性能,簡(jiǎn)稱DPCNN。模型結(jié)構(gòu)示意圖如下所示。 DPCNN模型首先利用“text region embedding”,將常用的word embedding 推廣到包含一個(gè)或多個(gè)單詞的文本區(qū)域的embedding,類似于增加一層卷積神經(jīng)網(wǎng)絡(luò)。 然后是卷積快的疊加(兩個(gè)卷積層和一個(gè)shortcut連接,其中shortcut連接類似于殘差連接),與步長(zhǎng)為2的最大池化層進(jìn)行下采樣。最后使用一個(gè)最大池化層,得到每個(gè)文檔的文檔向量。 代碼參考: https://github.com/Cheneng/DPCNN 圖4:DPCNN模型結(jié)構(gòu)示意圖 Using millions of emoji occurrences to learn any-domain representations for detecting sentiment, emotion and sarcasm (EMNLP 2017)Felbo等人使用數(shù)以百萬(wàn)計(jì)的表情符號(hào)來(lái)學(xué)習(xí)任何領(lǐng)域的表情符號(hào)來(lái)檢測(cè)情緒、情緒和諷刺,提出了DeepMoji模型,并取得了具有競(jìng)爭(zhēng)性的效果。同時(shí),DeepMoji模型在文本分類任務(wù)上也可以取得不錯(cuò)的結(jié)果。 DeepMoji模型首先使用embedding層將單詞映射成向量,并將每個(gè)embedding維度使用雙正切函數(shù)映射到[-1,1]。然后,作者使用兩層的Bi-LSTM捕捉上下文特征。接著作者提出了一種新的注意力機(jī)制,分別將embeddding層以及2層的Bi-LSTM作為輸入,得到文檔的向量表征。最后,將向量輸入到softmax層,得到標(biāo)簽的概率分布。 代碼參考: https://github.com/bfelbo/DeepMoji 圖5:DeepMoji模型結(jié)構(gòu)示意圖 Investigating Capsule Networks with Dynamic Routing for Text Classification (EMNLP 2018)Zhao等人提出了一種基于膠囊網(wǎng)絡(luò)的文本分類模型,并改進(jìn)了Sabour等人提出的動(dòng)態(tài)路由,提出了三種穩(wěn)定動(dòng)態(tài)路由。模型如下所示: 該模型首先利用標(biāo)準(zhǔn)的卷積網(wǎng)絡(luò),通過(guò)多個(gè)卷積濾波器提取句子的局部語(yǔ)義表征。然后將CNN的標(biāo)量輸出替換為向量輸出膠囊,從而構(gòu)建Primary Capsule層。接著輸入到作者提出的改進(jìn)的動(dòng)態(tài)路由(共享機(jī)制的動(dòng)態(tài)路由和非共享機(jī)制的動(dòng)態(tài)路由),得到卷積膠囊層。最后將卷積膠囊層的膠囊壓平,送入到全連接膠囊層,每個(gè)膠囊表示屬于每個(gè)類別的概率。 代碼參考: https://github.com/andyweizhao/capsule_text_classification 圖6:文本分類的膠囊網(wǎng)絡(luò)體系結(jié)構(gòu) Sentiment Analysis by Capsules (WWW 2018)Wang等人提出了一種用于情感分類的RNN膠囊網(wǎng)絡(luò)模型,簡(jiǎn)稱RNN-Capsule。(這篇文章在可視化方面做的還是不錯(cuò)的)模型結(jié)構(gòu)示意圖如下所示。 RNN-Capsule首先使用RNN捕捉文本上下文信息,然后將其輸入到capsule結(jié)構(gòu)中,該capsule結(jié)構(gòu)一共由三部分組成:representation module, probability module,和reconstruction module。具體地,首先用注意力機(jī)制計(jì)算capsule 表征;然后用capsule表征計(jì)算capsule狀態(tài)的概率;最后用capsule表征以及capsule狀態(tài)概率重構(gòu)實(shí)例的表征。 圖7: RNN-Capsule模型結(jié)構(gòu)示意圖 Graph Convolutional Networks for Text Classification (AAAI 2019)Yao等人提出了一種基于graph convolutional networks(GCN)進(jìn)行文本分類。作者構(gòu)建了一個(gè)包含word節(jié)點(diǎn)和document節(jié)點(diǎn)的大型異構(gòu)文本圖,顯式地對(duì)全局word利用co-occurrence信息進(jìn)行建模,然后將文本分類問題看作是node分類問題。 代碼參考: https://github.com/yao8839836/text_gcn 圖7:Text GCN的模型結(jié)構(gòu) BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (NAACL 2019)Google提出的BERT模型,突破了靜態(tài)詞向量無(wú)法解決一詞多義的問題。BERT是基于語(yǔ)言模型的動(dòng)態(tài)詞向量,在自然語(yǔ)言處理的多項(xiàng)任務(wù)中取得了最優(yōu)秀的結(jié)果。筆者對(duì)BERT模型進(jìn)行微調(diào),在文本分類的多個(gè)領(lǐng)域,諸如法律、情感等,取得了非常有競(jìng)爭(zhēng)性的性能。 BERT的模型架構(gòu)是一個(gè)多層的雙向Transformer編碼器(Transformer的原理及細(xì)節(jié)可以參考 Attention is all you need)。作者采用兩套參數(shù)分別生成BERTBASE模型和BERTLARGE模型(細(xì)節(jié)描述可以參考原論文),所有下游任務(wù)可以在這兩套模型進(jìn)行微調(diào)。 代碼參考: https://github.com/google-research/bert 圖8:BERT的Pre-training結(jié)構(gòu)和Fine-Tuning結(jié)構(gòu) (*本文為 AI科技大本營(yíng)轉(zhuǎn)載文章,轉(zhuǎn)載請(qǐng)聯(lián)系原作者) ◆ |
|