1. 程式人生 > >Tensorflow實現微博的評論情感分類模型

Tensorflow實現微博的評論情感分類模型

學習研究專案:基於微博評論的資料探勘與情感分析

專案簡介

學習卷積神經網路,迴圈神經網路在實際環境下的應用,提升實踐能力,瞭解深度學習在自然語言處理方面的進展

cnn_for_text_classify

具備較強的自動關鍵詞提取能力,在酒店評論測試集上達到95%的準確率
採用l2正則和dropout來控制過擬合現象
4種卷積核使其能提取區域性高效的短特徵

lstm_for_text_classify

具有較強的對長難句,反問句,陰陽怪氣句的判斷能力,在在酒店評論測試集上達到97%的準確率
採用雙向LSTM網路
對輸入資料進行dropout,模擬增大樣本空間
LSTM層與層之間進行dropout
對LSTM網路權重,偏置進行l2正則,抗過擬合
網路採用正交初始化,加快收斂速度,提升訓練集上的正確率,大幅提升測試集上的正確率
採用Clipping Gradients,防止梯度爆炸,提升測試集上的正確率

word2vec:

專案使用的詞向量:embedding_64.bin(1.5G)
訓練語料:百度百科800w條 20G+搜狐新聞400w條 12G+小說:90G左右
模型引數:window=5 min_count=5 size=64
下載連結:百度網盤連結 密碼:wzqv

檔案功能介紹

./
weibo.py:微博評論爬蟲
readdata.py:為情感分析模型提供多種資料載入相關API
word2vec.py:為情感分析模型提供多種詞向量的相關API
cnn_model.py:CNN文字分類模型圖結構
cnn_train.py:CNN文字分類訓練程式碼
cnn_test.py: CNN文字分類測試程式碼
lstm_model.py:lstm文字分類模型圖結構
lstm_train.py:lstm文字分類訓練程式碼
lstm_test.py: lstm文字分類測試程式碼
mixed_cnn_lstm_test.py:採用模型融合方式將cnn與lstm的結果進行融合投票絕對最終結果

./data
pos.txt:正面評價資料集
neg.txt:負面評價資料集
test.txt:自己放樣本測試
embedding_64.bin:訓練好的詞向量模型
/cnn:cnn模型訓練完成的相關資料引數
/lstm:lstm模型訓練完成的相關資料引數

推薦執行環境

python 3.6
tensorflow-gpu 1.4
gensim 3.3
Ubuntu 64 Bit / windows10 64 Bit

使用模型注意事項

1.文字TXT檔案必須採用UTF-8編碼格式,非UTF-8格式的,去記事本中另存為的時候選擇UTF-8
2.pos.txt、neg.txt、test.txt 檔案一行為一條評論,長度不限,可以有英文和標點(反正都會去除的),不要詞性標註資訊
3.詞向量模型一定要用我放的那個64維度的bin檔案
4.模型程式碼在windows上測試過基本沒bug,linux平臺沒測試過,不過肯定需要自行修改檔案路徑

模型結構

CNN模型優化

LSTM模型優化