深刻解讀華爲雲細粒度文本情感分析及其應用

摘要:本篇文章主要介紹了情感分析的一些基本任務,包括文本、語音、圖像還有生成、識別,着重講述華爲雲在細粒度情感分析方面兩個工做。git

導讀:先簡單介紹一下文本情感分析的一些基本概念,而後介紹一下華爲雲在細粒度情感分析方面兩個工做,一個是屬性級的細粒度情感分析,還有一個是觀點四元組的挖掘,最後再作一個總結和將來的展望。框架

今天主要介紹如下幾點:機器學習

Ø 文本情感分析介紹分佈式

Ø 屬性級情感分析性能

Ø 觀點四元組分析學習

Ø 總結測試

情感分析介紹

首先介紹一下文本情感分析的一個基本概念。情感分析,它主要是識別媒介中目標對象的一個情感,這裏面可能有兩個概念比較容易混淆,一個是sentiment analysis,另外一個是emotion analysis,通常咱們說的情感分析都是sentiment,主要指的正面和負面的分析,而後emotion會更詳細一些,它不只包含正負面,還包含好比說生氣、開心、高興這些,會更加細粒度一些。編碼

咱們主要分析sentiment,從分析對象來看會包含文本、圖像、語音,EEG(腦電波)、多模態分析情感。從任務方面來看,不只是有情感的識別,還有情感生成的一些任務,像如今有情感對話的生成,還有虛擬人情感生成。 在本報告中,主要側重文本方面的情感識別。url

文本情感分析

上面文本情感分析五要素定義是採用劉冰老師的定義,這個定義分爲了實體(entity)、實體的某一個方面(aspect)、針對這個實體的情感正負面(opinion=sentiment,即情感正負面也稱做觀點正負面)、觀點持有者(hold)和持有觀點的時間(time)這五要素,通常來講hold和time文本不多說起。spa

另外一個概念通常會把entity和aspect合併在一塊兒成爲一個target,是針對咱們目標對象的情感或者觀點。例如:「我以爲華爲手機的拍照很是牛逼」這裏面對應的實體是「華爲手機」,對應的aspect是「拍照」,對應的情感是「很是牛逼」爲正面,對應的觀點持有者是「我」,而時間沒有說起因此爲空。

當前的文本情感分析就是根據輸入文本,而後識別其中這五要素裏的幾個要素,如今尚未相關工做能夠同時識別出五個要素。通常的話如今最簡單的情感分析是隻識別出這個文本的觀點/情感,既不包含實體也不包含aspect而且也不包含觀點持有者,再進一步的工做就是識別出針對哪個aspect(實體)的觀點(情感)。

這裏簡單介紹一些細粒度情感分析和咱們說的通常情感分析的區別。通常的情感分析都是直接識別整個文本的正負面,然而細粒度情感分析會更細一些,這裏面有兩個概念,一個是從情感的粒度上會更細,好比從sentiment到emotion的情感粒度升級,以前咱們只分析正負面,如今除了正負面還有情緒,如高興、傷心等,從情感這個維度講這是一種細粒度情感分析。還有一個是從分析對象的角度來說,以前的情感分析是直接識別整個句子或整篇文章的情感,它不區分情感對象是誰,再細粒度一些的話就須要識別出整個句子裏面情感針對的對象是誰,它是句子裏的某個實體或者是某個實體的某個屬性,從這個角度這也是細粒度情感分析的一種,咱們今天主要側重第二個針對對象角度的情感分析。

情感分析任務

下面介紹一下情感分析的各個任務,這裏面分析是情感的識別,不包含生成,還有前面提到的語音圖片也不涉及。

針對文本的情感分析會分紅幾個等級:

詞級別的情感分析:這個相似於情感詞典的構建,怎麼去構建一個大規模的情感詞典,好比「車禍」這個詞對應的情感就是負面的,「生日」這個詞對應的情感就是正面的。

句子/文檔級的情感分析:咱們如今用比較多的,各大雲服務廠商都會有的一個服務,針對句子或者文檔的情感分析,輸入一句話返回相應的情感正負面,但它不區分正負面針對哪個句子裏面哪一個實體或者哪一個對象。

目標級的情感分析:這是咱們今天側重的目標級的細粒度情感分析,這裏面的目標就是上邊說的target,它能夠是一個實體也能夠是一個屬性,還能夠是實體+屬性的組合形式。

對於目標級的情感分析會分爲三種:

針對屬性的情感分析(TG-ABSA):這裏面對象是固定而後只分析裏面某幾個屬性的正負面,這就會涉及到兩個任務,一個是對象的屬性識別,另外一個是該屬性的情感識別。例如圖中的例子「外觀XXX」,這裏的對象是固定說的是手機,咱們只須要識別出其中的屬性外觀、內存和性能,而後分別識別出各個屬性的情感正負面。針對屬性識別也分紅兩個任務,一是屬性詞的抽取,就是咱們要定位出屬性描述詞在文中的位置,另外一個是該屬性描述詞對應的屬性類別,由於針對某個屬性的描述多是「外觀」也多是「看起來很好看」,它這個描述不必定包含顯性的屬性描述詞。針對情感識別會分爲觀點詞抽取和觀點分類。

針對實體的情感分析(TN-ABSA):這裏是文本中只有實體而沒有屬性,只針對實體的情感進行分析,這涉及到的兩個任務,實體識別和情感識別。實體識別分爲實體詞抽取和實體分類,情感識別分爲觀點詞抽取和觀點分類。

針對目標的情感分析(T-ABSA):這裏面的目標就是實體+屬性的組合,例如:「小米性價比」、「華爲拍照」等,這會比上面兩個任務相對更細一些。目標識別分爲目標詞抽取和目標分類,情感識別分爲觀點詞抽取和觀點分類。

針對情感分析簡單介紹一下它的一些方法簡史,最先的一個方法是基於字典加規則的方式,咱們人工構建一個情感詞典,每一個詞都有對應的正負面,而後根據句子中正面詞和負面詞的數量,最後作一個投票,這是一個最簡單的方法。後邊就有了基於機器學習的方法,像傳統的機器學習SVM等,將情感詞典和詞袋做爲它的一個特徵。再進一步就是深度學習,還有就是如今的基於預訓練語言模型+fine tune的方法,應該是如今效果最好的一個方法。

屬性級情感分析

下邊我介紹一下咱們其中的一個工做,屬性級情感分析(TG-ABSA),這裏面實體是固定的,分析它各個屬性的正負面。像上面句子級情感分析是大部分廠商提供的,好比「買沒幾天就降價一點都不開心,閃存跑分就五百多點」,這個總體是負面,可是它針對價格和閃存兩個屬性都有相應情感,這裏並無區分。屬性級情感分析這個任務就是給定屬性的類別集合,而後預測它各個屬性的正負面。其中,這裏的表達也分爲兩種,一種是顯式的觀點表達,另外一種是隱式的觀點表達。顯式的觀點表達會顯示提到屬性的屬性詞和觀點詞,好比「手機內存很是大,系統流暢,性價比很是高」,這裏屬性詞「內存」、「系統」和「性價比」都有顯示的提到,而像「手機太貴了,顏值很是高,一點都不卡」,這裏「手機太貴了」、「一點都不卡」表達的屬性分別是「價格」和「性能」,可是沒有相應的屬性詞。

針對這兩種不一樣的表達方式,處理方式是不同的,後邊會介紹一種專門針對顯示的方法。

屬性級情感分析—相關工做介紹

無監督方法:

最傳統的一個方法是無監督的,這種方法的優點是不須要標註數據,好比使用基於句法解析的方法,先抽取句子裏主語謂語賓語的表達方式,好比「服務員很漂亮」,經過抽到的主語「服務員」和它對應的形容詞「漂亮」,這樣我就能夠知道它的評價對象是「服務員」,觀點是「漂亮」,再根據查情感詞典知道這是一個正面的情感,這樣就能夠獲得針對服務員的評價是正面的。

這種方法只能處理顯示的表達,若是是隱式的表達,由於句子中沒有屬性詞,那麼經過句法解析無法獲得對應的角色,因此沒法分析來處理隱式的表達。這種無監督方法的優勢是不須要標數據,缺點是準確率相對低一些,無法處理隱式表達。

閱讀理解方法:

最近的一個工做是復旦邱錫鵬老師組提出的基於深度學習的方法,分析一個句子裏面各個屬性的正負面,他把這個問題轉化成一個閱讀理解的問題,原本一個句子有N個屬性集合,他把句子和屬性轉換成句子-屬性 pair。輸入一個句子,這裏面aspect能夠描述成閱讀理解的一個問你題,好比「針對外觀評價是怎麼樣的」,這樣轉換成問答對的方式,而後基於Bert來識別這個問答對正負面的答案,這是一個比較新的工做。

這種方式的優點是比較靈活,屬性能夠無限的擴充,無論是新增或者減小屬性,均可以用這種方法直接取處理,並且準確率還比較高。可是這種方法的缺點就是它的效率相對要低一些,由於若是有N個屬性,在預測的時候,它須要預測N次才能獲得結果。

屬性級情感分析—方案介紹

咱們提出了一個基於相似多標籤,多任務的方法。整個任務給定屬性類別集合,而後預測每一個屬性的正負面。

這裏面的難點是,首先咱們大框架使用的是有監督的方法,由於最終咱們想要把應用部署到華爲雲的服務上,因此準確率要求是比較高的,要求達到90%以上,通常無監督的方法沒法知足,因此仍是須要有監督的方法。這就須要標註數據,若是是多個屬性它的一個問題就是標註起來比較困難,好比說一個手機評論可能會涉及到二三十個屬性或者說甚至上百種屬性,若是要標數據的話,這會很是的困難。咱們的方法不一樣於傳統的多標籤分類,像文本多標籤分類任務的類別有政治、經濟、新聞,該任務只涉及標籤是否出現,但這裏不同的地方是它不只涉及到屬性是否出現,還要預測出屬性的正負面,至關於每一個屬性都要預測出它的三個標籤—正面、負面和未出現。至關於每一個屬性是一個多分類任務而不是一個二分類任務。以前那種多標籤分類,通常最後會把每一個標籤轉化成logits,這裏的話用這種方法就沒辦法處理。而後還有就是隱式表達。

咱們解決的技術思路是,把它轉換成一個Multi-task多分類任務,每一個屬性都處理成一個多分類的任務,因此它輸出不是二分類而是一個多分類。在標註數據的過程當中,咱們引入主動學習的思路,先標註一批少許的數據,而後用模型對剩餘未標註的作一個預測,而後再對那些置信度比較低的再去人工審覈標註這些數據,若是置信度比較高的就不用再標了,這樣的話能夠提升標註效率。另外一個方法是,若是一個樣本同時標註多個屬性,這個標註成本是很高的,咱們引入Label mask的思路,就是在訓練的時候 某幾個屬性可能標也可能沒標,若是沒標的話就把這個屬性mask掉,而後在計算loss的時候該屬性就不參與計算了,只將那些已經標註的屬性參與loss計算和反向傳播的計算,這樣的一個好處就是我在真正標註樣本的時候想標註哪幾個屬性就標註哪幾個屬性,不用每一個樣本的全部屬性都要標註,這樣標註就更加靈活,能夠先針對某一個屬性只標註它,標完該屬性後再標另外一個屬性,這其實是一個很靈活的標註。

使用這個方法的一個優點是,它最終基於深度學習模型,準確率比較高,也支持隱式的表達,由於深度學習能夠編碼各類語義的表達,還有一個就是咱們這種方法能夠提升標註效率。在中間編碼這塊能夠是基於bert、roberta這種預訓練語言模型,最終輸出使用label mask的方法。

屬性級情感分析—結果

下面兩個圖是咱們最終的一個實驗結果,針對汽車領域測試樣本大概有7000多個,每一個樣本平均的屬性數量是4.27個,其中預約義的屬性集合是8個,最終能夠看到每一個屬性的準確率都是很高的,基本上達到90%以上。針對手機領域的結果基本上也是每一個屬性F值基本上能達到將近90%。

右上角的圖是針對每一個屬性預測的標籤的置信度的閾值,隨着閾值的上升,命中的屬性(即預測的標籤的置信度在閾值以上的屬性)準確率也在上升,而Attribute Hit Rate(即預測標籤的置信度在閾值以上的屬性佔比)也隨着閾值的上升而降低,即有些屬性預測的標籤的置信度低於閾值,可是命中的屬性預測出標籤的準確率是慢慢上升的,這個也是符合咱們的通常認知的。這個的一個好處是最終產品上線以後,用戶要求有一部分不須要人工審覈,另外一部分則須要人工審覈,當達到某個閾值以後,他們就能夠不用參與人工審覈。經過調節閾值,讓某些屬性的指標達到了這個閾值,好比準確率都達到95%,這一部分就不須要人工審覈。

屬性級情感分析—應用案例

這是咱們基於多屬性情感分析的一個應用案例,這是汽車領域的案例,針對網上不少的汽車領域的評論,咱們能夠分析汽車在八個屬性維度上的正負面評價。上圖左上角里紅色的線就是一個行業的平均水平,藍色的線是針對這個車它的各個維度的雷達圖像,這樣就能夠很方便地對比出不一樣車型,它的一個好壞。能夠方便用戶在產品選型的時候作一個對比,也能夠方便廠家針對評論自己對他們的產品作相應的改進。

觀點四元組分析

四元組觀點挖掘—介紹

上面講到的雖然能夠分析出各個屬性的正負面,可是它的一個缺點是沒辦法定位出針對某個屬性具體評價的屬性描述詞位置和觀點描述的位置,由於有些用戶不只想要找到屬性正負面,還要找到它對應的評價位置,因此咱們這個工做是針對觀點四元組進行挖掘的。

觀點四元組挖掘這個任務不只要分析出各個屬性的正負面,還要定位出它屬性描述詞的位置以及觀點描述詞的位置。好比「手機內存很是大」中屬性描述詞定位到「內存」,評價詞定位「很是大」,對於「性價比很是高」這句話,屬性描述詞定位到「性價比」,觀點描述定位到「很是高」,不只要識別出屬性的類別還要定位到位置,因此這裏一共有四個要素要預測出來,分別是屬性詞、屬性類別、評價詞和評價極性,其中屬性類別和評價極性在前面的工做已經作到了。

四元組觀點挖掘—方案

針對這個任務,咱們提出了一個基於抽取加分類的聯合模型,上圖是咱們如今採用的框架,底層是基於編碼的模型,能夠是bert或者roberta等,而後將句子編碼成一個向量表示。

圖中左邊這側是用於定位屬性描述位置和觀點描述位置的,是一個序列標註模型,好比這裏B_A是屬性描述詞起始位置,I_A則是在屬性描述詞中間的位置,例如這裏「內存」和「顏色」都是屬性描述詞。在這裏最上層用的是CRF序列標註模型來進行屬性描述詞的抽取。圖中右邊這側對應的跟上面的工做有點相似了,有N個屬性對應有N個輸出,而後對應每一個屬性預測它的正負面和未出現這幾類。左邊作屬性詞抽取,右邊作屬性正負面預測,最終能夠輸出每一個屬性的四元組(屬性類別,屬性描述詞,觀點描述詞,觀點類別)。

四元組觀點挖掘—數據標註

這裏的比較耗時間的工做就是數據標註,所以咱們專門作了四元組觀點挖掘的數據標註平臺。上面「簡單」這個分類標籤是爲了解決標註過程當中有些不一樣標註人員他可能對同一個樣本就會有衝突,他以爲這個樣本比較難標或者好標的話這裏就是用這進行區分,若是樣本好標會打個「簡單」的分類標籤,若是讓他以爲不肯定,他會不打「簡單」的標籤,即「複雜」標籤。由於咱們標的屬性比較多,涉及到差很少三四十個屬性,這裏作了一個對屬性作了大體的分類。

這裏的標註任務是相似於關係抽取裏面3元組的標註任務,先標註屬性描述詞,而後再標註它的觀點描述詞,這裏面它兩個實際上是造成一個搭配關係,這個相似於一個三元組中實體和實體及他們的關係,只不過這裏的關係是一種搭配的關係,將它們連起來就能夠了,最後再加上它對應的正負面以及屬性描述詞對應的屬性類別,這樣每一個樣本的四元組就標出來了。

上圖左邊是咱們標註大概兩萬條手機評論的數據分佈,其實能夠看到數據分佈式很是不均衡的。這個是拿到真實用戶在線上評論的數據,有些評論會偏的很是多,然而有些類別評論會很是少。上圖右邊是針對全部屬性對應正負面的分佈,這個也是很是不均衡的,正面的評論比較多,負面的評論會相對少不少。

四元組觀點挖掘—結果

上圖爲咱們最終的評價結果,由於它是一個四元組既包含分類也包含抽取,對於評價指標咱們用了一個Fuzzy F1值。咱們對每個屬性加正負面標籤做爲一個評價對象,好比「外觀正」做爲一個評價對象,而後去找它對應的位置,計算這個位置它們字符的重合率(包括觀點描述詞和屬性描述詞的重合率)這樣去算它的F值。EM F1值是預測描述詞的位置徹底精準匹配,稍微有一點不對也算錯,這個比前面的指標更加嚴格。

在編碼器這部分咱們嘗試了幾個不一樣的編碼器,包括bert、roberta還有nezha等。因爲咱們有不少未標註的數據,基於這些數據咱們作了領域的預訓練,而後再進行fine tune。右圖展現了不一樣指標下的結果,能夠看到在未標註數據上進行領域預訓練的話是能夠帶了一個點的提高,Fuzzy F1能達到0.79。另外,這個評估指標對於人的實際感知不太直觀,咱們隨機抽取500條數據進行人工評價。人工評價的過程是每一個樣本預測出每一個屬性標籤和正負面且包括它們的位置,將這樣的四元組抽取出來進行人工評價,判斷預測是否合理,若是合理標記爲1,若是不合理則標記爲0,這樣來看人工對模型預測的指標判斷。人工評價的準確率是很是高的,差很少96%的準確率,即人工認爲預測是合理的。這兩個結果差異是比較大的,但也是比較合理的,由於在數據標註過程當中,不一樣標註人員對觀點描述詞的位置以及屬性描述的位置也但是會有歧義。好比「外觀很是好看」這句話,有些人觀點描述詞會標「好看」,有些人就會標「很是好看」,這其實對最終預測結果影響不大,可是若是用字符重合率的方法,那會嚴重影響計算這個指標,因此說它兩個差別比較大也是合理的。

四元組觀點挖掘—Demo

上圖是咱們一個簡單的demo,輸入一個樣本,生成對應每一個屬性的正負面,當點擊某個屬性的時候它對應的評價詞位置就能夠高亮出來,紅色表明屬性描述詞,綠色表明觀點描述詞。上面說的人工評價就是這些結果預測出來後,人工看看預測是否合理。

總結

本篇文章主要介紹了情感分析的一些基本任務,包括文本、語音、圖像還有生成、識別。對於文本情感分析任務作了詳細介紹,重點介紹了兩個工做,一個是屬性級情感分析,這個是給定屬性集合狀況下,預測每一個屬性的正負面,咱們將它構建成了一個多任務分類。另外一個工做比上面的粒度更細一點,不只要預測出屬性正負面,還要定位出它具體的屬性描述詞和觀點描述詞的位置,咱們把它作成了一個抽取加分類的多任務聯合模型,既包括抽取也包括分類。

對於將來的趨勢,咱們在實際作的過程當中發現你們在工業界會碰到標註數據成本很是高的問題,每個任務基本上咱們須要標將近兩萬條數據,因此最終的效果準確率是比較高的。另外一方面,對於模型加速這部分,因爲使用深度學習像bert這種預訓練模型,它的推理成本仍是比較高的,咱們華爲能夠對硬件進行底層適配。對於領域遷移將來也是關注重點,怎麼能從更低成本從某一領域遷移到另外一個領域,好比從汽車領域遷移到手機領域,或者從手機領域遷移到房地產領域等等。另外,還有自監督去訓練超大規模的模型,好比像bert、roberta還有最近GPT3等等,這也是將來的趨勢,而後再考慮如何將知識圖譜加入到大模型當中進行知識加強來提高模型理解的效果。還有就是多模態這部分,怎麼把圖像、文本或者語音這些信息輔助來提高模型的效果。由於人在學習的時候不只參考了文本的信息,還有視覺方面的信息等等。如今對於多模態情感分析咱們也有一些工做正在作,好比說從視頻中分析出一我的的情感,既考慮人臉的圖像信息,也考慮他語音的一些信息,好比語氣等等。

本文分享自華爲雲社區《細粒度文本情感分析及其應用》,原文做者:NLP9527。

點擊關注,第一時間瞭解華爲雲新鮮技術~

相關文章
相關標籤/搜索