1. 程式人生 > >LSTM Theano sentiment analysis 深度學習 情感分析教程

LSTM Theano sentiment analysis 深度學習 情感分析教程

學習LSTM最好的教程之一莫過是deep learning tutorial

見 http://deeplearning.net/tutorial/lstm.html

這裡的Sentiment analysis實際上和 Topic classification有點像

首先學習輸入資料格式,把整個流程跑一遍,資料還是非常簡單的,是從IDBM上下載的電影評論資料,50000條有標註的資料,正負各一半,5000條無標註的資料,每個電影不超過30個評論(防止某個電影下的表達較多重複)。

實際上電影評分1-10,對映到正(>=7)負(<=4)兩類。

訓練時,取前5000常見詞語,除去50個詞語(可以視為“停用詞”,實際上並不是“停用詞”)

把lstm.py和idbm.py放在一起,同時把下載的idbm.pkl放在同一目錄下,執行idbm.py可以讀入資料。

(一開始不知道從哪裡下了個idbm.pkl竟然只有訓練集,沒有測試集,從頭到尾把程式碼檢查了一遍,折騰了一個晚上加一個上午,檢查tokenizer.perl等問題...idbm.pkl大小為31.67M,下載地址

http://www.iro.umontreal.ca/~lisa/deep/data/imdb.pkl)

idbm.pkl資料將每個電影評論使用VSM模型,也就是Libsvm常見的one-hot詞袋模型來表達,簡單說就是將詞語使用標號來表達。

如:

[12, 13, 9, 11, 12, 13, 9, 11, 33, 75, 98, 1484, 10372, 184, 619, 49, 10444, 76236, 425, 256, 5, 33, 75, 35, 1484, 10372, 516, 8, 953, 1118, 665, 29, 24, 45, 2400, 1188, 28, 43, 95, 683, 78, 407, 44, 2, 188, 1428, 275, 16700, 60626, 37, 359, 110, 40, 12, 13, 9, 11, 12, 13, 9, 11, 5, 17672, 41, 18, 148, 3, 41, 1484, 136, 700, 54, 102, 399, 3, 462, 3, 24193, 5, 8917, 194, 1679, 35, 4, 5, 43, 196, 197, 1669, 8, 383, 194, 54, 102, 96, 18, 10, 4, 12, 13, 9, 11, 12, 13, 9, 11, 57, 30, 140, 37, 2, 589, 8, 79, 17, 25, 3, 104, 32, 4, 89, 3, 896, 30, 2678, 47, 6790, 53, 2, 2812, 35, 17, 25, 53, 35981, 5884, 221, 20883, 4, 12, 13, 9, 11, 12, 13, 9, 11, 17, 25, 502, 8, 91, 6, 1483, 3, 16841, 234, 645, 26, 75, 2843, 15, 267, 30, 5938, 5, 6382, 14, 640, 532, 4]
0

表示個電影評論,詞語編號12,13, 9翻譯過來就是:

was as i that was as i that who any delivers...

0代表為類別標號。

idbm將train set中的10%作為valid set驗證資料集.

執行lstm.py既可以跑起來