導讀:隨著移動互聯網的普及,網絡上每天產生大量的文本數據,蘊含著巨大的有價值信息。情感分析作為自然語言處理中的一個重要研究方向。在實踐中有著廣泛的應用,如商品評論分析、政治、金融、旅游等領域中的商品推薦、產品輔助決策、公司政府的輿情監測、服務評價等等。本文主要介紹情感分析的概念、應用、任務和方法,進一步會介紹華為云在細粒度情感分析方面的實踐,包括屬性級情感分析和觀點四元組分析。
主要內容包括:
文本情感分析介紹
屬性級情感分析
觀點四元組分析
總結
01情感分析介紹
首先介紹下文本情感分析的基本概念。情感分析,主要是識別媒介中目標對象的情感,這里面可能有兩個概念比較容易混淆,一個是sentiment analysis,另一個是emotion analysis。一般我們說的情感分析都是sentiment,主要指的正面和負面的分析,然后emotion會更詳細一些,它不僅包含正負面,還包含比如說生氣、開心、高興這些,會更加細粒度一些。
我們主要分析sentiment,從分析對象來看會包含文本、圖像、語音,EEG(腦電波)、多模態分析情感。從任務方面來看,不僅是有情感的識別,還有情感生成的一些任務,像現在有情感對話的生成,還有虛擬人情感生成。在本報告中,主要側重文本方面的情感識別。
1. 文本情感分析
上面文本情感分析五要素定義是采用劉冰老師的定義,這個定義分為了實體 ( entity )、實體的某一個方面 ( aspect )、針對這個實體的情感正負面 ( opinion=sentiment,即情感正負面也稱作觀點正負面 )、觀點持有者 ( hold ) 和持有觀點的時間 ( time ) 這五要素,一般來說hold和time文本很少提及。
另一個概念一般會把entity和aspect合并在一起成為一個target,是針對我們目標對象的情感或者觀點。例如:“我覺得華為手機的拍照非常牛逼”這里面對應的實體是“華為手機”,對應的aspect是“拍照”,對應的情感是“非常牛逼”為正面,對應的觀點持有者是“我”,而時間沒有提及所以為空。
當前的文本情感分析就是根據輸入文本,然后識別其中這五要素里的幾個要素,現在還沒有相關工作可以同時識別出五個要素。一般的話現在最簡單的情感分析是只識別出這個文本的觀點/情感,既不包含實體也不包含aspect并且也不包含觀點持有者,再進一步的工作就是識別出針對哪一個aspect(實體)的觀點(情感)。
這里簡單介紹一些細粒度情感分析和我們說的一般情感分析的區別。一般的情感分析都是直接識別整個文本的正負面,然而細粒度情感分析會更細一些,這里面有兩個概念,一個是從情感的粒度上會更細,比如從sentiment到emotion的情感粒度升級,之前我們只分析正負面,現在除了正負面還有情緒,如高興、傷心等,從情感這個維度講這是一種細粒度情感分析。還有一個是從分析對象的角度來講,之前的情感分析是直接識別整個句子或整篇文章的情感,它不區分情感對象是誰,再細粒度一些的話就需要識別出整個句子里面情感針對的對象是誰,它是句子里的某個實體或者是某個實體的某個屬性,從這個角度這也是細粒度情感分析的一種,我們今天主要側重第二個針對對象角度的情感分析。
2. 情感分析任務
下面介紹一下情感分析的各個任務,這里面分析是情感的識別,不包含生成,還有前面提到的語音圖片也不涉及。
針對文本的情感分析會分成幾個等級:
詞級別的情感分析:這個類似于情感詞典的構建,怎么去構建一個大規模的情感詞典,比如“車禍”這個詞對應的情感就是負面的,“生日”這個詞對應的情感就是正面的。
句子/文檔級的情感分析:我們現在用比較多的,各大云服務廠商都會有的一個服務,針對句子或者文檔的情感分析,輸入一句話返回相應的情感正負面,但它不區分正負面針對哪一個句子里面哪個實體或者哪個對象。
目標級的情感分析:這是我們今天側重的目標級的細粒度情感分析,這里面的目標就是上邊說的target,它可以是一個實體也可以是一個屬性,還可以是實體+屬性的組合形式。
對于目標級的情感分析分為三種:
針對屬性的情感分析 ( TG-ABSA ):這里面對象是固定然后只分析里面某幾個屬性的正負面,這就會涉及到兩個任務,一個是對象的屬性識別,另一個是該屬性的情感識別。例如圖中的例子“外觀XXX”,這里的對象是固定說的是手機,我們只需要識別出其中的屬性外觀、內存和性能,然后分別識別出各個屬性的情感正負面。針對屬性識別也分成兩個任務,一是屬性詞的抽取,就是我們要定位出屬性描述詞在文中的位置,另一個是該屬性描述詞對應的屬性類別,因為針對某個屬性的描述可能是“外觀”也可能是“看起來很好看”,它這個描述不一定包含顯性的屬性描述詞。針對情感識別會分為觀點詞抽取和觀點分類。
針對實體的情感分析 ( TN-ABSA ):這里是文本中只有實體而沒有屬性,只針對實體的情感進行分析,這涉及到的兩個任務,實體識別和情感識別。實體識別分為實體詞抽取和實體分類,情感識別分為觀點詞抽取和觀點分類。
針對目標的情感分析 ( T-ABSA ):這里面的目標就是實體+屬性的組合,例如:“小米性價比”、“華為拍照”等,這會比上面兩個任務相對更細一些。目標識別分為目標詞抽取和目標分類,情感識別分為觀點詞抽取和觀點分類。
針對情感分析,簡單介紹一些方法簡史。最早的一個方法是基于字典加規則的方式,我們人工構建一個情感詞典,每個詞都有對應的正負面,然后根據句子中正面詞和負面詞的數量,最后做一個投票,這是一個最簡單的方法。后邊就有了基于機器學習的方法,像傳統的機器學習SVM等,將情感詞典和詞袋作為它的一個特征。再進一步就是深度學習,還有就是現在的基于預訓練語言模型+fine tune的方法,應該是現在效果最好的一個方法。
02屬性級情感分析
下邊我介紹一下我們其中的一個工作,屬性級情感分析(TG-ABSA),這里面實體是固定的,分析它各個屬性的正負面。像上面句子級情感分析是大部分廠商提供的,比如“買沒幾天就降價一點都不開心,閃存跑分就五百多點”,這個整體是負面,但是它針對價格和閃存兩個屬性都有相應情感,這里并沒有區分。屬性級情感分析這個任務就是給定屬性的類別集合,然后預測它各個屬性的正負面。其中,這里的表達也分為兩種,一種是顯式的觀點表達,另一種是隱式的觀點表達。顯式的觀點表達會顯示提到屬性的屬性詞和觀點詞,比如“手機內存非常大,系統流暢,性價比非常高”,這里屬性詞“內存”、“系統”和“性價比”都有顯示的提到,而像“手機太貴了,顏值非常高,一點都不卡”,這里“手機太貴了”、“一點都不卡”表達的屬性分別是“價格”和“性能”,但是沒有相應的屬性詞。
針對這兩種不同的表達方式,處理方式是不一樣的,后邊會介紹一種專門針對顯示的方法。
1.屬性級情感分析—相關工作介紹
① 無監督方法:
最傳統的一個方法是無監督的,這種方法的優勢是不需要標注數據,比如使用基于句法解析的方法,先抽取句子里主語謂語賓語的表達方式,比如“服務員很漂亮”,通過抽到的主語“服務員”和它對應的形容詞“漂亮”,這樣我就可以知道它的評價對象是“服務員”,觀點是“漂亮”,再根據查情感詞典知道這是一個正面的情感,這樣就可以得到針對服務員的評價是正面的。
這種方法只能處理顯示的表達,如果是隱式的表達,因為句子中沒有屬性詞,那么通過句法解析沒法得到對應的角色,所以無法分析來處理隱式的表達。這種無監督方法的優點是不需要標數據,缺點是準確率相對低一些,沒法處理隱式表達。
② 閱讀理解方法:
最近的一個工作是復旦邱錫鵬老師組提出的基于深度學習的方法,分析一個句子里面各個屬性的正負面,他把這個問題轉化成一個閱讀理解的問題,本來一個句子有N個屬性集合,他把句子和屬性轉換成句子-屬性 pair。輸入一個句子,這里面aspect可以描述成閱讀理解的一個問你題,比如“針對外觀評價是怎么樣的”,這樣轉換成問答對的方式,然后基于Bert來識別這個問答對正負面的答案,這是一個比較新的工作。
這種方式的優勢是比較靈活,屬性可以無限的擴充,不管是新增或者減少屬性,都可以用這種方法直接取處理,而且準確率還比較高。但是這種方法的缺點就是它的效率相對要低一些,因為如果有N個屬性,在預測的時候,它需要預測N次才能得到結果。
2.屬性級情感分析—方案介紹
我們提出了一個基于類似多標簽,多任務的方法。整個任務給定屬性類別集合,然后預測每個屬性的正負面。
這里面的難點是,首先我們大框架使用的是有監督的方法,因為最終我們想要把應用部署到華為云的服務上,所以準確率要求是比較高的,要求達到90%以上,一般無監督的方法無法滿足,所以還是需要有監督的方法。這就需要標注數據,如果是多個屬性它的一個問題就是標注起來比較困難,比如說一個手機評論可能會涉及到二三十個屬性或者說甚至上百種屬性,如果要標數據的話,這會非常的困難。我們的方法不同于傳統的多標簽分類,像文本多標簽分類任務的類別有政治、經濟、新聞,該任務只涉及標簽是否出現,但這里不一樣的地方是它不僅涉及到屬性是否出現,還要預測出屬性的正負面,相當于每個屬性都要預測出它的三個標簽—正面、負面和未出現。相當于每個屬性是一個多分類任務而不是一個二分類任務。之前那種多標簽分類,一般最后會把每個標簽轉化成logits,這里的話用這種方法就沒辦法處理。然后還有就是隱式表達。
我們解決的技術思路是,把它轉換成一個Multi-task多分類任務,每個屬性都處理成一個多分類的任務,所以它輸出不是二分類而是一個多分類。在標注數據的過程中,我們引入主動學習的思路,先標注一批少量的數據,然后用模型對剩余未標注的做一個預測,然后再對那些置信度比較低的再去人工審核標注這些數據,如果置信度比較高的就不用再標了,這樣的話可以提高標注效率。另一個方法是,如果一個樣本同時標注多個屬性,這個標注成本是很高的,我們引入Label mask的思路,就是在訓練的時候 某幾個屬性可能標也可能沒標,如果沒標的話就把這個屬性mask掉,然后在計算loss的時候該屬性就不參與計算了,只將那些已經標注的屬性參與loss計算和反向傳播的計算,這樣的一個好處就是我在真正標注樣本的時候想標注哪幾個屬性就標注哪幾個屬性,不用每個樣本的所有屬性都要標注,這樣標注就更加靈活,可以先針對某一個屬性只標注它,標完該屬性后再標另一個屬性,這實際上是一個很靈活的標注。
使用這個方法的一個優勢是,它最終基于深度學習模型,準確率比較高,也支持隱式的表達,因為深度學習可以編碼各種語義的表達,還有一個就是我們這種方法可以提高標注效率。在中間編碼這塊可以是基于bert、roberta這種預訓練語言模型,最終輸出使用label mask的方法。
3. 屬性級情感分析—結果
上面是我們最終的實驗結果,針對汽車領域測試樣本大概有7000多個,每個樣本平均的屬性數量是4.27個,其中預定義的屬性集合是8個,最終可以看到每個屬性的準確率都是很高的,基本上達到90%以上。針對手機領域的結果基本上也是每個屬性F值基本上能達到將近90%。
右上角的圖是針對每個屬性預測的標簽的置信度的閾值,隨著閾值的上升,命中的屬性(即預測的標簽的置信度在閾值以上的屬性)準確率也在上升,而Attribute Hit Rate(即預測標簽的置信度在閾值以上的屬性占比)也隨著閾值的上升而下降,即有些屬性預測的標簽的置信度低于閾值,但是命中的屬性預測出標簽的準確率是慢慢上升的,這個也是符合我們的一般認知的。這個的一個好處是最終產品上線之后,用戶要求有一部分不需要人工審核,另一部分則需要人工審核,當達到某個閾值之后,他們就可以不用參與人工審核。通過調節閾值,讓某些屬性的指標達到了這個閾值,比如準確率都達到95%,這一部分就不需要人工審核。
4. 屬性級情感分析—應用案例
這是我們基于多屬性情感分析的一個應用案例,這是汽車領域的案例,針對網上很多的汽車領域的評論,我們可以分析汽車在八個屬性維度上的正負面評價。上圖左上角里紅色的線就是一個行業的平均水平,藍色的線是針對這個車它的各個維度的雷達圖像,這樣就可以很方便地對比出不同車型,它的一個好壞。可以方便用戶在產品選型的時候做一個對比,也可以方便廠家針對評論本身對他們的產品做相應的改進。
03觀點四元組分析
1.四元組觀點挖掘—介紹
上面講到的雖然可以分析出各個屬性的正負面,但是它的一個缺點是沒辦法定位出針對某個屬性具體評價的屬性描述詞位置和觀點描述的位置,因為有些用戶不僅想要找到屬性正負面,還要找到它對應的評價位置,所以我們這個工作是針對觀點四元組進行挖掘的。
觀點四元組挖掘這個任務不僅要分析出各個屬性的正負面,還要定位出它屬性描述詞的位置以及觀點描述詞的位置。比如“手機內存非常大”中屬性描述詞定位到“內存”,評價詞定位“非常大”,對于“性價比非常高”這句話,屬性描述詞定位到“性價比”,觀點描述定位到“非常高”,不僅要識別出屬性的類別還要定位到位置,所以這里一共有四個要素要預測出來,分別是屬性詞、屬性類別、評價詞和評價極性,其中屬性類別和評價極性在前面的工作已經做到了。
2.四元組觀點挖掘—方案
針對這個任務,我們提出了一個基于抽取加分類的聯合模型,上圖是我們現在采用的框架,底層是基于編碼的模型,可以是bert或者roberta等,然后將句子編碼成一個向量表示。
圖中左邊這側是用于定位屬性描述位置和觀點描述位置的,是一個序列標注模型,比如這里B_A是屬性描述詞起始位置,I_A則是在屬性描述詞中間的位置,例如這里“內存”和“顏色”都是屬性描述詞。在這里最上層用的是CRF序列標注模型來進行屬性描述詞的抽取。圖中右邊這側對應的跟上面的工作有點類似了,有N個屬性對應有N個輸出,然后對應每個屬性預測它的正負面和未出現這幾類。左邊做屬性詞抽取,右邊做屬性正負面預測,最終可以輸出每個屬性的四元組(屬性類別,屬性描述詞,觀點描述詞,觀點類別)。
3.四元組觀點挖掘—數據標注
這里的比較耗時間的工作就是數據標注,因此我們專門做了四元組觀點挖掘的數據標注平臺。上面“簡單”這個分類標簽是為了解決標注過程中有些不同標注人員他可能對同一個樣本就會有沖突,他覺得這個樣本比較難標或者好標的話這里就是用這進行區分,如果樣本好標會打個“簡單”的分類標簽,如果讓他覺得不確定,他會不打“簡單”的標簽,即“復雜”標簽。因為我們標的屬性比較多,涉及到差不多三四十個屬性,這里做了一個對屬性做了大致的分類。
這里的標注任務是類似于關系抽取里面3元組的標注任務,先標注屬性描述詞,然后再標注它的觀點描述詞,這里面它兩個其實是形成一個搭配關系,這個類似于一個三元組中實體和實體及他們的關系,只不過這里的關系是一種搭配的關系,將它們連起來就可以了,最后再加上它對應的正負面以及屬性描述詞對應的屬性類別,這樣每個樣本的四元組就標出來了。
上圖左邊是我們標注大概兩萬條手機評論的數據分布,其實可以看到數據分布式非常不均衡的。這個是拿到真實用戶在線上評論的數據,有些評論會偏的非常多,然而有些類別評論會非常少。上圖右邊是針對所有屬性對應正負面的分布,這個也是非常不均衡的,正面的評論比較多,負面的評論會相對少很多。
4.四元組觀點挖掘—結果
上圖為我們最終的評價結果,因為它是一個四元組既包含分類也包含抽取,對于評價指標我們用了一個Fuzzy F1值。我們對每一個屬性加正負面標簽作為一個評價對象,比如“外觀正”作為一個評價對象,然后去找它對應的位置,計算這個位置它們字符的重合率(包括觀點描述詞和屬性描述詞的重合率)這樣去算它的F值。EM F1值是預測描述詞的位置完全精準匹配,稍微有一點不對也算錯,這個比前面的指標更加嚴格。
在編碼器這部分我們嘗試了幾個不同的編碼器,包括bert、roberta還有nezha等。由于我們有很多未標注的數據,基于這些數據我們做了領域的預訓練,然后再進行fine tune。右圖展示了不同指標下的結果,可以看到在未標注數據上進行領域預訓練的話是可以帶了一個點的提升,Fuzzy F1能達到0.79。另外,這個評估指標對于人的實際感知不太直觀,我們隨機抽取500條數據進行人工評價。
人工評價的過程是每個樣本預測出每個屬性標簽和正負面且包括它們的位置,將這樣的四元組抽取出來進行人工評價,判斷預測是否合理,如果合理標記為1,如果不合理則標記為0,這樣來看人工對模型預測的指標判斷。人工評價的準確率是非常高的,差不多96%的準確率,即人工認為預測是合理的。這兩個結果差別是比較大的,但也是比較合理的,因為在數據標注過程中,不同標注人員對觀點描述詞的位置以及屬性描述的位置也可是會有歧義。比如“外觀非常好看”這句話,有些人觀點描述詞會標“好看”,有些人就會標“非常好看”,這其實對最終預測結果影響不大,但是如果用字符重合率的方法,那會嚴重影響計算這個指標,所以說它兩個差異比較大也是合理的。
5.四元組觀點挖掘—Demo
上圖是我們一個簡單的demo,輸入一個樣本,生成對應每個屬性的正負面,當點擊某個屬性的時候它對應的評價詞位置就可以高亮出來,紅色代表屬性描述詞,綠色代表觀點描述詞。上面說的人工評價就是這些結果預測出來后,人工看看預測是否合理。
04總結
本文主要介紹了情感分析的一些基本任務,包括文本、語音、圖像還有生成、識別。對于文本情感分析任務做了詳細介紹,重點介紹了兩個工作,一個是屬性級情感分析,這個是給定屬性集合情況下,預測每個屬性的正負面,我們將它構建成了一個多任務分類。另一個工作比上面的粒度更細一點,不僅要預測出屬性正負面,還要定位出它具體的屬性描述詞和觀點描述詞的位置,我們把它做成了一個抽取加分類的多任務聯合模型,既包括抽取也包括分類。
對于未來的趨勢,我們在實際做的過程中發現大家在工業界會碰到標注數據成本非常高的問題,每一個任務基本上我們需要標將近兩萬條數據,所以最終的效果準確率是比較高的。另一方面,對于模型加速這部分,由于使用深度學習像bert這種預訓練模型,它的推理成本還是比較高的,我們華為可以對硬件進行底層適配。對于領域遷移未來也是關注重點,怎么能從更低成本從某一領域遷移到另一個領域,比如從汽車領域遷移到手機領域,或者從手機領域遷移到房地產領域等等。
另外,還有自監督去訓練超大規模的模型,比如像bert、roberta還有最近GPT3等等,這也是未來的趨勢,然后再考慮如何將知識圖譜加入到大模型當中進行知識增強來提升模型理解的效果。還有就是多模態這部分,怎么把圖像、文本或者語音這些信息輔助來提升模型的效果。因為人在學習的時候不僅參考了文本的信息,還有視覺方面的信息等等。現在對于多模態情感分析我們也有一些工作正在做,比如說從視頻中分析出一個人的情感,既考慮人臉的圖像信息,也考慮他語音的一些信息,比如語氣等等。
原文標題:【情感分析】華為云細粒度文本情感分析及應用
文章出處:【微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
人工智能
+關注
關注
1796文章
47666瀏覽量
240285 -
華為云
+關注
關注
3文章
2682瀏覽量
17586
原文標題:【情感分析】華為云細粒度文本情感分析及應用
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論