textcnn文本分類簡述及代碼(包含中文文本分類代碼)


  首先看一張圖,這是來自煉數成金的講師Ben關於深度學習框架tensorflow課程中的一張圖,textcnn(paper),一般理解了這張圖就基本理解了cnn文本分類的基本方法;

  

 簡單總結一下:

  首先我對這些矩陣數據從0-17做了標號,方便后續的說明;

  其中0為輸入數據“I like this movie very much !”,nlp中首先會將要處理的一句話轉換為矩陣的表示,,開始矩陣的值是隨機初始化的,上圖中矩陣維度d=5,用5個0-1的浮點數組表示一個詞的向量;

  編號1、2、3、4、5、6為3種尺寸(聯想分詞中的ngram為2,3,4)的卷積核,每個尺寸兩個(可以聯想到圖像的channel=2),其中上圖的卷積核寬度為5,(1、2),(3、4),(5、6)的維度兩兩相同;卷積核1從上向下與0相乘,首先是0的前四列(I like this movie)與1相乘,得到7的第一行(就一個值),然后0的第二列到第五列(like this movie very)與1相乘,得到7的第二行...依次類推,我們就得到了7、8、9、10、11、12的卷積結果

  再經過max pooling,取7最大的值及8中最大的值組成13,取9、10中各自最大的值組成14,取11、12中各自最大的值組成15,最后將13、14、15拼接成16,整個卷積、池化這些特征提取的工作就完成了,最后在16和17之間加上一層全連接,17表示網絡的輸出為2,也就是二分類;到這里整個分類工程基本搭建好了。

代碼實現

這里我們參考google brain的工程師在github上的cnn-text-classification-tf代碼

上面鏈接下載解壓之后可直接運行,代碼邏輯也較清晰;之后有時間會把訓練及測試數據改為中文


如果想要實現textcnn中文文本分類,請點擊這個text-cnn代碼鏈接,或者去github上查找你所想要的工程代碼。

上面的代碼我已驗證過,可以實現,效果還是很好的;同樣你也可以查找下目前較流行的bert文本分類的實現方法。

  

 

目錄:

  1. tensorflow簡介、目錄
  2. tensorflow中的圖(02-1)
  3. tensorflow變量的使用(02-2)
  4. tensorflow中的Fetch、Feed(02-3)
  5. tensorflow版helloworld---擬合線性函數的k和b(02-4)
  6. tensorflow非線性回歸(03-1)
  7. MNIST手寫數字分類simple版(03-2)
  8. 二次代價函數、交叉熵(cross-entropy)、對數似然代價函數(log-likelihood cost)(04-1)
  9. 多層網絡通過防止過擬合,增加模型的准確率(04-2)
  10. 修改優化器進一步提升准確率(04-3)
  11. 手寫數字識別-卷積神經網絡cnn(06-2)
  12. 循環神經網絡rnn與長短時記憶神經網絡簡述(07-2)
  13. 循環神經網絡lstm代碼實現(07-3)
  14. tensorflow模型保存和使用08
  15. 下載inception v3  google訓練好的模型並解壓08-3
  16. 使用inception v3做各種圖像分類識別08-4
  17. word2vec模型訓練簡單案例
  18. word2vec+textcnn文本分類簡述及代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM