前言
深度學習(深度神經網絡)作為機器學習的一個重要分支,推動了很多領域的研究和應用,其中包括文本處理領域的情感分類問題。由于可以對文本進行更有效地編碼及表達,基于深度學習的情感分類對比傳統的淺層機器學習和統計學方法,可以取得更高的分類準確率。當前,情感分析在互聯網業務中已經具有比較廣泛的應用場景,成為了一個重要的業務支持能力。
文本情感分析的發展與挑戰
1.情感分析的發展
情感分析(Sentiment Analysis),也稱為情感分類,屬于自然語言處理(Natural Language Processing,NLP)領域的一個分支任務,分析一個文本所呈現的信息是正面、負面或者中性,也有一些研究會區分得更細,例如在正負極性中再進行分級,區分不同情感強度。
在 2000 年之前,互聯網沒有那么發達,積累的文本數據不多,因此,這個問題被研究得較少。2000 年以后,隨著互聯網大潮的推進,文本信息快速積累,文本情感分析的研究也開始快速增加。早期主要是針對英文文本信息,比較有代表性的,是 Pang, Lee and Vaithyanathan (2002) 的研究,第一次采用了 Naive Bayes(樸素貝葉斯), Maximum Entropy(最大熵)和SVM(Support Vector Machine, 支持向量機)等方法對電影評論數據進行了情感分類,將之分為正面或者負面。2000-2010 年期間,情感分析主要基于傳統的統計和淺層機器學習,由于這些方法不是本文闡述的重點,因此,本文就不再展開介紹。
2010 年以后,隨著深度學習的崛起和發展,情感分析開始采用基于深度學習的方法,并且相對于傳統的機器學習方法取得了更好的識別準確率。
2.中文文本情感分析的難點
由于漢語博大精深,從傳統方法的角度來看,中文文本的情感分析有多個難點:
(1)分詞不準確:中文句子由單個漢字組成,通常第一個要解決的問題,就是如何“分詞”。但是,由于漢字組合的歧義性,分詞的準確率一直難以達到完美的效果,而不準確的分詞結果會直接影響最終分析的結果。
(2)缺乏標準完整的情感詞庫:與中文相比,英文目前有相對比較完整的情感詞庫,對每個詞語標注了比較全面的情感類型、情感強度等。但是,中文目前比較缺乏這樣的情感詞庫。同時考慮到語言的持續發展的特性,往往持續不斷地產生新的詞語和表達方式,例如,“陳獨秀,坐下”,“666”,它們原本都不是情感詞,在當今的互聯網環境下被賦予了情感極性,需要被情感詞庫收錄。
(3)否定詞問題:例如,“我不是很喜歡這個商品”和“我很喜歡這個商品”,如果基于情感詞的分析,它們的核心情感詞都是“喜歡”,但是整個句子卻表達了相反的情感。這種否定詞表達的組合非常豐富,即使我們將分詞和情感詞庫的問題徹底解決好,針對否定詞否定范圍的分析也會是一個難點。
(4)不同場景和領域的難題:部分中性的非情感詞在特定業務場景下可能具有情感傾向。例如,如下圖的一條評論“(手機)藍屏,充不了電”,藍屏是一個中性名詞,但是,如果該詞在手機或者電腦的購買評價中如果,它其實表達了“負面”的情感,而在某些其他場景下還有可能呈現出正面的情感。因此,即使我們可以編撰一個完整的“中文情感詞典”,也無法解決此類場景和領域帶來的問題。
上述挑戰廣泛存在于傳統的機器學習與深度學習方法中。但是,在深度學習中,有一些問題可以得到一定程度的改善。
中文分詞概述
一般情況下,中文文本的情感分類通常依賴于分析句子中詞語的表達和構成,因此需要先對句子進行分詞處理。不同于英文句子中天然存在空格,單詞之間存在明確的界限,中文詞語之間的界限并不明晰,良好的分詞結果往往是進行中文語言處理的先決條件。
中文分詞一般有兩個難點,其一是“歧義消解”,因為中文博大精深的表達方式,中文的語句在不同的分詞方式下,可以表達截然不同的意思。有趣地是,正因如此,相當一部分學者持有一種觀點,認為中文并不能算作一種邏輯表達嚴謹的語言。其二是“新詞識別”,由于語言的持續發展,新的詞匯被不斷創造出來,從而極大影響分詞結果,尤其是針對某個領域內的效果。下文從是否使用詞典的角度簡單介紹傳統的兩類中文分詞方法。
1.基于詞典的分詞方法
基于詞典的分詞方法,需要先構建和維護一套中文詞典,然后通過詞典匹配的方式,完成句子的分詞,基于詞典的分詞方法有速度快、效率高、能更好地控制詞典和切分規則等特性,因此被工業界廣泛作為基線工具采用。基于詞典的分詞方法包含多種算法。比較早被提出的有“正向最大匹配算法”(Forward Maximum Matching,MM),FMM 算法從句子的左邊到右邊依次匹配,從而完成分詞任務。但是,人們在應用中發現 FMM 算法會產生大量分詞錯誤,后來又提出了“逆向最大匹配算法”(Reverse Maximum Matching,RMM),從句子右邊往左邊依次匹配詞典完成分詞任務。從應用的效果看,RMM 的匹配算法表現,要略為優于 MM 的匹配算法表現。
一個典型的分詞案例“結婚的和尚未結婚的”:
FMM:結婚/的/和尚/未/結婚/的 (分詞有誤的)
RMM:結婚/的/和/尚未/結婚/的 (分詞正確的)
為了進一步提升分詞匹配的準確率,研究者后來又提出了出了同時兼顧 FMM 和 RMM 分詞結果的“雙向最大匹配算法” (Bi-directctional Matching,BM ),以及兼顧了詞的出現頻率的“最佳匹配法”(Optimum Matching,OM)。
2.基于統計的分詞方法
基于統計的分詞方法,往往又被稱作“無詞典分詞”法。因為中文文本由漢字組成,詞一般是幾個漢字的穩定組合,因此在一定的上下文環境下,相鄰的幾個字出現的次數越多,它就越有可能成為“詞”。基于這個規則可以通過算法構建出隱式的“詞典”(模型),從而基于它完成分詞操作。該類型的方法包括基于互信息或條件熵為基礎的無監督學習方法,以及 N 元文法(N-gram)、隱馬爾可夫模型(Hiden Markov Model,HMM)、最大熵模型(Maximum Entropy,ME)、條件隨機場模型(Conditional Random Fields,CRF)等基于監督學習的模型。這些模型往往作用于單個漢字,需要一定規模的語料支持模型的訓練,其中監督學習的方法通過薛念文在 2003 年第一屆 SIGHAN Bakeoff 上發表的論文所展現出的結果開始持續引起業內關注。效果上,這些模型往往很善于發現未登錄詞,可以通過對大量漢字之間關系的建模有效“學習”到新的詞語,是對基于詞典方法的有益補充。然而它在實際的工業應用中也存在一定的問題,例如分詞效率,切分結果一致性差等。
基于多層 LSTM 的中文情感分類模型原理
在前述分詞過程完成后,就可以進行情感分類了。我們的情感分類模型是一個基于深度學習(多層 LSTM)的有監督學習分類任務,輸入是一段已經分好詞的中文文本,輸出是這段文本正面和負面的概率分布。整個項目的流程分為數據準備、模型搭建、模型訓練和結果校驗四個步驟,具體內容會在下文中詳細展開。由于本文模型依賴于已切分的中文文本,對于想要動手實現代碼的讀者,如果沒有分詞工具,我們建議讀者使用網上開源的工具。
1.數據準備
我們基于 40 多萬條真實的鵝漫用戶評論數據建立了語料庫,為了讓正面和負面的學習樣本盡可能均衡,我們實際抽樣了其中的 7 萬條評論數據作為學習樣本。一般情況下,對于機器學習的分類任務,我們建議將學習樣本比例按照分類規劃為 1:1,以此更好地訓練無偏差的模型。
模型的輸入是一段已經分詞的中文文本,但它無法直接被模型識別,因此我們要將它轉換成一種能被模型識別的數學表達。最直接的方式是將這些文本中的詞語用“One-Hot Key”進行編碼。One-Hot Key是一種比較簡單的編碼方式,假設我們一共只有5個詞,則可以簡單地編碼為如下圖所示:
在一般的深度學習任務中,非連續數值型特征基本采用了上述編碼方式。但是,One-Hot Key 的編碼方式通常會造成內存占用過大的問題。我們基于 40 多萬條用戶評論分詞后獲得超過 38000 個不同的詞,使用 One-Hot Key 方式會造成極大的內存開銷。下圖是對 40 多萬條評論分詞后的部分結果:
因此,我們的模型引入了詞向量(Word Embeddings)來解決這個問題,每一個詞以多維向量方式編碼。我們在模型中將詞向量編碼維度配置為 128 維,對比 One-Hot Key 編碼的 38000 多維,無論是在內存占用還是計算開銷都更節省機器資源。作為對比,One-Hot key 可以粗略地被理解為用一條線表示 1 個詞,線上只有一個位置是 1,其它點都是 0,而詞向量則是用多個維度表示 1 個詞。
這里給大家安利一個很好的資源,由騰訊AI Lab去年10月發布的大規模中文詞向量,可以對超過800萬詞進行高質量的詞向量映射,從而有效提升后續任務的性能。
https://ai.tencent.com/ailab/nlp/embedding.html
假設我們將詞向量設置為 2 維,它的表達則可以用二維平面圖畫出來,如下圖所示:
2.模型搭建
本項目的代碼采用了 Keras 實現,底層框架是 Google 開源的 TensorFlow。整個模型包含 6 層,核心層包括 Embedding 輸入層、中間層(LSTM)、輸出層(Softmax)。模型中的 Flatten 和 Dense 層用于做數據維度變換,將上一層輸出數據變換為相應的輸出格式,最終的輸出是一個二維數組,用于表達輸入文本是正面或者負面的概率分布,格式形如 [0.8, 0.2]。
Keras的模型核心代碼和參數如下:
EMBEDDING_SIZE=128HIDDEN_LAYER_SIZE=64model=Sequential()model.add(layers.embeddings.Embedding(words_num,EMBEDDING_SIZE,input_length=input_data_X_size))model.add(layers.LSTM(HIDDEN_LAYER_SIZE,dropout=0.1,return_sequences=True))model.add(layers.LSTM(64,return_sequences=True))#model.add(layers.Dropout(0.1))model.add(layers.Flatten())model.add(layers.Dense(2))#[0,1]or[1,0]model.add(layers.Activation('softmax'))model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])model.summary()model.fit(X,Y,epochs=1,batch_size=64,validation_split=0.05,verbos
模型架構如下圖:
該模型的核心層采用 LSTM (Long short-term memory,長短記憶模型),LSTM 是 RNN (Recurrent neural network,循環神經網絡)的一種實現形式,具有“記憶時序”的特點,可以學習到數據上下文之間的關聯關系。例如,在含有前置否定詞的句子“我喜歡”和“我不是很喜歡”中,雖然“喜歡”這個詞表達了正面的情感含義,但是句子前面出現的否定詞卻更重要,否定詞會使語句表達的情感截然相反。LSTM 可以通過上下文學習到這種組合規律,從而提高分類準確率。
模型其他幾個層的含義本文也簡單列出:
Flatten(壓平層),在本模型中負責將 2 階張量壓縮為 1 階級張量(20*64 = 1280):
Dense(全連接層),通常用于做維度變換,在本模型中將 1280 維變為 2 維。
Activation(激活函數),本模型采用 Softmax,它負責將數值約束到 0-1 之間,并且以概率分布的方式輸出。
3.模型訓練
由于我們的模型架構比較簡單,模型的訓練耗時不高,在一臺 8 核 CPU + 8G 內存的機器上完成一輪 7 萬多個評論樣本的訓練只需 3 分鐘左右。訓練得到的模型在測試集上可以獲得大約 96% 的情感分類準確率,而基于傳統機器學習方法的準確率通常只有 75-90%。值得注意的是,本模型并不是一個可以識別任意文本的通用模型,因為我們構建的學習樣本基本上只覆蓋鵝漫用戶評論語料范圍內的詞,超出語料范圍的分類準確率可能會顯著降低。
測試集情感分類的部分結果(數值代表該評論是正面情感的概率):
文本表述中含有否定詞的識別場景:
關于部分“中性詞”在某些業務情景下擁有情感傾向的問題,利用本文的模型可以較好地處理,因為本文的模型可以通過學習得到所有詞(包括情感詞和一般詞)的情感傾向。
例如,下圖中的“坑爹”一詞,在模型中已經被明顯地識別為“負面”情感詞(0.002 表示該詞屬于正面情感的概率僅有千分之二),而“666”則被識別為正面情感詞(概率系數大于 0.5 則屬于正面情感)。
業務應用場景與擴展展望
1.業務應用場景
在鵝漫U品業務場景中,用戶完成商品購買后通常會對商品進行評論,一般情況下,我們的客服和商家會對差評評論進行一定處理和回復。但是,真實的用戶評論數據中存在一種特殊的好評,我們稱之為“假好評”,用戶評論表述的內容是差評,可能由于頁面點擊失誤或者其他原因卻在評論分類上選擇了“好評”,從而導致這種評論沒有被正確歸類,因此,客服和商家同學沒辦法處理到這類評論。從鵝漫的評論數據看,這類“假好評”的比例大概占據全部評論數據的 3%。考慮到鵝漫業務每天產生巨量評論,如果依靠人工甄別的處理方式將非常費時費力,通過自動情感分類的則可以有效解決該問題。
鵝漫另外一個業務場景是自動提取“深度好評”:我們直接通過全量數據掃描獲取正面情感系數高,并且評論字數較多的評論文本,將它們作為商品的“深度好評”。這類評論通常對產品的體驗和描述較為詳盡,適合放在商品頁面更顯眼的位置,能有效提升瀏覽用戶對商品的了解。同時,自動提取評論也能一定程度上減輕商品運營人員撰寫運營文案的工作量,尤其是在商品數量較多的情況下。反之亦如此,如果我們提取負面情感系數較高且字數較多的評論,則可以獲得“深度差評”,它可以作為商品運營人員了解用戶負面反饋的一種有效渠道。
例如下圖的“彈幕”評論,就是我們自動提取的“好評”:
值得提出的是,目前,鵝漫也在使用騰訊 AI Lab 提供的通用版情感分類接口,它的模型不依賴于分詞,直接以字為單元進行建模和訓練,情感分類的準確率非常高,適用范圍更廣。我們通過聯合使用兩個不同模型的分類結果完成更高質量的情感分析。
2.未來擴展方向
我們從海量的文本評論中,歸類出了正面和負面情感的文本數據,在此基礎上如果再通過針對商品不同方面(aspect)的評論的建模乃至句法依存分析(dependency parsing),進一步提煉文本的關鍵信息,就可以獲得用戶的關鍵表達意見。從中我們可以獲得比較全面的商品評價信息,提煉出商品被大量用戶正面評價和負面評價的主要觀點,最終可以為運營人員和商家提供商品改進意見和運營決策指導。實現真正意義上的基于商品的輿情分析(opinion summary),提煉出用戶的真實反饋和觀點。
下圖以“我們一直喜歡美麗的手辦”為例,通過詞法依存分析,獲得了詞與詞之間的關系,進而分析出用戶在評論中傾訴情緒的核心對象。在下圖的評論中,用戶對“手辦”表達了正面的情感。
詞法關系的含義:
SBV,主謂關系
ADV,修飾(狀語)
HED,核心
ATT,修飾(定語)
RAD,右附加關系
VOB,直接賓語
結語
在互聯網海量信息和數據面前,人的力量非常有限并且成本高昂,例如,鵝漫U品評論情感分類和提取的兩項業務需求,就是面向海量文本信息處理的典型任務,如果通過人工完成,執行效率極為低下。深度學習模型使我們良好地滿足了業務訴求。雖然深度學習并非完美,但是它所提供的執行效率和幫助是顯著的,并在一定的業務場景下成為輔助解決業務問題的新選擇和新工具。
-
騰訊
+關注
關注
7文章
1652瀏覽量
49423 -
機器學習
+關注
關注
66文章
8406瀏覽量
132565 -
深度學習
+關注
關注
73文章
5500瀏覽量
121113
原文標題:QQ賣手辦,用AI分析用戶評論
文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論