深度學習在情感分析中的應用的研究現狀?
現在馬上研究生二年級,攻讀方向是基於深度學習的文本情感分析。由於實驗室沒有基礎,只能自己找資料看文獻。這個方向發表論文難嗎?國內查到的文章好像用深度學習做情感分析的很少。
因為去年做過這個方向的工作,所以在這裡分享一下經驗。
如果你想以「情感分類(sentiment classification)」為純粹目標發一篇論文,已經不容易了。注意這裡討論的是簡單的分類問題,即輸入一段文本,輸出對於這段文本的情感預測(正面、負面)。- 這個任務的好處是門檻低。目前主流數據集有3個,(1) IMDB movie review (2) rotten tomato review 和 在(2)的基礎上,由斯坦福的Richard Socher帶頭做的 Stanford Sentiment Treebank。數據都可以下載到,量級都算大。加之這是簡單的分類問題,所以很容易上手。
- 壞處是競爭激烈。錯過了發論文(guan shui)的最佳時機。已經有太多神經網路(深度學習)的工作在這些數據集上刷新performance了。現在已經變成了number game,拼正確率。要再提高不是說不可能,會相對困難。再者,一些公司比如Google和MetaMind動不動就跑個大體量的實驗,如果沒有很好的計算資源(機器、CPU/GPU),也很難跟上人家刷榜的速度(大霧)。
=====
其實發論文的方式有很多種,正確率並不是衡量的唯一指標,而論文的創造性和啟發性往往會更重要。
如果對number game沒有興趣,你可以提出一種的model或者idea,然後驗證它在各種不同的任務上都有不錯的效果(情感分類只是其中一種)。例如最近的幾個工作(很不要臉地順便附上了自己的工作):
http://papers.nips.cc/paper/5949-semi-supervised-sequence-learning.pdfhttp://arxiv.org/pdf/1601.06733.pdfhttp://arxiv.org/pdf/1508.04112v2.pdfhttp://arxiv.org/pdf/1506.07285v4.pdf或者你可以做更深入的情感分析,而不僅僅是簡單的情感分類。例如下面這個知乎帖子提到的評論歸納:
淘寶的評論歸納是如何做到的? - 社交網路這裡貼一下師姐的相關工作,(模型比較久遠,關注問題本身就好):
http://jair.org/media/3647/live-3647-6805-jair.pdfhttp://people.csail.mit.edu/regina/my_papers/content_acl2011.pdf
=====
數據集的地址和相關信息可以在之前貼的論文找到:http://papers.nips.cc/paper/5949-semi-supervised-sequence-learning.pdf另 Stanford Sentiment Treebank主頁:Recursive Deep Models for Semantic Compositionality Over a Sentiment Treebank關於深度學習在情感分析中的應用,在之前 聊天中的情感分析有多難? - 知乎 中,竹間智能高級演算法工程師 鄧霖 已經談到了一部分,如利用LSTM結合句法分析樹、基於卷積神經網路和支持向量機等。一般情況下,對於各種方法的綜合創新應用,能達到取長補短的效果,進而能夠提高情感分析的準確率,另外還能從無標註的文本里學習到其中的隱藏特徵,以實現端到端的分類。
而此次,竹間智能 自然語言與深度學習小組,將重點以文本中的情感分析為例,分享一些實作上可以使用的深度學習技術的工具與做法,並對多模態情感分析的相關研究做一些探討。另外,很高興能看到正有越來越多的研究者開始關注文本甚至人機交互中的情感、情緒識別,甚至是人機之間的情感交互。希望竹間在這一領域的探索與分享,能對大家有所幫助。
一般情況下,我們探討的情感分析多指文本中的情感分析,但多維度的情感分析,如文字+圖片+表情+顏文字的綜合分析,文本+語音+圖像的綜合,即多模態情感分析,是目前來說,比較前沿和更為重要的情感分析的研究方向。如竹間智能在構建基於自然語言理解技術的人機交互系統時,加入多模態情感分析技術(文字、語音、圖像),打破了以往情感識別在單一文本維度上的局限性,讓機器能進一步讀懂、聽懂、看懂人類,從而達到了更好的人機交互效果。
文本情感分析最常見的 dataset 是 IMDB Movie Reviews,那麼該如何入手與練習呢?
下面以 python 為例,從簡單的文本情感分析說起。
前置作業:
1. 先安裝 Keras (https://keras.io/),Keras 是一個 high-level
networks API,底層使用了 Tensorflow, CNTK, 或 Theano 運算 (這取決於具體安裝了哪一個)。
Keras 的安裝指南: https://keras.io/#installation
2. 當 Keras 已安裝完畢,則 IMDB 可由此方式入手 (https://keras.io/datasets/) 。此API的底層:https://github.com/fchollet/keras/blob/master/keras/datasets/imdb.py
接下來,我們依序分享一下怎麼用 LSTM, Bi-directional LSTM, CNN, CNN-LSTM 等 Neural
Network 來解情感分析(sentiment analysis)的問題。
- LSTM (long-short term memory)
LSTM 的詳細原理,在此不加贅述,有興趣的朋友,可以參考這篇文章:http://colah.github.io/posts/2015-08-Understanding-LSTMs/
以下會使用RNN 的 concept 來解 sentiment analysis的問題。
example: 假設,使用者輸入:「我今天好傷心」,分詞完的結果是「我 今天 好 傷心」,則我們希望model 可以輸出 「難過」。 model 裡面的簡單運算概念如下圖所示。 LSTM 會一直把資訊往後傳,並擁有記憶功能,最後整合所有資訊後,再作出判斷。
透過 Keras,可以快速建出上面的模型:
完整代碼:https://github.com/fchollet/keras/blob/master/examples/imdb_lstm.py
詳細的代碼解說: http://machinelearningmastery.com/sequence-classification-lstm-recurrent-neural-networks-python-keras/
- Bi-directional LSTM
Bi-directional LSTM 和 LSTM 非常類似,只是把句子透過兩個不同方向來看,如下圖所示:
這種做法有一個好處,以這句話「我今天好傷心」為例,重點剛好在句尾。但如果換一個句子,「真開心,明天要出去玩了」,此句的重點則在句首。因此,可以用
Bi-directional LSTM 來處理這種問題。
一樣,透過 Keras,可以快速建出這種模型:
只要在 LSTM 外麵包上 「 Bidirectional 「 這個 wrapper ,馬上就能製作完成。
完整代碼:https://github.com/fchollet/keras/blob/master/examples/imdb_bidirectional_lstm.py
- CNN
近年來 CNN 在影像領域大有突破,不過也有人把 CNN 的方法應用到文字處理上面。在此先分享一篇 arxiv上的文章,「Recent Advances in Convolutional Neural Networks」,於2017年年初做了更新:https://arxiv.org/pdf/1512.07108.pdf
裡面對 CNN 做了overview,同時在 「5.10. Natural Language Processing」 對NLP做了些整理。
然後我們回歸主題,怎麼使用 CNN 來做情感分類呢?
詳細的原理,可以參考這篇文獻:https://arxiv.org/abs/1408.5882
這篇則是知名的博客WildML寫的介紹:http://www.wildml.com/2015/12/implementing-a-cnn-for-text-classification-in-tensorflow/
不過,從實作面的角度來看,透過Keras,CNN的原理也不是太重要,只要找對API即可 (Conv1D)。在以下這個實作範例中,大約需要20行的代碼,即可建出這個model:
完整代碼:https://github.com/fchollet/keras/blob/master/examples/imdb_cnn.py
- CNN-LSTM
上面介紹完 LSTM CNN,那是不是有辦法可以把兩者的特性結合起來,融合成一個 CNN-LSTM的model? 透過 Keras,當然還是可以的!
完整代碼: https://github.com/fchollet/keras/blob/master/examples/imdb_cnn_lstm.py
以上主要分享了比較普遍的實作面內容,也許能夠幫助大家解決手頭上的問題。不過上面用 LSTM
與 CNN 來解 sentiment analysis 的問題大約是近5年內發展的技術,不是最近最新的技術。
關於多模態情感分析:最直覺的想法,就是把文本、語音、圖像的原始輸入資料,利用深度學習的技術,映射到共同的 feature space 中。 以文本的例子來說,原始輸入的文字,使用分詞(前處理)轉成字元與字元後,透過一層 embedding layer 映射到向量空間,可以使用 CNN 去擷取裡面的信息。同理,以圖像為例子,原始輸入的照片,利用影像前處理 (ex: whitening) 後,再使用CNN 去擷取裡面的訊息。
RNN在語音和圖像上的情感分析,可參考:http://www.professeurs.polymtl.ca/christopher.pal/RNN-emotions-kahou.pdf
最新的Deep Learning for NLP 的技術,可以參考由NLP大牛 Chris Manning 和 Richard Socher 在Stanford 合開的課程: http://cs224d.stanford.edu/syllabus.html
課程視頻:https://www.youtube.com/playlist?list=PL3FW7Lu3i5Jsnh1rnUwq_TcylNr7EkRe6
本回答來自 竹間智能 自然語言與深度學習小組。
相關閱讀:
情感分析的應用部分:聊天中的情感分析有多難? - 知乎
目前來說sa方面沒看到什麼特別耳目一新的框架和att,能用來做文本分類的框架基本上都可以用來做sa。看過不少先發在文本分類上的論文然後稍微改改發到頂會上的paper,如emnlp
老鐵,現在用深度學習做情感分析的.....已經做到幾乎滿天飛了呀,已經到了無deep無論文的地步了。整天絞盡腦汁就為了能不能再深一點,我跟你情況差不多,不過好在我及時變通了下,情感分析實際上就是文本分類嘛,千萬別把自己吊在一棵樹上,即便你找不到深度學習在SA上的論文,文本分類總是可以的哇。現在立場檢測(2016的任務)也算是比較新的任務可以看看的,但是較之SA難度又增加了不少。
Start from sochers work and you will found more. http://socher.org
我做過深度學習的情感分析,當時用的是CNN。CNN在情感分析中不是很主流的做法,但是其實相關的論文也不少。主流做情感分析的應該是兩種RNN(Recursive Neural Network和Recurrent Neural Network)。
CNN可以做情感分析的任務原因在於CNN對於序列數據的效果也是不錯的。這個可以在Yoshua Bengio寫的deep learning書上(Deep Learning)看到。下面是公式解釋的截圖:
其實思想就是卷積操作中的核移動可以等價於輸入序列自己的移動,這就相當於在處理序列數據了,我是學EE出身的,這個原理和信號系統中卷積其實是一樣的,所以EE出身的人可能好理解一些。所以用CNN做情緒分析也是可行的。Recursive Neural Network是情緒分析中很有名的,是一種樹狀結構的神經網路,是由Socher [1]提出來的,我看作者裡面還有吳恩達。最早只是一個簡單的樹狀模型,後來作者考慮了詞向量之間的距離之類的,然後加入了一些參數進去。
我覺得用Recurrent Neural Network可能是對於情緒分析是比較好的方法,特別是用LSTM去做。2015年很多效果好的深度學習結構中基本都加入了LSTM的結構,而且LSTM對於語言模型效果應該也是最好的。我覺得可以試著從這個方向下手做一些研究。
[1] Socher R, Lin C C, Manning C, et al, 「Parsing natural scenes and natural language with recursive neural networks,」 In Proceedings of the 28th International Conference on Machine Learning (ICML), pp. 129-136, 2011.人類的情感太複雜了,積極/消極/中性就能概括的了嗎?那人的比如憤怒,寂寞,空虛如何表達出來?這種情感結合文本+圖像+聲音估計也難搞到很高的accuracy吧??
我覺得目前情感分析的發展受限於兩點:
第一點就是數據集種類太少
第二點就是模型發展到了瓶頸
但是說實話,如果哪天機器都能體會到寂寞空虛冷,這個世界就完了
就像樓上說的,單純的情感分類需要凸顯情感,不然換個數據集就和文本分類是一個意思了。情感是一種很主觀的信息,作為一個很傳統的任務,想著改改模型跑跑實驗就發頂會(guan shui)有點難了。
tecdat:看推特數據如何quot;塑造quot;地區形象
可以看下我們做的一個案例:
圖文版鏈接:看推特數據如何amp;quot;塑造amp;quot;地區形象
「
高度信息化的今天,社交媒體向我們提供直接認識外界的一個窗口,決定著大家對一個地區的認知,像是一雙對地區形象「塑型」的「看不見」的手。
▼
根據這個背景,tecdat對素有「塞上江南」之稱的寧夏熱門推文(hot tweet,推特中的熱門推文是指被轉推或被收藏過的推文,相比普通推文影響力更大)進行了分析。
研究人員發現網友們關注的主題,同時傾聽大家呈現出來的態度及情感。根據對135,592條推特用戶自主在線發布消息的分析,我們發現了一些值得注意的內容。
▍「消費購物」 成為關注度最高主題, 超過十分之一的推文與飲食有關
可以看到,熱門推文中有關的主題有4個,根據場景的不同分別為 「消費購物」、「工業經濟」、「健康養生」、「休閑生活」。 有關消費購物的推文所佔比例最高,推特用戶中最關心的寧夏議題是消費購物。
屬於消費購物類的主題包括Market, oilsoil,food,wolf berries,drinking,wine,共6項,所佔比例為32.6%;
屬於工業經濟的包括energy, automous ,industry, coal , province等5個主題, 所佔比例為26.4%。
屬於健康養生的主題包括 living , heal ,nural, antioxidant , goji ,dried,共計6個,所佔比例為21%。
屬於休閑生活的主題包括twter , instagram ,pic, youngliving , shot,共計5個,所佔比例為20%。
從消費購物詞雲中,我們發現驢友愛買的寧夏特產,如干紅葡萄酒、枸杞酒、賀蘭石等。
從工業詞雲中,我們發現煤炭是寧夏的優勢礦產資源。寧夏境內能源資源豐富,可利用的有石油、天然氣、煤層氣、水能、風能、光能等。這些資源為寧夏建設能源基地提供了強有力的保證。
從健康養生詞雲中我們發現作為寧夏特產的枸杞,具有一定的養生抗氧化功效。
從休閑生活詞雲中,我們發現寧夏作為旅遊勝地,吸引了大量年輕人前來拍照遊玩。
▍熱門推文總體上以積極正向為主
從變化的情況來看,2016年的推文積極正面的評價比例最低,為42%,消極負面評價的比例為58%,是歷年來最高的。
通過2016年推特的關鍵詞,我們發現負面的議題包括:驢友評論寧夏乾燥的天氣、寧夏部分地區犧牲環境換髮展、以及導遊強迫購物現象。
按照四個主題來看,在健康養生議題中,積極正面的評價為77.05%,略高於其他議題中正面評價的比例。同時可以看到休閑生活的負面評價比例最低。
▍熱門推文中只有四分之一表現出了明顯的情感
識別情感時,共有六種情感:anger(憤怒)、disgust(厭惡)、fear(恐懼)、joy(喜悅)、sadness(悲傷)和surprise(驚奇),在分析時會先為每條推文的每種可能情感打分。
如果六種情感可能性得分相差不大時,則情感類擬合為unknown(未知)。 如果某條推文被擬合得到某一類情感,該情感一定是強烈的情感。
從情感分析的結果來看,只有25.54%的推文表現出了強烈的情感。近四分之三的推文都沒有表現出強烈的情感,情感擬合為unknown。
歷時來看,隨著時間的推移,熱門推文表現出強烈情感的比例越來越多。在2008年,只有30.3%表達出了強烈的情感,而2016年,這個比例已經提升到42.8%。這表明,就寧夏地區議題而言,推特用戶越來越傾向於表達出強烈的情感。
▍從情感的比例情況來看,喜悅高居第一位,且有上升的趨勢
從所表達出來的情感來看,比例最高的情感是喜悅,佔比16.19%;其次為悲傷,佔4.49%。
joy呈現出逐年提高的趨勢, 這說明熱門推文中,含有喜悅情感的比例越來越多,而sadness呈現出小幅上下波動減小的態勢。
版權聲明:為拓端數據原創文章,未經允許不得轉載!
【拓端數據 http://tecdat.cn】第三方數據服務提供商,提供全面的統計分析與數據挖掘諮詢服務,為客戶定製個性化的數據解決方案與行業報告等。
帥的小夥伴都關注了拓端數據團隊^..^~
QQ交流群:186388004
微信公眾號:拓端數據
淘寶店鋪:大數據部落
微信客服號:lico_9e
之前NC報了個國創研究過。覺得難點在於情感這東西沒法量化、沒有統一的標準進行比較。優點就是論文好灌水
不太容易
推薦閱讀:
※開源|MultiNet模型解決自動駕駛中的道路分割、車輛檢測和街道分類(附源代碼)
※資訊理論與機器學習
※番外篇(6)——共軛梯度的效果
※Learn R | 機器學習中的人工神經網路(六)
TAG:機器學習 | 自然語言處理 | 深度學習DeepLearning |