關於情感分析的深度學習模型

企業最重要的目的之一就是與客戶羣保持聯繫。這些公司必須清楚地瞭解客戶對新老產品、最近的舉措以及客戶服務的看法。

情感分析是完成上述任務的方法之一

情感分析是自然語言處理(NLP)中的一個領域,它建立模型,試圖識別和分類語言表達中的屬性 e.g.:

  1. 極性:如果發言者表達了積極或者消極的意見

  2. 主題:正在被討論的事情

  3. 意見持有者:表達這個觀點的人或者團體

在我們每天產生2.5萬億字節數據的世界裏,情感分析已經成爲理解這些數據的關鍵工具。這使得公司能夠獲得關鍵的洞察力並自動化所有類型的流程。

情感分析可以使得無結構的信息,比如民衆關於產品、服務、品牌、政治和其他話題上的意見,自動轉變爲結構化的數據。這些數據對如市場分析、公共關係、產品意見、淨推薦值、產品反饋和顧客服務等商業應用非常有用。

接下來,我將向你們展示如何使用深度學習模型對 Netflix 評論進行正向和負向的分類。這個模型會把全部評論作爲輸入(每一個單詞),並且提供一個百分比的評分來檢測某個評論是在表達正向或負向的情緒。

我使用的數據集包含了大約5000條負向和5000條正向的評論。這裏有5個數據集中的樣本,這些樣本在文末做模型分類。

關於情感分析的深度學習模型
本文所使用的深度模型+全部所需的代碼都能在我的GitHub repo中找到。

下面先開始理論部分。

0 1

循環神經網絡

循環神經網絡(RNNs)是很受歡迎的模型,並且在很多NLP任務上已經取得了很好的表現。

循環神經網絡使用了序列信息,如文本。在傳統的前饋神經網絡中,我們假設所有的輸入是彼此獨立的。但是對很多任務而言,這是很不好的想法。舉個例子,一句話有完整的語法結構和順序,句子中每個詞都依賴於前一個詞。如果你想你的神經網絡能夠學習到意義(或者我們案例中的情感),神經網絡必須知道哪個詞按哪個順序出現。

循環神經網絡被叫做循環是因爲他們對序列中的每個元素都執行同樣的任務,並且輸出是依賴於之前的計算。其他的方式去理解循環神經網絡是它們有記憶,能夠獲取之前已經計算過的信息。這裏有一個經典的循環神經網絡:

關於情感分析的深度學習模型
圖1-循環神經網絡架構

x(t-1),x(t),x(t+1)是彼此依賴的輸入序列(例如句子中的單詞)。y(t_1),y(t),y(t + 1)是輸出。RNN的獨特之處在於,輸入x(t)的神經元的當前隱藏狀態h(t)的計算取決於先前輸入x(t-1)的先前隱藏狀態h(t-1)。Wxh和Whh是權重矩陣,其分別將輸入x(t)與隱藏層h(t)和h(t)與h(t-1)連接。通過這種方式,我們將神經網絡的重複引入,可以將其視爲先前輸入的記憶。

從理論上講,這種“vanilla”RNNs可以在任意長的序列中使用信息,但在實踐中,它們僅限於循環中的幾個步驟。

0 1

LSTMs

長短時記憶網絡-通常簡稱爲“LSTMs”一種特殊的RNN,能夠學習到長期依賴。LSTMs 與RNNs沒有根本不同的架構形式,但是它融合了額外的組件。

關於情感分析的深度學習模型
LSTM的關鍵是狀態單元C(t),即橫穿圖頂部的水平線。除了僅僅只使用隱藏狀態h(t)之外,單元狀態是額外的方式來存儲記憶。然而,與 “vanilla”RNN相比, C(t)使得LSTMs能夠在更長的序列上工作成爲可能。

更重要的是,LSTMs 可以在單元狀態上刪除或者增加信息,嚴格地被稱爲門的架構約束。門是一種可以選擇地讓信息通過的方式。一個LSTM有三種門結構,來保護和控制單元狀態。

  1. 遺忘門:在獲取之前的輸入x(t-1)的隱藏狀態h(t-1)後,遺忘門幫助我們決定該從h(t-1)中刪除什麼,只保留相關信息。

  2. 輸入門:在輸入門中,我們決定從當前輸入x(t)添加內容到我們當前單元狀態C(t)。

  3. 輸出門:正如名字所說一樣,輸出門決定從當前單元狀態C(t)輸出什麼到下一個C(t+1)。對於語言模型例子而言,因爲它只能看見一個主語,它可能希望看到一個和動詞有關的信息,來控制接下來要發生的情況。舉個例子,它可能輸出主語是單數還是複數,這樣我們就可以知道接下來的動詞應該變成什麼形式。

每一種狀態的背後都是獨立的神經單元。可以想象,這將會使得LSTMs變得相當複雜。在這一點上,我不會繼續深入講更多關於LSTMs的細節。

0 2

預處理

在我們用這些評論作爲循環神經網絡的輸入之前,對這些數據做一些預處理是有必要的。這裏我們的主要目的是減小觀測空間。

0 1

單詞的統一書寫

考慮像"Somethiing"和“something”這些單詞,對我們人來說,這些詞有着同樣的意思,它們之間唯一的區別是第一個字母是大寫,因爲它或許是句子中的第一個詞。但是對於神經網絡而言,由於不同的書寫,這些單詞將有(至少在開始的時候)不同的意思。只有在訓練階段,神經網絡纔可能學習到或者學習不到識別這些意思相同的詞。我們目的就是避免這些錯誤理解。

因此,預處理的第一步就是把所有字母都變成小寫字母。

0 2

刪除特殊字符

像. , ! ? '等等特殊字符,不能對一段評價的情感分析起到促進作用,因此可以被刪除。

最後結果

考慮以下未處理的評價例子:

關於情感分析的深度學習模型
我們做完上面所說的預處理步驟後,這個評價例子看起來如下所示:

關於情感分析的深度學習模型
預處理將會應用於數據集上的每個評價。

0 3

“詞—索引”映射

另一個重要步驟是創建稱爲“詞—索引”的映射,這個映射爲數據集中每一個單詞分配一個唯一的整數值。在我所使用的數據集中,全部的正向和負向評論共包含18339個不同的單詞。因此“詞—索引”映射有相同數量的條目。這個數量被稱爲詞彙數(vocabulary size)。

我得到的 “詞—索引”映射中的第一個和最後一個條目如下:

關於情感分析的深度學習模型
由於我們不能將字符串格式的數據輸入神經網絡,因此爲數據集中的單詞分配唯一整數值的步驟非常關鍵。通過“詞—索引”映射,我們可以使用整數代替字符來表示整個句子和評論。考慮以下評論:

關於情感分析的深度學習模型
使用”詞—索引”映射 , 可以用一個整數向量來表示這條評論,每一個整數表示映射中對應的單詞:

關於情感分析的深度學習模型
0 3

詞嵌入

當然,神經網絡既不能接受字符串,也不能接受單個整數值作爲輸入。我們必須使用詞嵌入(word embedding)向量來代替。

詞嵌入是一種分佈式的文本表示,這可能是深度學習方法在挑戰NLP問題上令人印象深刻的關鍵突破之一。詞嵌入實際上是一種用實值向量表示單詞的技術,通常具有數十或數百個維度。每個單詞被映射到一個特定的向量,向量值由神經網絡學習。

與單詞的稀疏表示方式不同,詞嵌入不需成千上萬的維度。例如,我們可以使用詞嵌入技術把單詞“although”和“life”表示成十維向量:

  1. although = [0.8 1.0 4.2 7.5 3.6]

  2. life = [8.3 5.7 7.8 4.6 2.5 ]

表示數據集中單詞的全部向量組成一個大型矩陣,稱爲嵌入矩陣(embedding-matrix)。該矩陣的行數表示詞嵌入的維數,列數表示詞彙量,或者說數據集中不同單詞的個數。因此,這個矩陣的每一列表示數據集中每個單詞相應的的嵌入向量。

我們應如何從矩陣中找出單詞對應的列?此時我們需要參考詞—索引映射。假設你想查找單詞“although”的嵌入向量,根據單詞—索引映射,單詞“although”由數字2511表示。接下來,我們需要創建一個長度18339爲的獨熱向量,這裏的向量長度等於數據集中的單詞數量,向量的第2511位取值爲1,其餘爲0。

通過對嵌入矩陣和獨熱編碼向量進行點積運算,我們得到矩陣中的第2511列,即爲單詞“although”的嵌入向量。

關於情感分析的深度學習模型
這樣我們就可以將整個字符串段落或Netflix評論提供給LSTM。我們只需在單詞到索引映射中查找每個單詞的整數值,創建適當的獨熱編碼向量並使用矩陣執行點積。然後將評論逐字(矢量形式)饋送到LSTM網絡中。
關於情感分析的深度學習模型
0 4

獲得評論情感

到目前爲止,你已經瞭解瞭如何預處理數據,以及如何將評論輸入LSTM網絡中。現在,讓我們討論一下如何獲得給定評論的情感。

對於每一個時間步長t,將向量x(t)輸入LSTM網絡中,得到輸出向量y(t)。在不同的步長上進行此操作,直到輸入向量爲x(n),n代表評論中全部單詞的長度。我們不妨假設n=20,直到輸入向量爲x(n),LSTM模型輸出向量y(n)爲止,全部20個向量中,每個向量都代表一定含義,但仍然不是我們所需要的評論中的情感。實際上,向量y是神經網絡生成的對評論特徵的編碼表示,這些特徵在判斷情感時非常重要。

y(8)表示評論中前8個單詞的神經網絡識別特徵。另一方面,y(20)表示評論整體的特性。儘管只使用最後一個輸出向量y(20)足以進行情感判斷,但我發現如果使用y(0) - y(20)的全部向量來確定情感,結果會更加準確。爲了使用全部向量,我們可以計算這些向量的均值向量。我們稱這個均值向量爲y_mean。

現在,均值向量y_mean可以用編碼的方式來表示評論中的特徵。我們需要在模型最後增加一個分類層,使用均指向量y_mean將評論劃分爲正向情感類和負向情感類。在最終的分類層中,需要將均值向量y_mean和權重矩陣W相乘。

以上描述的情感分析過程已經在我的GitHub repo上一個深度學習模型中實現。歡迎你來嘗試和復現。模型訓練完成後,可以對新的評論進行情感分析:

關於情感分析的深度學習模型

來源商業新知網,原標題:在 Netflix 評論中做情感分析的深度學習模型 | 洞見

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章