摘要:本篇博文從模型和算法的視角,分別介紹了基於統計方法的情感分析模型和基於深度學習的情感分析模型。
文本情感分析(Sentiment Analysis)是指利用自然語言處理和文本挖掘技術,對帶有情感色彩的主觀性文本進行分析、處理和抽取的過程。目前,文本情感分析研究涵蓋了包括自然語言處理、文本挖掘、信息檢索、信息抽取、機器學習和本體學等多個領域,得到了許多學者以及研究機構的關注,近幾年持續成為自然語言處理和文本挖掘領域研究的熱點問題之一。
從人的主觀認知來講,情感分析任務就是回答一個如下的問題“什么人?在什么時間?對什么東西?哪一個屬性?表達了怎樣的情感?”因此情感分析的一個形式化表達可以如下:(entity,aspect,opinion,holder,time)。比如以下文本“我覺得2.0T的XX汽車動力非常澎湃。”其中將其轉換為形式化元組即為(XX汽車,動力,正面情感,我,/)。需要注意的是當前的大部分研究中一般都不考慮情感分析五要素中的觀點持有者和時間。
情感分析問題可以划分為許多個細分的領域,下面的思維導圖展示了情感分析任務的細分任務:
其中詞級別和句子級別的分析對象分別是一個詞和整個句子的情感正負向,不區分句子中具體的目標,如實體或屬性,相當於忽略了五要素中的實體和屬性這兩個要素。詞級別情感分析,即情感詞典構建,研究的是如何給詞賦予情感信息。句子級/文檔級情感分析研究的是如何給整個句子或文檔打情感標簽。而目標級情感分析是考慮了具體的目標,該目標可以是實體、某個實體的屬性或實體加屬性的組合。具體可分為三種:Target-grounded aspect based sentiment analysis (TG-ABSA), Target no aspect based sentiment analysis (TN-ABSA), Target aspect based sentiment analysis (T-ABSA). 其中TG-ABSA的分析對象是給定某一個實體的情況下該實體給定屬性集合下的各個屬性的情感分析;TN-ABSA的分析對象是文本中出現的實體的情感正負向;T-ABSA的分析對象是文本中出現的實體和屬性組合。下表例舉了不同目標的情感分析任務:
基於統計方法的情感分析模型
基於統計方法的情感分析方法主要依賴於已經建立的“情感詞典”,“情感詞典”的建立是情感分類的前提和基礎,目前在實際使用中,可將其歸為4類:通用情感詞、程度副詞、否定詞、領域詞。英文方面主要是基於對英文詞典WordNet[1] 的擴充,Hu和Liu[2]在已手工建立種子形容詞詞匯表的基礎上,利用 WorldNet 中詞間的同義和近義關系判斷情感詞的情感傾向,並以此來判斷觀點的情感極性。中文方面則主要是對知網Hownet[3] 的擴充,朱嫣嵐[4]利用語義相似度計算方法計算詞語與基准情感詞集的語義相似度,以此推斷該詞語的情感傾向。此外,還可以建立專門的領域詞典,以提高情感分類的准確性,比如建立新的網絡詞匯詞典,來更准確的把握新詞的情感傾向。
基於情感詞典的方法,先對文本進行分詞和停用詞處理等預處理,再利用先構建好的情感詞典,對文本進行字符串匹配,從而挖掘正面和負面信息。其大致流程如圖所示:
這里處理上述的詞典外,下面[5]補充了現有的其它中文詞典以供參考:
當然也可以通過語料來自己訓練情感詞典。導入情感詞典后,我們需要利用情感詞典文本匹配算法進行情感分析。基於詞典的文本匹配算法相對簡單。逐個遍歷分詞后的語句中的詞語,如果詞語命中詞典,則進行相應權重的處理。正面詞權重為加法,負面詞權重為減法,否定詞權重取相反數,程度副詞權重則和它修飾的詞語權重相乘。利用最終輸出的權重值,就可以區分是正面、負面還是中性情感了。一個典型的利用情感詞典文本匹配算法進行情感分析的算法流程如下[5]:
基於統計方法的情感分析模型簡單易行,具有通用和泛化性,但是仍然存在如下三點主要的不足:
1 精度不高
語言是一個高度復雜的東西,采用簡單的線性疊加顯然會造成很大的精度損失。詞語權重同樣不是一成不變的,而且也難以做到准確。
2 詞典需要持續更新
對於新的情感詞,比如給力,牛逼等等,詞典不一定能夠覆蓋。因此需要不斷刷新詞典來補充新詞。在當下網絡詞匯不斷出現的時代,如果詞典的刷新速度跟不上新詞出現的速度,那么情感分析在實際使用中會與預期相差較大的距離。比如淘寶商品評價,餓了么外賣評價等,如果無法捕捉新詞,那么分析的情感將會偏離實際。
3 構建詞典困難
基於詞典的情感分類,核心在於情感詞典。而情感詞典的構建需要有較強的背景知識,需要對語言有較深刻的理解,在分析外語方面會有很大限制。
基於深度學習的情感分析模型
在了解了基於統計方法的情感分析模型優缺點之后,我們看一下深度學習文本分類模型是如何進行文本情感分析分類的。深度學習的一個優勢就是可以進行端到端的學習,而省略的中間每一步的人工干預步驟。基於預訓練模型生成的詞向量,深度學習首先可以解決的一個重要問題就是情感詞典的構建。下面我們會以集中典型的文本分類模型為例,展示深度文本分類模型的演進方向和適用場景。
2.1 FastText[6]
模型運行步驟:
2.2 TextCNN[7]
2.3 TextRNN[8]
2.4 TextRNN+Attention[9]
HAN為Hierarchical Attention Networks,將待分類文本,分為一定數量的句子,分別在word level和sentence level進行encoder和attention操作,從而實現對較長文本的分類。相比於上述的算法模型,HAN的結構稍微復雜一些,具體可以分解為以下步驟。
2.5 TextRCNN[10]
RCNN算法過程:首先,采用雙向LSTM學習word的上下文,利用前向和后向RNN得到每個詞的前向和后向上下文的表示:
詞的表示變成詞向量和前向后向上下文向量連接起來的形式:
之后再接跟TextCNN相同卷積層,pooling層即可,在seq_length維度進行 max pooling,然后進行fc操作就可以進行分類了,可以將該網絡看成是fasttext 的改進版本。
總結
本篇博文從模型和算法的視角,分別介紹了基於統計方法的情感分析模型和基於深度學習的情感分析模型。基於統計方法的情感分析模型簡單易用,但是在准確、靈活和泛化性上有較大的缺陷;基於深度學習的模型演進方向是不斷通過更深和復雜的網絡來捕捉上下文信息,同時借助於強大的預訓練模型生成的詞向量來訓練神經網絡來完成這項任務。下面的開源倉庫[13]詳細介紹了每一種模型的pytorch實現以及在相同的中文baseline上的對比;下面的兩篇博文[11][12]也是對其他情感分析深度學習模型進行了詳細介紹,可以作為進一步探索的指引。
參考文獻
[1]https://wordnet.princeton.edu/
[2]HU M,LIU B. Mining and summarizing customer reviews[C]. NY,USA:Proceedings of Knowledge Discoveryand Da-ta Mining,2004:168 - 177.
[3]https://languageresources.github.io/2018/03/07/
%E9%87%91%E5%A4%A9%E5%8D%8E_Hownet/
[4]朱嫣嵐,閔錦,周雅倩,等. 基於 How Net 的詞匯語義傾向計算[J]. 中文信息學報,2006,20(1):14 - 20
[5]https://blog.csdn.net/weixin_41657760/article/
details/93163519
[6]https://arxiv.org/abs/1612.03651
[7]https://arxiv.org/abs/1408.5882
[8]https://www.ijcai.org/Proceedings/16/Papers/408.pdf
[9]https://www.aclweb.org/anthology/P16-2034/
[10]http://zhengyima.com/my/pdfs/Textrcnn.pdf
[11]https://zhuanlan.zhihu.com/p/76003775
[12]https://zhuanlan.zhihu.com/p/73176084
[13]https://github.com/649453932/Chinese-Text-Classification-Pytorch
本文分享自華為雲社區《NLP專欄丨情感分析方法入門下》,原文作者:就挺突然 。