文字情感分析是對帶有主觀感情色彩的文字進行分析、處理、歸納和推理的過程。網際網路上每時每刻都會產生大量文字,這其中也包含大量的使用者直接參與的、對人、事、物的主觀評價資訊,比如微博、論壇、汽車、購物評論等,這些評論資訊往往表達了人們的各種主觀情緒,如喜、怒、哀、樂,以及情感傾向性,如褒義、貶義等。基於此,潛在的使用者就可以通過瀏覽和分析這些主觀色彩的評論來了解大眾輿論對於某一事件或產品的看法。
百分點認知智慧實驗室基於前沿的自然語言處理技術和實際的演算法落地實踐,真正實現了整體精度高、定製能力強的企業級情感分析架構。從單一模型到定製化模型演變、文字作用域優化、多模型(相關度)融合、靈活規則引擎、以及基於實體的情感傾向性判定,探索出了一套高精準、可定製、可干預的智慧分析框架,為輿情客戶提供了高效的預警研判服務。
一、情感分析概述
文字情感分析,即 Sentiment Analysis(SA),又稱意見挖掘或情緒傾向性分析。針對通用場景下帶有主觀描述的中文文字,自動判斷該文字的情感極性類別並給出相應的置信度,情感極性分為積極、消極、中性等。
在文字分析的基礎上,也衍生出了一系列細粒度的情感分析任務,如:
- 基於方面的情感分析(ABSA):一般稱作 Aspect Based Sentiment Analysis。旨在識別一條句子中一個指定方面(Aspect)的情感極性。常見於電商評論上,一條評論中涉及到關於價格、服務、售後等方面的評價,需要區分各自的情感傾向。
- 基於實體的情感傾向性判定(ATSA): 一般稱作 Aspect-Term Sentiment Analysis。對於給定的情感實體,進行情感傾向性判定。在一句話中不同實體的情感傾向性也是不同的,需要區別對待。
▶ 核心目標和價值
輿情繫統的最核心需求,是能夠精準及時的為客戶甄別和推送負面,負面識別的準確性直接影響資訊推送和客戶體驗,其中基於文字的情感分析在輿情分析中的重要性不言而喻,下圖簡要展示了文字分析以及情感分析在輿情體系中的作用。
輿情資料通過底層的大資料採集系統,流入中間層的 ETL 資料處理平臺,經過初級的資料處理轉化之後,向上進入資料探勘核心處理環節;此階段進行資料標準化、文字深度分析,如地域識別、智慧分詞、情感判定、垃圾過濾等,經過文字處理的結果,即脫離了原始資料的狀態,具備了客戶屬性,基於客戶定製的監測和預警規則,資訊將在下一階段實時的推送給終端客戶,負面判定的準確度、召回率,直接影響客戶的服務體驗和服務認可度。
▶ 難點與挑戰輿情業務中的情感分析難點,主要體現在以下幾個方面:1. 輿情的客戶群體是複雜多樣的,涉及行業多達24個(如下圖所示),不同行業資料特點或敏感判定方案不盡相同,靠一個模型難以解決所有問題;2. 輿情監測的資料型別繁多, 既有常規的新聞、微信公眾號等媒體文章資料,又有偏口語化的微博、貼吧、問答資料,情感模型往往需要針對不同渠道型別單獨訓練優化,而渠道粒度的模型在不同客戶上效果表現也差別巨大;3. 客戶對情感的訴求是有差異的,有些客戶會有自己專屬的判定條件。通用的情感模型難以適應所有客戶的情感需求。4. 隨著時間推移,客戶積累和修正的情感資料難以發揮價值。無法實現模型增量訓練和效能的迭代提高。5. 對於關注品牌、主體監測客戶,需要進行特定目標(實體)情感傾向性(ATSA)判定。那麼資訊抽取就是一個難題。6. 對於新聞類資料,通常存在標題和正文兩個文字域。如何提取有價值的文字資訊作為模型輸入也是面臨的困難。
二、情感分析在百分點輿情的發展歷程
從2015年開始,百分點輿情便開始將機器學習模型應用在早期的負面判定中;到2020年,我們已經將深度遷移學習場景化和規模化,也取得了不錯的成果;
2015年:抓取百萬級別的口碑電商評論資料,使用邏輯迴歸進行建模,做為情感分析的BaseLine;
2016年:主要側重於技術上的遞進,進入深度學習領域。引入word2vec在大規模語料集上進行訓練,獲得具有更好語義資訊的詞向量表示,替代基於Tfidf等傳統的統計特徵。隨後在TextCnn、TextRnn等深度學習演算法進行更新迭代,儘管得到數字指標的提高,但是對於實際業務的幫助還是不足。
2017年:結合輿情全業務特點,需要能做到針對品牌、主體的情感監測。提出 Syntax and Ruler-based Doc sentiment analysis的方式,依據可擴充的句法規則以及敏感詞庫進行特定的分析。該方式在敏感精準度指標上是有提升的,但是卻有較低的召回。同時在進行規則擴充時,也比較繁瑣。
2019年上半年:以Bert為代表的遷移學習誕生,並且可以在下游進行fine-tune,使用較小的訓練資料集,便能取得不錯的成績。進行以輿情業務資料為基礎,構建一個簡易的文字平臺標註平臺,在其上進行訓練資料的標註,構建了一個通用的情感模型分類器。評測指標 F1值為 0.87,後續對 ERNIE1.0 進行嘗試,有兩個百分點的提升。
2019年下半年:主要從輿情的業務問題入手,通過優化提取更加精準、貼近業務的情感摘要作為模型輸入,使用定製化模型以及多模型融合方案,聯合對資料進行情感打標。並提出基於情感實體(主體)的負面資訊監測,下述統稱ATSA(aspect-term sentiment analysis),使用 Bert-Sentence Pair 的訓練方式, 將 摘要文字、實體聯合輸入,進行實體的情感傾向性判定。在定點客戶上取得不錯的成績,最後的F1值能達到 0.95。
2020年:將細化領域做到客戶級別,定製私有化情感模型。同時將加大對特定實體的細粒度情感分析(ATSA)的優化;同時,通過內部 AI訓練平臺的規模化應用,做到模型的全生命週期管理,簡化操作流程,加強對底層算力平臺的資源管控。
三、預訓練語言模型與技術解析
▶ BERT
BERT(Bidirectional Encoder Representations from Transformerss)的全稱是基於 Transformer 的雙向編碼器表徵,其中「雙向」表示模型在處理某一個詞時,它能同時利用前面的詞和後面的詞兩部分資訊(如下圖所示)。
在BERT中, 主要是以兩種預訓練的方式來建立語言模型。
1.MLM(Masked LM)
MLM可以理解為完形填空,作者會隨機mask每一個句子中15%的詞,用其上下文來做預測,例如:my dog is hairy → my dog is [MASK]。此處將hairy進行了mask處理,然後採用非監督學習的方法預測mask位置的詞是什麼,具體處理如下:
- 80%是採用[mask],my dog is hairy → my dog is [MASK]
- 10%是隨機取一個詞來代替mask的詞,my dog is hairy -> my dog is apple
- 10%保持不變,my dog is hairy -> my dog is hairy
之後讓模型預測和還原被遮蓋掉或替換掉的部分。
2.NSP(Next Sentence Prediction)
首先我們拿到屬於上下文的一對句子,也就是兩個句子,之後我們要在這兩段連續的句子裡面加一些特殊 token: [cls] 上一句話,[sep] 下一句話. [sep]
也就是在句子開頭加一個 [cls],在兩句話之中和句末加 [sep],具體地就像下圖一樣:
Token Embeddings:是詞向量,第一個單詞是CLS標誌,可以用於之後的分類任務。
- Segment Embeddings:用來區別兩種句子,因為預訓練不光做LM還要做以兩個句子為輸入的分類任務。
- Position Embeddings:讓BERT學習到輸入的順序屬性。
BERT在文字摘要、資訊檢索、資料增強、閱讀理解等任務中,也有實際的應用和發展。更多關於Bert相關介紹,請參照百分點認知智慧實驗室往期文章。
▶ ALBERT
ALBERT的全稱是A Lite BERT for Self-supervised Learning of Language Representations(用於語言表徵自監督學習的輕量級BERT),相對於Bert而言,在保證引數量小的情況下,也能保持較高的效能。當然同樣的模型還有 DistilBERT、TinyBERT。
1.ALBERT 和BERT的比較
下圖是BERT和ALBERT在訓練速度和效能上的整體比較:
- ALBERT-xxlarge的表現完全超過BERT-large,同時引數量只有其佔比的70%,但是Bert-large的速度要比ALBERT-xxlarge快三倍左右。
- BERT-xlarge的效能相對於Bert-base是低效的,表明大引數模型相對於小引數模型更加難訓練。
2.ALBERT的目標
在基於預訓練語言模型表徵時,增加模型大小一般可以提升模型在下游任務中的效能。但是通過增加模型大小會帶來以下問題:
- 記憶體問題
- 訓練時間會更長
- 模型退化
在將Bert-large的隱層單元數增加一倍, Bert-xlarge在基準測試上準確率顯著降低。
ALBERT核心目標就是解決上述問題, 下面就來介紹ALBERT在精簡參上的優化。
3.ALBERT模型優化明確引數的分佈,對於有效可靠的減少模型引數十分有幫助。ALBERT同樣也只使用到Transformer的Encoder階段,如下圖所示:
圖中標明的藍色方框和紅色方框為主要的引數分佈區域:
- Attention feed-forward block(上圖中藍色實線區域):
- 引數大小: O(12 * L * H * H)
- L:編碼器層數 eg:12
- H:隱藏層大小 eg:768
- 引數量佔比:80%
- 優化方法:採用引數共享機制
- Token embedding projection block(上圖中紅色實線區域):
- 引數大小:(V * E)
- V:詞表大小 eg:30000
- E:詞嵌入大小 eg:768
- 引數量佔比: 20%
- 優化方法:對Embedding進行因式分解
具體引數優化如下:
Factorized embedding parameterization(對Embedding因式分解)
ALBERT認為,token embedding是沒有上下文依賴的表述,而隱藏層的輸出值不僅包括了詞本身的意思還包括一些上下文資訊,因此應該讓H>>E,所以ALBERT的詞向量的維度是小於encoder輸出值維度的。在NLP任務中,通常詞典都會很大,embedding matrix的大小是E×V。
ALBERT採用了一種因式分解(Factorized embedding parameterization)的方法來降低引數量。首先把one-hot向量對映到一個低維度的空間,大小為E,然後再對映到一個高維度的空間,當E<<H時引數量減少的很明顯。如下圖所示:
可以看到,經過因式分解。引數量從O(V * H) 變為O(V*E + E*H),引數量將極大減小。如下圖所示:在H=768條件下,對比E=128和E=768,引數量減少17%,而整體效能下降0.6%。
在後續的實驗環境(所有的優化彙總後),對 embedding size 的大小進行評估,得出在 E=128時,效能達到最佳。
Cross-layer parameter sharing(跨層引數共享)
下圖是對BERT-Base Attention分佈的視覺化。對於一個隨機選擇的句子,我們視覺化來自不同Layer的Head的Attention分佈。可以看到,底層的Attention分佈類似於頂層的Attention分佈。這一事實表明在某種程度上,它們的功能是相似的。
Transformer中共享引數有多種方案,只共享feed-forward層,只共享attention層,ALBERT結合了上述兩種方案,feed-forward層與attention層都實現引數共享,也就是說共享encoder內的所有引數。但是需要主要的是,這只是減少了引數量,推理時間並沒有減少。如下圖所示:在採用 all-shared模式下,引數量減少70%,效能下降小於3%。
在經過上述的引數優化後,整體引數量有了極大的縮減,訓練速度也極大加快。後續作者又在模型變寬和模型變深上做了幾組實驗。如下:
模型變寬
當我們增加 H 大小時,效能會逐漸提高。在H=6144時,效能明顯下降。如下圖所示:
模型變深
在以ALBERT-large為基礎引數,設定不同的layer大小,發現layer=48的效能要差於layer=24的效能,如下圖所示:
一些實驗表示NSP(BERT-style)非但沒有作用,反而會對模型帶來一些損害。作者接著提出SOP(ALBERT-style)的優化模式。具體如下:
Inter-sentence coherence loss(句子連貫性)
在ALBERT中,為了去除主題識別的影響,提出了一個新的任務 sentence-order prediction(SOP),SOP的正樣本和NSP的獲取方式是一樣的,負樣本把正樣本的順序反轉即可。SOP因為是在同一個文件中選的,只關注句子的順序並沒有主題方面的影響。並且SOP能解決NSP的任務,但是NSP並不能解決SOP的任務,該任務的新增給最終的結果提升了一個點。
在後續的實驗中, ALBERT在訓練了100w步之後,模型依舊沒有過擬合,於是乎作者果斷移除了dropout,沒想到對下游任務的效果竟然有一定的提升。
當然作者對於增加訓練資料和訓練時長也做了詳盡的對比和測試,這裡不再進行描述。
在最初的 ALBERT釋出時,是隻有中文的。感謝資料工程師徐亮以及所在的團隊,於 2019 年 10 月,開源了首箇中文預訓練的中文版 ALBERT 模型。
專案地址:
https://github.com/brightmart/albert_zh
四、情感分析在輿情的應用實踐
▶ 業務調研
1.客戶情感滿意度調查
2.文字作用域(模型輸入文字選擇)調研
這裡將文字作用域分為以下幾個層次,分佈情況如下圖所示:
標題:正常文章的標題
全文: 標題和正文的統稱
情感摘要:依據客戶的輸入特徵詞,從文章中抽取一段摘要;長度在256字元內。
關鍵詞周邊:只關注所配置關鍵詞周邊的文字作用域,一般是一句話。
主體(實體)詞周邊:依據客戶所配置的品牌詞、主體詞,選取對應的文字作用域。
3.情感判定因素
這裡對判定因素做以下介紹:
自然語義:是指符合人們的情感判定標準,像 色情、暴力、違禁、邪教、反動等言論都是敏感資訊的範疇。比如:"#28天斷食減肥[超話]#美柚說我還有4天就來姨媽了,所以是快要來姨媽了體重就掉的慢甚至不掉了嗎,心塞。" 屬於敏感。
主體(實體)情感:一般涉及到的是 人名、地名、機構名、團體名、產品名、品牌名、”我“、”作者“等; 如果監測主體為美柚,那麼上述文字的情感傾向性就是非敏感。再舉例如下:”墨跡天氣又忘記簽到了,這個記性越來越差“,墨跡天氣是監測主體,那麼屬於非敏感。
業務規則: 是指以一種可表示、可量化、可總結、可表達的形式總結知識和規則,已經不符合自然語義的理解範疇。
業務規則&自然語義:客戶的負面資訊判定是結合業務規則,並且是符合自然語義判定標準的。
精簡版本的情感架構概覽如下:
接下來會基於此進行講述,大致分為如下幾個層次:
1.輸入層
這裡主要是獲取相應文字輸入,以及客戶的文字作用域規則和檢索詞、主體詞,供下游的文字作用域生成提供對應的條件。
2.文字作用域
依據文字作用域規則,生成對應的模型輸入,請參照上文對文字作用域的闡述。這裡實驗內容針對的是情感摘要。首先將文字進行分句,然後依據對每一個句子和檢索詞進行匹配,通過BM25計算相關性。這裡限制的文字長度在256內。在文字域優化後, 對線上的10家客戶進行對比分析,實驗條件如下:
客戶數目:10
資料分佈:從輿情繫統中按照自然日,為每個客戶選取100條測試資料
對比條件:情感摘要、標題
進行對比分析(客戶名稱已脫敏),每個客戶的情感摘要和文字標題效果依次展示。如下圖所示:
可以發現整體效果是有極大提升的。但是也可以看到部分客戶的敏感精準率是偏低的,這個和客戶的敏感分佈有關,大部分的敏感佔比只有總資料量的 10% ~20%,有些甚至更加低。所以面臨一個新的問題,如何提升非均勻分佈的敏感精準度。這個會在下文進行陳述。
3.情感判定因素
由上文的情感因素分佈得知, 情感物件(實體)的因素佔54%,基於實體的情感傾向性判定(ATSA)是一個普適需求。如果這裡直接使用通用情感分析判定(SA),在輿情的使用場景中會存在高召回,低精準的的情況。接下來會對此進行相關解決方案的的論述。
4.模型層
通用情感模型
相關度模型
對生產環境的埋點日誌分析,發現客戶存在大量的遮蔽操作。選取近一個月遮蔽最多的10個話題進行分析,如下圖所示:
通過調研和分析發現,這些資料雖然命中關鍵詞,但是資料相關度比較低。在情感判定之前引入相關度判定, 對於非相關的資料,一律判定為非敏感。對於精準資料再次進行情感分析判定,大大提升敏感精準率。在工程上選取ALBERT進行模型訓練可以達到部署多個模型的目的。觀測到,單個模型在推理階段,在Gpu(RTX 2080)上佔用的視訊記憶體大約在600MiB,極大節省資源。
部分客戶相關度模型效果如下:
客戶名稱 | 準確率 | 正樣本數量 | 負樣本數量 | 資料來源 |
C1 | 0.95 | 619 | 1141 | 收藏、遮蔽資料 |
C2 | 0.97 | 5085 | 5244 | 收藏、遮蔽資料 |
C3 | 0.93 | 450 | 450 | 收藏、遮蔽資料 |
C4 | 0.94 | 136 | 487 | 收藏、遮蔽資料 |
5.ATSA-面向情感實體的情感傾向性分析
ATSA(aspect-term sentiment analysis) 要解決就是在特定情感實體下的情感傾向性判定問題。這裡主要借鑑《Utilizing BERT for Aspect-Based Sentiment Analysis via Constructing Auxiliary Sentence》文中的思想。這個工作做得非常聰明,它把本來情感計算的常規的單句分類問題,通過加入輔助句子,改造成了句子對匹配任務。很多實驗證明了:BERT是特別適合做句子對匹配類的工作的,所以這種轉換無疑能更充分地發揮BERT的應用優勢。
A公司和B公司的情感傾向性是非敏感的, 而C公司卻是敏感的。要解決這個問題,要面臨兩個問題:
實體識別和資訊抽取問題
實體級別的情感傾向性判定
在輿情的業務場景中,可以簡化問題,由於情感實體是提前給定的, 所以不需要做實體識別和資訊抽取, 只需要對特定實體的情感傾向性進行判定。整體流程如下:
主要是利用 Bert Sentence-Pair,文字與實體聯合訓練,得到輸出標籤。目前實驗證明,經過這種問題轉換,在保證召回率提升的情況下,準確率和精準率都得到了提高。選取一個客戶進行對比測試,如下所示:
實驗條件 | 實驗方式 | 準確率 | 精準率 | 召回率 | F1 |
按照自然日取樣,測試樣本為912條,其中敏感資料108條 | ATSA | 0.95 | 0.8 | 0.85 | 0.82 |
情感摘要 | 0.84 | 0.4 | 0.7 | 0.51 |
上述是一個正負樣本及其不均勻的情況,增加敏感精準率將提高客戶的滿意度。目前的實現的機制還略顯簡單,未來還將持續投入。
6.情感規則引擎
在部分客戶場景中, 他們的業務規則是明確的或者是可窮舉的。這裡會做一些長尾詞挖掘、情感新詞發現等工作來進行輔助, 同時要支援實時的干預機制,快速響應。比如某些客戶的官方微博經常會發很多微博,他們會要求都判定成非敏感。這裡不再做過多介紹。
五、長期規劃
▶ AI 訓練平臺的構建
隨著輿情業務的發展,各領域客戶都沉澱了大量與業務貼近的優質資料,如何有效使用這些資料,形成情感效果聯動反饋機制,為業務賦能,是情感分析領域面臨的新的挑戰。在2019年的實踐中,通過場景化的情感分析框架落地應用,對情感效果做到了模型定製化干預,真正提高了客戶滿意度。這種機制具有整體精度高、定製能力強、業務感知明顯的特點。在後續工作中,將以 模型訓練自動化與人工反饋相結合的方式,將模型定製能力規模化、平臺化,實現情感分析在輿情場景下千人千面的效果。
Refer:
Chi Sun, Luyao Huang, Xipeng Qiu: Utilizing BERT for Aspect-Based Sentiment Analysis via Constructing Auxiliary Sentence. NAACL-HLT (1) 2019: 380-385
Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova: BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. NAACL-HLT (1) 2019: 4171-4186
Yifan Qiao, Chenyan Xiong, Zheng-Hao Liu, Zhiyuan Liu: Understanding the Behaviors of BERT in Ranking. arXiv preprint arXiv:1904.07531 (2019).
Zhenzhong Lan, Mingda Chen, Sebastian Goodman, Kevin Gimpel, Piyush Sharma, Radu Soricut:ALBERT: A Lite BERT for Self-supervised Learning of Language Representations.arXiv:1909.11942 [cs.CL]
Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin:Attention Is All You Need.arXiv:1706.03762 [cs.CL]
Linyuan Gong, Di He, Zhuohan Li, Tao Qin, Liwei Wang, Tieyan Liu ; Proceedings of the 36th International Conference on Machine Learning, PMLR 97:2337-2346, 2019:Efficient Training of BERT by Progressively Stacking
https://github.com/thunlp/PLMpapers
http://jalammar.github.io/illustrated-bert/
https://www.bilibili.com/video/BV1C7411c7Ag?p=4