基於cnn和rnn的文本分類實踐

本文主要介紹在文本分類中,使用CNN網絡和RNN網絡的實踐,其中CNN又分爲maxPool和k-maxpool。可以直接在juputer執行。

代碼已經上傳github

https://github.com/yixiu00001/text-classify-cnn-rnn/blob/master/README.md


1.CNN+maxPool

text-classification-cnn-maxpool 該工程爲cnn-maxpool相關代碼。

dataOwn.py

主要包括基於word2vec的embedding方法構建詞和index的映射詞典,詞長不到設定值的打padding以及數據的載入和batch_iter

CNNDiseaseModel.py

主要是CNN網絡相關的變量初始化及網絡構造。 重點看placeholder/inference等部分,在計算損失部分,由於目前的label只有一個數值,非onehot類型,所以調用sparse_softmax_cross_entropy_with_logits接口。 

CNNDiseaseModelTrain.ipynb

這個文件是訓練模型的文件,在train部分是整個訓練的邏輯。

CNNDiseaseModelPredict.ipynb

這個文件是對已經訓練好的模型,進行結果測試,提供了輸入一段文本進行測試的接口和輸入一個測試文件地址進行測試的接口。

2.CNN-k-max-pool

這裏和上面工程的區別是使用了k-max pool,但是本實驗中效果和max-pool差不多。 同樣包含幾個文件

dataOwn.py
modelOneConv.py
trainWord2vec.ipynb
predictWord2vec.ipynb

3.text-classification-rnn

這個文件是基於rnn實現的分類,可以選擇使用LSTM或者GRU

rnn_model_oneLable.py
train_rnn_oneLable.ipynb
predict_rnn_oneLablelNew.ipynb

這三個文件對應的數據的label是一個數字,如0 ,1 ,2這種類型

rnn_model_onehotLable.py
train_rnn_onehotLable.ipynb

這兩個文件對應的數據的label是onehot類型,如100000000000000,010000000000


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