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