如何用深度學(xué)習(xí)模型,解決情感分析難題?

0 評論 7174 瀏覽 21 收藏 24 分鐘

本文以情感分析為分享主題,并分析了情感屬性分析的挑戰(zhàn)以及如何利用深度學(xué)習(xí)模型解決此類問題。

Meltwater通過機器學(xué)習(xí)提供情感分析已超過10年。第一批模型于2009年部署了英語和德語版本。今天,Meltwater in-house支持16種語言的模型。本博客文章討論了如何使用深度學(xué)習(xí)和反饋循環(huán)向全球3萬多個客戶大規(guī)模提供情感分析。

什么是情感分析?

情感分析是自然語言處理(NLP)中的一個領(lǐng)域,涉及從文本中識別和分類主觀意見[1]。情感分析的范圍從檢測情感(例如憤怒,幸福,恐懼)到諷刺和意圖(例如投訴,反饋,意見)。情感分析以其最簡單的形式為一段文本分配屬性(例如,正面,負面,中立)。

讓我們看幾個例子:

Acme 到目前為止,是我遇到過的最糟糕的公司。

這句話顯然表達了負面意見。情感由“最糟糕的公司”(情感短語 the sentiment phrase)承載,并指向“ Acme”(情感目標(biāo) the sentiment target)。

明天,Acme和NewCo將發(fā)布其最新收入數(shù)據(jù)

在這種情況下,我們只有關(guān)于“ Acme”和“ NewCo”的事實陳述。語句是中性的。

NewCo 在過去一年的創(chuàng)紀錄銷售數(shù)字和股市飆升的支持下,它成為第一個在其平臺上積累1萬億美元資產(chǎn)的養(yǎng)老金計劃。

這次,我們在積極的語義環(huán)境中使用了諸如“支持”,“創(chuàng)紀錄銷售”之類的短語,指的是“ NewCo” 。

Meltwater通過機器學(xué)習(xí)提供情感分析已超過10年。第一批模型于2009年部署了英語和德語版本。Meltwater現(xiàn)在擁有16種語言的in-house模型:阿拉伯語,中文,丹麥語,荷蘭語,芬蘭語,法語,印地語,意大利語,日語,韓語,挪威語,葡萄牙語,西班牙語和瑞典語。

我們的大多數(shù)客戶都通過媒體監(jiān)控儀表板(圖1)或報告來分析情感趨勢。較大的客戶可以通過Fairhair.ai數(shù)據(jù)平臺以豐富文檔的形式訪問我們的數(shù)據(jù)。

圖1:Meltwater Media Intelligence媒體監(jiān)測儀表板。

該產(chǎn)品的一個重要特征是,用戶能夠覆寫(override)算法分配的情感值。覆寫的情感屬性被索引為Meltwater的Elasticsearch集群中同一文檔的不同“版本”,在構(gòu)建儀表盤和報告時,為客戶提供了他們的情感的個性化視圖(圖2)。

圖2:Meltwater的媒體情報內(nèi)容流中的“情感屬性”覆寫下拉列表。

每個月,我們的客戶都會覆寫大約200,000個文檔中的情感值。每天有6,500個文檔!那么,為什么情感很難如此正確呢?

情感屬性分析的挑戰(zhàn)

人類語言的某些細微差別是挑戰(zhàn)性的來源之一。舉一些例子:

處理否定語義:

貴公司情況如何?還不錯!我對最新的財務(wù)狀況并不非常滿意 ……

我們在這里有三個句子,第一個是中性的,第二個是肯定的,但包含“錯”,通常在否定的上下文中使用,第三個是否定的,但包含“非常滿意”。

諷刺語義:用這樣的句子

今天又下雨了…… fun times!

盡管表達了“fun times”,但該文本可能是諷刺的,并表達了負面情感。

比較性語義:

我喜歡新的Acme手機,它們比NewCo的手機好得多。

這里的“愛”和“好得多”等表達帶有積極的情感,但是,對于“ NewCo”來說,評價卻是負面的。

取決于讀者角度的語境:

阿克梅警察局今天逮捕了8名涉嫌襲擊和搶劫的人員。該團伙幾個月來一直在恐嚇社區(qū)。

除單詞的含義外,以上所有內(nèi)容都需要理解上下文。

一個必須解決的實際問題是精度和速度之間的權(quán)衡。Meltwater每天對大約4.5億個文檔進行情感分析,范圍從推文(平均長度約30個字符)到新聞和博客帖子(長度可達到600-700,000個字符)。每個文檔必須在20毫秒內(nèi)處理。必須保證速度!

傳統(tǒng)的機器學(xué)習(xí)方法(如樸素貝葉斯(na?ve Bayes),邏輯回歸和支持向量機(SVM))因具有良好的可擴展性而被廣泛用于大規(guī)模的情感分析。現(xiàn)已證明深度學(xué)習(xí) (DL)方法在各種NLP任務(wù)(包括情感分析)上都可以實現(xiàn)更高的準(zhǔn)確性,但是,它們通常較慢,并且訓(xùn)練和操作成本更高[2]。

“舊”方法:貝葉斯情感

到目前為止,Meltwater一直在使用多元樸素貝葉斯(na?ve Bayes)情感分類器。分類器需要一段文本并將其轉(zhuǎn)換為一個擁有特征值的矢量 (f1, f2,…, fn)。

然后,分類器計算最可能的情感正負屬性S j,即正,負或中性,前提是我們觀察到文本中的某些特征值。這通常寫為條件概率語句:

p(Sj | f1, f2,…, fn)

通過找到最大化下面的公式的S j,從而獲得概率最大的情感正負屬性。

log(p(Sj)+log(p(fi | Sj))

讓我們將以上理論應(yīng)用于我們的情感問題。p(Sj)的值是找到“本質(zhì)上”具有特定正負屬性的文檔的概率??梢酝ㄟ^將大量文檔集標(biāo)記為正,負或中性,然后計算找到其中具有給定情感政府屬性的文檔的概率,來估計這些概率。理想情況下,我們應(yīng)該使用所有曾經(jīng)的文檔,但這是不切實際的。

例如,如果語料庫由以下帶有標(biāo)簽的文檔組成:

  • D1: My phone is not bad (正面)
  • D2: My phone is not great (負面)
  • D3: My phone is good (正面)
  • D4: My phone is bad (負面)
  • D5: My phone is Korean (中性)

然后 p(Sj)的值是:

  • p(正面)= 2/5=0.4
  • p(負面)=2/5=0.4
  • p(中性)=1/5=0.2

我們使用一個簡單的單詞袋模型來導(dǎo)出我們的功能。我們使用一元語法,二元語法,和三元語法。例如D 1轉(zhuǎn)換為:

(My, phone, is, not, bad, My phone, phone is, is not, not bad, My phone is, phone is not, is not bad)

p(fi | Sj)的值即為在語料庫中被標(biāo)記為S j的文檔中看到某個特征的概率。

我們可以使用柯爾莫哥洛夫?qū)τ跅l件概率 的定義p(fi | Sj)=p(fi∩Sj)/p(Sj),來計算其值。例如,對于特征值“bad”:

  • p(bad | 正面)=p(bad ∩正面)/p(正面)=0.2/0.4=0.5
  • p(bad | 負面)=p(bad ∩負面)/p(負面)=0.2/0.4=0.5
  • p(bad | 中性)=p(bad ∩中性)/p(中性)=0/0.2=0

給定一個文檔(例如“My tablet is good”),分類器基于文本的功能為每個情感政府屬性計算出一個“得分”,例如對于“正面性”,我們得到:

log( p(POS | my, tablet, is, good, my tablet, tablet is, is good, my tablet is, tablet is good))

即為:

log( p(POS) )+log( p(my | POS) )+ … +log( p(tablet is good | POS) )= ?13.6949

同樣適用于“負面性”和“中性”,從而產(chǎn)生以下按序的得分:

  • log(p(正面 | …)) = ?13.6949
  • log(p(中性 | …)) = ?16.9250
  • log(p(負面 | …)) = ?18.1709

然后分類器得出的答案是:“正面性”是最有可能的情感正負屬性。

樸素貝葉斯(na?ve Bayes)分類器運行很快,因為所需的計算非常簡單。但是,就準(zhǔn)確性而言,此方法可以實現(xiàn)的功能有限,例如:

  • 準(zhǔn)確的分類依賴于代表性的數(shù)據(jù)集,即,如果訓(xùn)練集偏向某個情感正負屬性(例如中性),我們的分類也可能產(chǎn)生偏向。準(zhǔn)確性還取決于培訓(xùn)語料庫是否足夠涵蓋了我們所在意的語言。
  • 樸素貝葉斯(na?ve Bayes)的假設(shè)基于特征的獨立性,即使得出的情感正負屬性排名是正確的,得出的概率也不是那么可靠[3,4]。
  • 當(dāng)使用樸素貝葉斯和詞袋模型時,作為訓(xùn)練標(biāo)簽的顆粒度僅僅為文檔,通常會導(dǎo)致結(jié)果不佳。
  • N-gram(元) 語言模型是一種鈍器。如果將自己限制為3元,我們將無法正確捕獲例如“not quite as bad”這樣的4元表達式。但是,增加上下文的大小會破環(huán)特征空間,從而使分類器變慢,但不一定結(jié)果更好。

Meltwater的NLP(自然語言處理)團隊的任務(wù)是改善所有支持語言的情感分析。由于訓(xùn)練新模型是一項復(fù)雜且昂貴的工作,因此團隊首先研究了利用我們現(xiàn)有的技術(shù)堆棧來改善情感分析的快速方法。

改進1:句子級訓(xùn)練和分類

我們進行的第一個改變,是訓(xùn)練貝葉斯模型的方式?,F(xiàn)在,我們不是在整個文檔的粒度上進行訓(xùn)練和分類,而是在句子級別進行訓(xùn)練和分類。以下是一些優(yōu)點:

  • 與整個文檔相比,將標(biāo)簽分配給單個句子(或上下文中的表達式)要容易得多,因此我們可以眾包培訓(xùn)集的標(biāo)簽。
  • 多年來,學(xué)術(shù)研究產(chǎn)生了可免費獲得的帶標(biāo)簽的數(shù)據(jù)集,用于情感分析評估。其中大多數(shù)處于句子級別,因此我們可以將其納入我們的培訓(xùn)集中。
  • 我們可以將句子級情感與命名實體和關(guān)鍵短語提取一起使用以提供實體級情感(Entity-level sentimate,ELS)。

然后,我們決定通過堆疊分類器“挑選”有意義句子的情感,將句子級別的情感匯總為文檔級別的情感,以產(chǎn)生整個文檔的情感。

圖3:在2018年第二季度(左)和2019年第二季度(右)中記錄的情感屬性覆寫-所有語言。

這些簡單的更改對減少客戶每月做出的情感屬性覆寫次數(shù)產(chǎn)生了巨大影響。特別是,在16種受支持的語言中,新聞文檔的情感屬性覆寫平均減少了58%。

該分析涉及7,193個客戶產(chǎn)生的約4.5億個新聞文檔和4.2百萬個覆寫項。圖3顯示了2018第二季度(文檔級預(yù)測)和2019第二季度(句子級預(yù)測+匯總)進行的覆寫數(shù)量之間的比較。

改進2:新的深度學(xué)習(xí)模型

同時,Meltwater的NLP團隊一直在努力改進我們的技術(shù)堆棧,以分析兩種主要語言(即英語和中文)的情感,涵蓋Meltwater處理的每日內(nèi)容的約40%。

我們嘗試了多種技術(shù),例如卷積神經(jīng)網(wǎng)絡(luò)(CNN),遞歸神經(jīng)網(wǎng)絡(luò)(RNN)和長短內(nèi)存網(wǎng)絡(luò)(LSTM),目的是在準(zhǔn)確性,速度和成本之間找到良好的折衷方案。

由于在準(zhǔn)確性,速度和運行成本之間進行了很好的權(quán)衡,我們決定選擇基于CNN的解決方案。CNN主要用于計算機視覺,但事實證明,它們對NLP的表現(xiàn)也非常好。我們的解決方案使用Tensor Flow,NumPy(具有MKL優(yōu)化),GenSim和EKPhrasis在Python中實現(xiàn),以支持哈希/現(xiàn)金標(biāo)簽,表情符號和表情符號。

體系架構(gòu)

簡化的架構(gòu)如圖4所示。它包括一個嵌入(輸入)層,然后是單個卷積層,然后是最大池化層和softmax層[5]。

圖4:簡化的模型架構(gòu)(來源:Zhang,Y.和Wallace,B.(2015)。卷積神經(jīng)網(wǎng)絡(luò)用于句法分類的敏感性分析(和從業(yè)人員指南)

嵌入層

我們的輸入是要分類的文本。至于貝葉斯方法,我們需要根據(jù)其特征來表示文本。我們將文本嵌入為矩陣。

例如,文字“I like this movie very much! ” 表示為具有7行的矩陣,每個單詞一行。列數(shù)取決于我們要表示的功能。與貝葉斯案例不同,我們不再自己設(shè)計功能。相反,我們現(xiàn)在使用經(jīng)過預(yù)訓(xùn)練的第三方單詞嵌入。

詞嵌入可大規(guī)模捕獲語義相似性。這些嵌入是可公開獲得的,并由第三方機器學(xué)習(xí)專家培訓(xùn)的神經(jīng)網(wǎng)絡(luò)生成。對于英語,我們使用斯坦福大學(xué)的GloVe嵌入對8400億個單詞進行了訓(xùn)練常見抓取并使用具有300個特征的向量。我們也嘗試過BERT和ElMo,但準(zhǔn)確性/成本之間的權(quán)衡仍然支持GloVe。

對于中文,我們使用騰訊AI的嵌入,該嵌入針對200萬個特征向量的800萬個短語進行了訓(xùn)練。使用我們自己的訓(xùn)練數(shù)據(jù)集通過轉(zhuǎn)移學(xué)習(xí)對向量進行微調(diào)。目的是確保嵌入內(nèi)容考慮Meltwater的PR /營銷要求。

卷積層

CNN的核心是卷積層,在其中訓(xùn)練人工神經(jīng)元以從嵌入中提取顯著特征。在我們的例子中,卷積層由英語的100個神經(jīng)元和漢語的50個神經(jīng)元組成。

優(yōu)點再次是,我們不必嘗試和設(shè)計功能,網(wǎng)絡(luò)將學(xué)習(xí)我們需要的功能。缺點是我們可能無法再知道這些功能是什么。點擊這里以了解更多的卷積層的細節(jié),點擊這里了解更多黑盒問題的闡述。

最大池化(Max Pooling)

池化的思想是在特征圖中捕獲最重要的局部特征,以減少維數(shù),從而加快網(wǎng)絡(luò)速度。

SoftMax層

合并的向量被合并為單個向量,并傳遞到完全連接的SoftMax層,該層將對極性進行實際分類。

數(shù)據(jù)集

對于英語,除了GloVe嵌入之外,我們還有23,000個內(nèi)部標(biāo)記的新聞句子和6萬個社交句子,包括SemEval-2017 Task 4提供的Twitter數(shù)據(jù)集。對于中文,除騰訊AI嵌入外,數(shù)據(jù)集還包含來自新聞,社交和評論的約38,000句子。

該數(shù)據(jù)集使用Amazon的SageMaker Ground Truth通過眾包進行注釋。在訓(xùn)練之前,使用二八原則對數(shù)據(jù)集進行分層和隨機排序,即,我們使用80%進行訓(xùn)練,使用20%進行驗證。

結(jié)果

與貝葉斯方法相比,這個簡單架構(gòu)已經(jīng)使該模型在句子級別產(chǎn)生了明顯更好的性能(表1)。英文社交文本的收益為7%,中文(社交和新聞相結(jié)合)的收益為18%,英文新聞的收益為26%。

在文檔級別進行匯總之后,與貝葉斯方法相比,我們發(fā)現(xiàn)英語級別的文檔級別情感屬性覆寫數(shù)量進一步減少了48.06%,中文級別的情感屬性覆寫為29.24%。

表1:CNN與樸素貝葉斯(英語和漢語)的情感準(zhǔn)確性。

情感分析的準(zhǔn)確性到底有多高?F?1?分數(shù)基本可以衡量模型得出的結(jié)果和人工注釋相比的準(zhǔn)確性。研究告訴我們,人工注釋者僅在80%的情況下同意結(jié)果。

換句話說,即使假設(shè)100%準(zhǔn)確的模型,在20%的情況下,人類仍然會不同意該模型[6]。實際上,這意味著我們的CNN模型在對單個句子進行分類時的表現(xiàn)幾乎與人工一樣好。

連續(xù)的提高

到目前為止,情感覆蓋的結(jié)果從未被反饋到情感模型中。NLP團隊現(xiàn)在已經(jīng)設(shè)計了一個反饋循環(huán),可以收集客戶不同意CNN分類器的案例,以便我們可以隨著時間的推移改進模型。

然后將覆蓋的文檔發(fā)送到Fairhair.ai Studio(圖5),在此處注釋者在每個級別(即實體,句子,部分(即標(biāo)題,入口,正文)和文檔)重新標(biāo)記它們。

圖5:Fairhair.ai Studio:Meltwater的注釋工具

每個文檔由不同的注釋者多次注釋,并由高級注釋者進行最終審核。最終客戶有時會參與此過程。當(dāng)我們的注釋人員不精通特定語言時,會將標(biāo)簽轉(zhuǎn)移給第三方眾包工具。

Meltwater是Amazon SageMaker Ground Truth的重度用戶(圖6)。使用眾包時,我們會增加所需注釋器的數(shù)量,因為它們可能不如我們內(nèi)部培訓(xùn)的注釋器準(zhǔn)確。

圖6:AWS SageMaker GT幫助Meltwater標(biāo)記2690個中文文檔5次

注釋完成后,新的數(shù)據(jù)點將由我們的研究科學(xué)家進行審查。審查過程包括確保這些覆蓋不會故意偏向我們自己的模型,或跟從需要特定模型的特定客戶偏見。

如果數(shù)據(jù)是正確的,則將其添加到測試集中,即,我們不想通過將其添加到訓(xùn)練集中來過度擬合該數(shù)據(jù)點。我們需要該模型能夠從其他數(shù)據(jù)點歸納正確答案。

我們將收集性質(zhì)相似的數(shù)據(jù),并攜帶必要的知識來正確分類覆蓋的文檔。例如,如果發(fā)現(xiàn)分類錯誤發(fā)生在討論金融產(chǎn)品的文檔中,那么我們將從Elasticsearch集群中收集金融類文檔。

綜上所述

我們對所有語言改變了訓(xùn)練和應(yīng)用貝葉斯情感模型的方式,這使新聞文檔上的文檔級情感屬性覆寫次數(shù)平均減少了58%。

現(xiàn)在,我們支持所有16種語言的句子級和實體級情感。對我們而言,實體可以是個有自己名稱的實體,例如“福特”,也可以是關(guān)鍵短語,例如“客戶服務(wù)”。

我們針對英語和漢語部署了深度學(xué)習(xí)情感模型。他們的句子準(zhǔn)確性在英語和漢語中分別為83%和76%。他們進一步將新聞文檔的文檔級別腹瀉率降低了48.06%(英語)和29%(中文)。

新模型考慮了#標(biāo)簽,例如#love,表情符號和表情圖示。

我們有一個反饋環(huán)來不斷改善我們的情感模型。

關(guān)于作者

  • Stanley Jose Komban博士是Meltwater的高級研究科學(xué)家
  • Raghavendra Prasad Narayan是Meltwater的高級研究科學(xué)家
  • Giorgio Orsi博士是Meltwater的首席科學(xué)家兼(NLP)工程總監(jiān)

參考文獻

[1] Bing Liu. Sentiment Analysis: mining sentiments, opinions, and emotions. Cambridge University Press, 2015.

[2] Daniel Justus, John Brennan, Stephen Bonner, Andrew Stephen McGough. Predicting the Computational Cost of Deep Learning Models. IEEE Intl Conf. on Big Data. 2018.

[3] Irina Rish. An empirical study of the naive Bayes classifier. IJCAI Work. on Empirical Methods in AI. 2001.

[4] Alexandru Niculescu-Mizil, Rich Caruana. Predicting good probabilities with supervised learning. Intl Conference on Machine Learning. 2005.

[5] Ye Zhang, Byron Wallace. A Sensitivity Analysis of (and Practitioners’ Guide to) Convolutional Neural Networks for Sentence Classification. Intl Joint Conf. on Natural Language Processing. 2015.

[6] Kevin Roebuck. Sentiment Analysis: High-impact Strategies – What You Need to Know: Definitions, Adoptions, Impact, Benefits, Maturity, Vendors. 2012.

 

本文由 @Meltwater 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自@Unsplash, 基于CC0協(xié)議

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!