比樸素貝葉斯更優秀的情感分析方法?答案在這裡
作者|Samuel Pilcer
譯者 & 編輯|Debra
AI 前線導讀:根據線上評論和評分,我們可以為客戶提供關於其信譽度的深刻見解。我們會拆解評論文字瞭解評論的內容,並告訴我們的客戶他們的客戶在談論什麼,以及這些客戶對其關鍵業務的滿意度。
更多幹貨內容請關注微信公眾號“AI 前線”(ID:ai-front)
例如,我們可以為客戶識別提及價格的 100 條評論,通過分析這些評論的星級,我們可能會發現 80%的評論是積極的,評論的平均評分為 4.0。但是,這種方法仍有改進的空間:提及價格的積極評價不一定代表對價格滿意。例如:
食物很棒,服務絕對優秀。但是這家咖啡店風格的餐廳價格非常高。
這個 5 星的評價顯然是對餐廳的價格不太滿意。我們需要一個模型來告訴我們句子或子句表達的情緒,以瞭解是哪些元素影響了評分等級。下面是我們為構建自己的情感挖掘工具而開發並使用的一些技術。
情感分析:瞭解線上使用者表達的情緒
樸素貝葉斯分類器
樸素貝葉斯是首選,也是最容易進行文字情感分類的方法。它基於條件概率的貝葉斯公式:
我們用 Bag of Words 來表示一個文字,它是句子中每個單詞 w 的一個特徵“單詞出現 f 次”,f 是句子中 w 出現的頻率。假設樸素貝葉斯認為這些特徵是獨立的,這個公式可以幫助我們推斷出句子為正的概率(A)即每個 w 中 w 出現了 f 次(B)。實際上,我們可以根據頻率從足夠大的資料集中推匯出句子為正(A)的概率,每個特徵的概率,以及是它們重合(B)的概率。在 10000 個已註釋句子的訓練集上訓練該模型,我們得到一組資訊特徵,這有助於預測句子是正面還是負面評價。以下是我們獲得的 10 個最有代表性的特徵:
樸素貝葉斯分類器的資訊特徵
這種方法最容易實現,它最大的優點在於完全透明。在處理時我們會知道分類器發現了一組包含強烈的正面或強烈負面資訊的單詞,所以我們可以用這種方法對句子進行分類。
如何改進
但是,這種方法有幾個缺點。
首先, 它無法確定中立信息 。事實上,詞語可以具有正面或負面的意義(“好”,“太棒了”,“可怕”……),但有些詞是中性的。通常情況下,正是缺乏這種帶有積極或消極意義的詞彙或句子結構,才讓句子缺失了明確的情感意義。但 Bag of Words 表示不能解決這個問題。
它也無法理解強度和否定意義。例如,“比較好”和“相當好”,第一個比第二個詞彙出現在正面語句中的機率更大。我們嘗試了一些方法來解決這個問題:新增一個有意義的雙字母組列表(這意味著我們將“非常好”作為單個單詞讀取),或者在雙字母組上訓練模型而不是在單個單詞上訓練,但兩者對我們的模型都沒有太大的改進。大多數情況下模型無法識別否定,因為它不考慮單詞順序。
最重要的是,樸素貝葉斯模型在解決區域性情緒分析問題方面表現不佳。在長篇文章中,具有高頻率的積極情緒詞,如“非常好的”、“美味”等很可能表達了作者積極的情緒。但是,由於我們的目標是確定 local sentiment,我們需要處理短句和子句的工具。(星級評分可以告訴我們作者的整體情緒。)句子中沒有足夠的詞彙,所以我們需要非常精確地理解語義結構。
Bag of Words 表示是一種非常糟糕的方法。例如,“食物本可以更美味”這個句子,模型檢測到與正面感覺有關的“美味”這個詞,但不明白“本可以”表示一種否定或細微差異。許多短句都是這樣的,僅依靠小型句子資料集會把準確率從大約 77%拉低到小於 65%。
基於規則的情緒模型
為了改善樸素貝葉斯方法並使其適合短句情緒分析,我們添加了一些規則,加入否定、強度標記(“更多”、“極端”、“絕對”、“最”等)、細微差別和其他語義結構,以及經常出現在情緒短語附近並改變其含義的語義結構。例如,在“食物不是很美味”中,我們需要明白“不太好吃”比“不好吃”或“根本不好吃”更積極一點。
我們利用樸素貝葉斯訓練的結果建立了一個積極和消極的詞彙庫。當處理給定的句子時,我們將每個單詞打為正分或負分,並通過基於開源庫 spaCy 的管道進行語音結構的精確分析來計算總分數,用於詞性標註和依賴性分析。結果,我們得到了正、負和中性分數的引數,中性分數被定義為句子中既不是正面也不是負面情緒單詞的比例。我們使用深度學習技術從訓練集中推匯出這些得分與情緒之間的關係。以下是我們針對消極、中性和正面情緒句子獲得的圖表:
該模型可以幫助我們很好地判斷一個表達性句子包含的是正面還是負面情緒(準確度約為 75%),但是很難理解中性或缺乏情感的句子(在我們的測試集中,這類句子識別的準確率只有 20%) 。這種方法比樸素貝葉斯要好得多,但 75% 仍然低於當前最新的正向 / 負向決策技術。
原文連結:
https://medium.com/@samuelpilcer/sentiment-analysis-frequency-based-models-288c0accdd12