讀CharCNN文章

    charcnn 顧名思義,對於一段文本來說,我們以字符作爲最小單位,而不是詞語了。對於中文來說,我的名字叫做推推,那麼到字符級別的話,該句子的構成爲[我,的,名,字,叫,做,推,推] ,而不是 [我的,名字,叫做,推推]

 

1.字符的量化

  • 對於英文來說,常見的包括26個英文字母,10個阿拉伯數字,還有33個標點符號,不在這69個字符的統一用1個表示

  • 對於每個字符來說,可以用one-hot表示,長度爲m,一段文本,由h個字符構成,那麼就形成了 h*m 的矩陣
  • 接下去就丟給CNN來操作了

  • paper中提到一段文本提取1014個字符,就可以捕獲大部分文本的含義了

 

2.模型結構

 卷積層

  • 池化層N/A表示缺省
  • 初始化權重是從gaussian 分佈中抽取,均值爲0,在第一個Large model中採用0.02的標準差,第二個Small model中採用0.05的標準差

 

全連接層

 

  • 第9層 根據自己的分類任務自行設定
  • 在7,8兩個全連接層,用了dropout,p=0.5

 

3.用同義詞詞典做數據增強

  • 數據增強一般用於控制泛化誤差,在圖像或者語音識別領域,一般是用循轉來做,但在文本領域是不行的,因爲文本是有序的,所以考慮同義詞
  • 提到兩個概率,一個詞被替換的概率  和  一個詞有多個同義詞,選擇哪個同義詞的概率。

 

4.一些討論:

  • 最後一點印象最深刻,叫做天下沒有免費的午餐,沒有一個單獨的機器學習模型對任何數據集是有效的! 
  • CharCNN,不需要words,適用於不同語言
  • 傳統的模型,像n-grams TFIDF 在 成百上千數據集中效果比價好,當數據集達到數百萬級別,CharCNN會開始表現更好
  • 對於用戶產生的數據,例如評論,charcnn 比 以word爲基礎的深度神經網絡 表現的更好
  • 在百萬級別的數據集中,不區分大小寫表現的更好,一個猜測是有正則化的效果,但沒有被驗證過
  • 在情感分析人物中,各種模型區別不大
  • Bag-of-means , 效果不理想,word2vec的表示可能對分類沒有帶來更好的好處

 

 

 

 

refer:https://arxiv.org/pdf/1509.01626.pdf

https://github.com/srviest/char-cnn-text-classification-pytorch

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