最近工作中一直在用基于CNN的文本分類模型,可平時太忙沒時間總結(jié)梭冠,借此機(jī)會把最近的學(xué)習(xí)經(jīng)驗再梳理一遍辕狰。
自然語言處理(NLP)技術(shù)已經(jīng)不斷滲透并應(yīng)用于互聯(lián)網(wǎng)垂直領(lǐng)域,在諸如文本分類妈嘹、實體識別柳琢、問答系統(tǒng)、翻譯系統(tǒng)中扮演著重要角色润脸。深度學(xué)習(xí)處理自然語言任務(wù)可以避免傳統(tǒng)算法對特征是重度依賴性柬脸,準(zhǔn)確度也更高,近來頗受重視毙驯。作為深度學(xué)習(xí)領(lǐng)域兩大陣營的CNN和RNN各具特色倒堕,一般來說CNN適用于空間任務(wù)(如圖像),RNN適用于時序任務(wù)(如語音)爆价,自然語言處理任務(wù)一般以文本的形式出現(xiàn)垦巴,所以使用RNN較為自然,但有學(xué)者做了對比試驗發(fā)現(xiàn)CNN在一些任務(wù)上的表現(xiàn)要比RNN更為出色[1]
經(jīng)對比發(fā)現(xiàn)CNN在文本分類上表現(xiàn)良好铭段,又因為RNN模型的訓(xùn)練時間普遍較長骤宣,所以使用CNN做文本分類是更明智的選擇。用卷積網(wǎng)絡(luò)做文本分類最著名的模型就是TextCNN[2]. 此模型簡單序愚、高效憔披、又能獲得很高的準(zhǔn)確率,模型結(jié)構(gòu)如下爸吮。
1.數(shù)據(jù)處理
1.1分詞
比如“這個地方景色不錯芬膝,但人也實在太多了”分詞之后的結(jié)果為'這個,地方,景色,不錯, ,但,人,也,實在,太多,了'浸锨。
對于中文文本分類管搪,詞粒度遠(yuǎn)好于字粒度急灭。
1.2 WordEmbedding.
分詞之后禀酱,建立詞匯表,每一個詞可用索引數(shù)字化為one-hot向量驻子,但這樣詞匯變量維度與詞匯量相等谭羔,這顯然太高且太稀疏了岂傲。Word
Embedding可以將詞匯向量化為較小的固定的維度哄酝,起到降維作用友存。目前最常用的就是Word2Vec方法,這一步可以單獨訓(xùn)練也可以在分類訓(xùn)練過程中不斷優(yōu)化炫七。
2.卷積
經(jīng)過Embedding的一個句子實際上形成了一個矩陣,比如“這個钾唬,地方万哪,景色侠驯,不錯”可轉(zhuǎn)化為4xn的矩陣,n為Embedding size. 與圖像處理的二維卷積不同奕巍,文本處理使用一維卷積吟策,因為矩陣的每一行代表一個分詞,截斷分詞沒有數(shù)學(xué)意義的止,故卷積filter的長度恒等于n.
一維卷積需要多個寬度的filter來獲得不同的感受野檩坚,如上圖右側(cè)方框分別是1xn,2xn诅福,3xn的filter.
3.池化
采用MaxPooling匾委,選取卷積結(jié)果計算后的最強(qiáng)特征。池化可自適應(yīng)輸入寬度從而將不同長度的輸入轉(zhuǎn)化為統(tǒng)一長度的輸出氓润。
4.全連接赂乐、分類
經(jīng)池化后的數(shù)據(jù)按深度方向拼接成一個向量后提供給全連接層,經(jīng)softmax激活后輸出最終結(jié)果咖气。
Ref: