20行代码实现电影评论情感分析
背景
情感分析有很多的應用場景,比如做一個電商網站,賣家需要時刻關心用戶對于商品的評論是否是正面的。再比如做一個電影的宣傳和策劃,電影在鍵盤俠們中的口碑也至關重要。互聯網上關于任何一個事件或物品都有可能產生成千上萬的文本評論,如何定義每一個文本的情緒是正面或是負面的,是一個很有挑戰的事情。挑戰體現在以下幾個方面,區別于結構化數據,評論數據的長短不一,很難限定到固定的維度。另外很難通過某個詞判斷用戶的情緒,舉個極端的例子,fu*k通常被認為是貶義詞,但是如果一條評論是“傲海 is fu*kinghandsome”,那么其實就是一個正向的意義。本文我要使用IMDB數據集,通過20行的Tensorflow代碼實現一個電影評論預測模型,準確率可以超過百分之九十五,里面涉及到一些詞袋模型以及embedding的概念,這些我等下一篇文章再講,這一次我們就講實踐。
數據
介紹下本文用到的訓練數據IMDB,完全開源的一個電影評價數據集,有好幾萬條真實的電影評論數據。
每一個數據都被儲存為txt文件存放,其中pos文件夾就存放正面評論的數據,neg文件夾存放負面情緒的數據。這些數據可以通過一些簡單的代碼提取出來,并且標記。數據集下載地址:http://ai.stanford.edu/~amaas/data/sentiment/
簡單來說,在數據預處理階段,需要把這些文本按照正向和負向打標,并且把文本向量化,比如“Aohai is fuc*inggentle”這種話要怎么變成數值向量,下一篇文章會具體說明。
代碼
代碼其實不止20行,但是真正建模并訓練的就是只有20行,簡單介紹下哈:
trainX = pad_sequences(trainX, maxlen=100, value=0.) testX = pad_sequences(testX, maxlen=100, value=0.) # Converting labels to binary vectors trainY = to_categorical(trainY, nb_classes=2) testY = to_categorical(testY, nb_classes=2)# Network building net = tflearn.input_data([None, 100]) net = tflearn.embedding(net, input_dim=vocabulary_size, output_dim=128) net = tflearn.lstm(net, 128, dropout=0.8) net = tflearn.fully_connected(net, 2, activation='softmax') net = tflearn.regression(net, optimizer='adam', learning_rate=0.001,loss='categorical_crossentropy')# Training model = tflearn.DNN(net, tensorboard_verbose=0) model.fit(trainX, trainY,n_epoch=1, validation_set=(testX, testY), show_metric=True,batch_size=32) predictions = model.predict(trainX) print(predictions)前4行應該比較容易懂
運行結果
代碼層級是這樣的:
執行文件emotional.py和下載的IMDB數據放到同一級目錄,train文件夾下有pos和neg兩個文件夾,分別存放正向和負向的評論~
算了,大家直接clone我的項目,我放一些數據在里面,直接運行:
python emotional.py就行
需要安裝Tensorflow和tflearn這兩個庫,當然也可以用阿里云機器學習PAI的notebook,這樣就不用安裝了,下圖就是我用PAI跑出來的截圖。
運行結果:
epoch表示的是迭代次數,代碼里只設置了迭代一次。最下面的這一串矩陣一共有兩列,每一行對應一個需要預測的評論數據,每一行的第一列表示這個評論屬于負向的概率,每一行的第二列表示這個評論屬于正向的概率。
代碼地址
我只放了一點點測試數據,完整的數據大家自己去IMDB下吧:https://github.com/jimenbian/sentiment-analysis
與網上的案例不同,其它案例都缺少自定義數據集的功能,限制在了IMDB,使用本文的code可以任意修改預測數據集
參考:http://blog.csdn.net/aliceyangxi1987/article/details/76176746
總結
以上是生活随笔為你收集整理的20行代码实现电影评论情感分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习RNN实现股票预测实战(附数据、
- 下一篇: 谈谈AI的ToB市场,我的新书《B端产品