《Character-level Convolutional Networks for Text Classification》

Character-level Convolutional Networks for Text Classification

概述:驗證使用字符級的CNN進行文本分類任務的可能性

筆記:

1.文本分類是個nlp經典問題,從人工標註特徵到選擇最好的機器學習分類器,目前,幾乎所有的文本分類都是基於詞的(截止2016年4月)。

2.後來人們發現cnn對於原始數據提取特徵很有用,就從cv到語音識別都開始用cnn,有種叫time-delay的網絡,和後來的cnn本質相同,用來對序列數據建模。

3.本文構造了幾個大數據集,用一個文本分類任務舉例,提供了一套廣泛的對比。

4.char cnn不僅可以不依靠句法信息和語義信息,甚至連詞的信息都不需要。十分方便工程實現,因爲不管幹什麼語言都是最終以字符爲單位的,還有一個好處就是對於拼寫錯誤和特殊符號表情等有更好的魯棒性。

5.本文中max-pooling可以使cnn達到6層,其他層都失敗了,論文A theoretical analysis of feature pooling in visual recognition.對池化的一些原理進行了解釋。

6.文中的非線性單元用的是整流器或者閾值函數max{0,x},類似於Relu。使用batch爲128的隨機梯度下降,學習率爲0.01動量爲0.9每三個epoch減半10次……,使用Torch 7 框架實現。

7.和wordEmbedding不同,輸入由根據語言事先指定size爲m的編碼表編碼,每個字符會轉爲由這個size爲m的編碼表編碼的土製one-hot向量。前向順序向量化整個句子,方便fullyconnect的時候關聯上一個最近的讀取。本文中的字母表size爲70,26英文字母,10個數字,33個特殊字符。

8.本文還對不同字母表進行了建模,也有區分大小寫的操作。

9.本文創建2個結構,一個Large的一個Small的。都是9層,包括6層卷積層,3層fullyconnect,三層fullyconnect之間有兩層dropout來正則化,dropoutKeepprob爲0.5。

10.輸入向量化爲長度70寬度爲字符數的矩陣,1014維的特徵層。

11.使用同義詞替換進行數據增強,使用的同義詞詞典來自LibreOffice的mytheas組件,其中的詞典來自WordNet,也不是全都換的,有trick在裏面。

12.本文涉及的傳統方法是人工特徵提取器+一個線性分類器,分類器都是多項式logistics regression。

13.傳統文本分類方法:
       Bag-of-words and its TFIDF
       Bag-of-ngrams and its TFIDF
       Bag-of-means on word embedding
       深度學習的方法:
       ConvNet based words with word2vec
       lstm based words with word2vec,使用了“vanilla”的變體,爲了防止梯度爆炸進行了梯度裁剪gradient clipping。

14.關於字母表的選擇,區分大小寫不是個明智的選擇,會得出更差的結果。推測是因爲語義不會因爲字母的大小寫而發生改變,全部轉爲小寫是有好處的,即正則化是有好處的。

15.構建了數幾個測試集。從數十萬到數百萬不等。

16.傳統方法在十萬級的訓練集上傳統方法表現更好,當上百萬的訓練集上char cnn表現更好。

17.char cnn對於一些用戶自創的數據有更好的效果,本文並無明確證據證明char cnn擅長容錯拼寫錯誤和表情符號。

18.在Bag-of-means 上使用wordembedding效果非常差,比其他所有模型都差,說明word2vec並不是所有模型都適用的,尤其是簡單的方法上。

19.There is no free lunch,本文中沒有一個模型能在所有數據集上保持統治地位。

結論:

char cnn是有效的方法,但是受各種因素影響,比如數據集大小、文本是否經過curated、字母表的選擇。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章