轉(zhuǎn)帖|使用教程|編輯:我只采一朵|2017-07-11 15:39:23.000|閱讀 397 次
概述:情感計算是實現(xiàn)人性化的人機交互過程中必不可少的部分,情感識別與理解技術(shù)也是人機交互的基礎(chǔ)性技術(shù)之一。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
撰稿:竹間智能自然語言與深度學(xué)習(xí)小組
在談?wù)撉楦杏嬎阒?,先來說說情感本身在人類信息溝通中的意義。
情感對于人類的智力、理性決策、社交、感知、記憶和學(xué)習(xí)以及創(chuàng)造都有很重要的作用,甚至有研究顯示「人類交流中 80% 的信息都是情感性的信息」。但為什么不是內(nèi)容,而是情感能傳遞最多的狀態(tài)信息呢?其實從認(rèn)知科學(xué)角度來看,情感本身是高級智能的一部分。作為大腦運行資源的調(diào)配者,情感狀態(tài)的不同會導(dǎo)致大腦計算和分配資源的方式有巨大差異,思維執(zhí)行路徑也會完全不同。另外,人類進化使其情感判斷的準(zhǔn)確性不斷提高,不斷的正向反饋也使得我們越來越依賴用識別對方情感的方法來判斷其行為傾向,甚至已經(jīng)成為自動運行的認(rèn)知方式了。
由于情感在人類信息溝通中的意義重大,所以情感計算是實現(xiàn)人性化的人機交互過程中必不可少的部分,情感識別與理解技術(shù)也是人機交互的基礎(chǔ)性技術(shù)之一。在此基礎(chǔ)上,「需求分析」、「深度用戶建?!?、「情感表達(dá)」、「人性化交互體驗」等更深入的交互設(shè)計才能成為可能。
人性化交互體驗的應(yīng)用方向是不言自明的,當(dāng)智能體的「智商」沒有過于顯著的差別的時候,一個稍微有些情商的智能系統(tǒng)就會更容易被選擇。當(dāng)然這一點的實現(xiàn)需要一整套的情感分析系統(tǒng)。
一般情況下,我們探討的情感分析多指文本中的情感分析,但多維度的情感分析,如文字+圖片+表情+顏文字的綜合分析,文本+語音+圖像的綜合,即多模態(tài)情感分析,是目前來說,比較前沿和更為重要的情感分析的研究方向。
對于多模態(tài)情感分析研究的必要性,這里需要提一個概念——「情感帶寬」,即人類能表達(dá)的情感的信息量的大小和維度。比如面對面交流時,情感性的信息往往是從語音語調(diào)、面部表情、肢體等多個維度表達(dá)出來的。然而到了人機交互中,情感寬帶的整個范式會發(fā)生較大的變化,如通過人機對話系統(tǒng)交流時,少了肢體這個維度,人類的情感帶寬似乎瞬間驟降了。但實際上也增加了幾個新的輸出維度,如圖片、表情包、回復(fù)時間的長短等。
除自然語言理解技術(shù)外,人機交互的另一困難就是信息維度的稀疏性。因此人機交互中情感分析應(yīng)盡可能從多個維度入手,將缺失的情感帶寬補上——多模態(tài)情感分析成為一個重要的研究方向。內(nèi)部的多模態(tài)分析即 emoji+照片+表情包+文本長度等,外部的多模態(tài)即加入面部表情識別+提供的標(biāo)簽(性格,愛好,年齡等)+語音等。如竹間智能在構(gòu)建基于自然語言理解技術(shù)的人機交互系統(tǒng)時,加入多模態(tài)情感分析技術(shù)(文字、語音、圖像),打破了以往情感識別在單一文本維度上的局限性,讓機器能進一步讀懂、聽懂、看懂人類,從而達(dá)到了更好的人機交互效果。
深度學(xué)習(xí)在情感分析中的應(yīng)用已經(jīng)較為普遍了,如利用 LSTM 結(jié)合句法分析樹、基于卷積神經(jīng)網(wǎng)絡(luò)和支持向量機等。一般情況下,對于各種方法的綜合創(chuàng)新應(yīng)用,能達(dá)到取長補短的效果,進而能夠提高情感分析的準(zhǔn)確率,另外還能從無標(biāo)注的文本里學(xué)習(xí)到其中的隱藏特征,以實現(xiàn)端到端的分類。
文本情感分析最常見的 dataset 是 IMDB Movie Reviews,那么該如何入手與練習(xí)呢?下面以 python 為例,從簡單的文本情感分析說起。
前置作業(yè):
1. 先安裝 Keras (//keras.io/),Keras 是一個 high-level networks API,底層使用了 Tensorflow, CNTK, 或 Theano 運算 (這取決于具體安裝了哪一個)。
Keras 的安裝指南: //keras.io/#installation
2. 當(dāng) Keras 已安裝完畢,則 IMDB 可由此方式入手 (//keras.io/datasets/)。此 API 的底層://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 的詳細(xì)原理,在此不加贅述,有興趣的朋友,可以參考這篇文章://colah.github.io/posts/2015-08-Understanding-LSTMs/
以下會使用 RNN 的 concept 來解 sentiment analysis 的問題。
example: 假設(shè),使用者輸入:「我今天好傷心」,分詞完的結(jié)果是「我 今天 好 傷心」,則我們希望 model 可以輸出「難過」。model 里面的簡單運算概念如下圖所示。LSTM 會一直把資訊往后傳,并擁有記憶功能,最后整合所有資訊后,再做出判斷。
透過 Keras,可以快速建出上面的模型:
Bi-directional LSTM
Bi-directional LSTM 和 LSTM 非常類似,只是把句子透過兩個不同方向來看,如下圖所示:
這種做法有一個好處,以這句話「我今天好傷心」為例,重點剛好在句尾。但如果換一個句子,「真開心,明天要出去玩了」,此句的重點則在句首。因此,可以用 Bi-directional LSTM 來處理這種問題。
一樣,透過 Keras,可以快速建出這種模型:
CNN
近年來 CNN 在影像領(lǐng)域大有突破,不過也有人把 CNN 的方法應(yīng)用到文字處理上面。在此先分享一篇 arxiv 上的文章,「Recent Advances in Convolutional Neural Networks」,于 2017 年年初做了更新://arxiv.org/pdf/1512.07108.pdf
里面對 CNN 做了 overview,同時在「5.10. Natural Language Processing」對 NLP 做了些整理。
然后我們回歸主題,怎么使用 CNN 來做情感分類呢?
不過,從實作面的角度來看,透過 Keras,CNN 的原理也不是太重要,只要找對 API 即可 (Conv1D)。在以下這個實作范例中,大約需要 20 行的代碼,即可建出這個 model:
完整代碼://github.com/fchollet/keras/blob/master/examples/imdb_cnn.py
CNN-LSTM
上面介紹完 LSTM & CNN,那是不是有辦法可以把兩者的特性結(jié)合起來,融合成一個 CNN-LSTM 的 model?透過 Keras,當(dāng)然還是可以的!
完整代碼: //github.com/fchollet/keras/blob/master/examples/imdb_cnn_lstm.py
以上主要分享了比較普遍的實作面內(nèi)容,也許能夠幫助大家解決手頭上的問題。不過上面用 LSTM 與 CNN 來解 sentiment analysis 的問題大約是近 5 年內(nèi)發(fā)展的技術(shù),不是最近最新的技術(shù)。
關(guān)于多模態(tài)情感分析:最直覺的做法,就是把文本、語音、圖像的原始輸入資料,利用深度學(xué)習(xí)的技術(shù),映射到共同的 feature space 中。以文本的例子來說,原始輸入的文字,使用分詞(前處理)轉(zhuǎn)成字符與字元后,透過一層 embedding layer 映射到向量空間,可以使用 CNN 去擷取里面的信息。同理,以圖像為例子,原始輸入的照片,利用影像前處理 (ex: whitening) 后,再使用 CNN 去擷取里面的訊息。
本文轉(zhuǎn)載自:36大數(shù)據(jù)
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@ke049m.cn