国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

基于循環神經網絡(RNN)實現影評情感分類

2020-02-22 23:32:54
字體:
來源:轉載
供稿:網友

使用循環神經網絡(RNN)實現影評情感分類

作為對循環神經網絡的實踐,我用循環神經網絡做了個影評情感的分類,即判斷影評的感情色彩是正面的,還是負面的。

選擇使用RNN來做情感分類,主要是因為影評是一段文字,是序列的,而RNN對序列的支持比較好,能夠“記憶”前文。雖然可以提取特征詞向量,然后交給傳統機器學習模型或全連接神經網絡去做,也能取得很好的效果,但只從端對端的角度來看的話,RNN無疑是最合適的。

以下介紹實現過程。

一、數據預處理

本文中使用的訓練數據集為https://www.cs.cornell.edu/people/pabo/movie-review-data/上的sentence polarity dataset v1.0,包含正負面評論各5331條。可以點擊進行下載。

數據下載下來之后需要進行解壓,得到rt-polarity.neg和rt-polarity.pos文件,這兩個文件是Windows-1252編碼的,先將它轉成unicode處理起來會更方便。

補充一下小知識,當我們打開一個文件,發現亂碼,卻又不知道該文件的編碼是什么的時候,可以使用python的chardet類庫進行判斷,這里的Windows-1252就是使用該類庫檢測出來的。

在數據預處理部分,我們要完成如下處理過程:

1.轉碼

即將文件轉為unicode編碼,方便我們后續操作。讀取文件,轉換編碼,重新寫入到新文件即可。不存在技術難點。

2.生成詞匯表

讀取訓練文件,提取出所有的單詞,并統計各個單詞出現的次數。為了避免低頻詞的干擾,同時減少模型參數,我們只保留部分高頻詞,比如這里我只保存出現次數前9999個,同時將低頻詞標識符<unkown>加入到詞匯表中。

3.借助詞匯表將影評轉化為詞向量

單詞是沒法直接輸入給模型的,所以我們需要將詞匯表中的每個單詞對應于一個編號,將影評數據轉化成詞向量。方便后面生成詞嵌入矩陣。

4.填充詞向量并轉化為np數組

因為不同評論的長度是不同的,我們要組成batch進行訓練,就需要先將其長度統一。這里我選擇以最長的影評為標準,對其他較短的影評的空白部分進行填充。然后將其轉化成numpy的數組。

5.按比例劃分數據集

按照機器學習的慣例,數據集應被劃分為三份,即訓練集、開發集和測試集。當然,有時也會只劃分兩份,即只包括訓練集和開發集。

這里我劃分成三份,訓練集、開發集和測試集的占比為[0.8,0.1,0.1]。劃分的方式為輪盤賭法,在numpy中可以使用cumsum和searchsorted來簡潔地實現輪盤賭法。

6.打亂數據集,寫入文件

為了取得更好的訓練效果,將數據集隨機打亂。為了保證在訓練和模型調整的過程中訓練集、開發集、測試集不發生改變,將三個數據集寫入到文件中,使用的時候從文件中讀取。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 苍山县| 丽江市| 黔东| 武城县| 资源县| 云和县| 保山市| 太谷县| 四子王旗| 海盐县| 兴海县| 安阳市| 永善县| 那坡县| 蒲城县| 武穴市| 易门县| 霍林郭勒市| 安仁县| 永泰县| 英吉沙县| 天水市| 古蔺县| 灌云县| 正镶白旗| 利津县| 松阳县| 邵东县| 台州市| 上林县| 江华| 三门县| 中阳县| 收藏| 广河县| 广安市| 井陉县| 子洲县| 比如县| 南京市| 东明县|