国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于層次化的微博情緒分類
——以新浪微博為例

2018-11-17 01:26王向華
計算機工程與設計 2018年11期
關鍵詞:層次化類別語料庫

王向華,宋 欣

(天津職業(yè)大學 電子信息工程學院,天津 300410)

0 引 言

在所有的SNS(social network service)[1,2]平臺中,微博是最受歡迎的平臺。微博文章是用戶觀念的直接反映,但是微博文本通常十分簡短。例如在中國最廣泛使用的微博平臺——新浪微博,允許用戶在一篇博文中輸入不超過140個中文字符。而微博文章的長度限制給情緒分類帶來了難題,需要更有效的特征提取方法。此外,互聯網俚語進一步增加了情緒分類和特征提取的難度。

情緒可以被定義為一個主觀上的思想或感覺,比如高興、生氣等,目前,大多數的研究人員主要在6個粗粒度的類別上進行情緒分析和分類,這些粒度包括高興、驚訝、憤怒、厭惡、恐懼和悲傷[3]。然而,粗粒度的情緒類別不能很好的解釋文本中的情緒。為更好地描述情緒,需要在粗粒度的情緒類別中加入細粒度,這就形成了層次化結構。

除情緒粒度不同外,語料庫的語言也不一樣。迄今,大多數研究工作使用英語作為語料庫。近年來,出現了一些以中文為語料的研究,例烏達巴拉等[4]根據依存句法的詞語搭配特征和基于組合語義的深度特征應用于文本情緒分類,提出了一種以短語為主要線索的半馬爾科夫條件隨機場文本情緒分析算法。Jiang等[5]利用深度學習工具Word2vec對社會熱點事件的微博語料通過增量式學習方法來擴展基準詞典,并結合HowNet詞典匹配和人工篩選生成最終的情緒詞典。

現階段許多研究人員著眼于使用正負向情緒分類或粗粒度基本情緒分類方法將文本分為6到7個情緒類別,而不是使用細粒度的情緒分類方法或情緒成分分析。本文采用4層的細粒度情緒層次化分類體系,包括19種底層情緒。提出了情緒成分分析(emotional component analysis,ECA)算法,以檢測文章中的主要情緒,根據回歸值和分類閾值之間的距離,計算該主要情緒在文中所占的相應比例。

1 情緒成分分析

通常,一篇微博文章包含著多種情緒,因此,單一的分類結果并不能準確地反映出情緒成分[5,6]?;诙囝悇e分類中的置信理念,本文提出的ECA算法以檢測主要情緒,并計算其所占比例。

情緒成分分析如算法1所示。本文首先對文章是否包含情緒以及該情緒為正向或者負向進行判定。接著對每種情緒在正向或負向類別中的原始得分進行計算和排序(第(1)~(4)行)。將排在前面的4種情緒挑選出,作為主要情緒(第(5)~(6))行),然后計算主要情緒的最終得分和所占比例(第(7)~(16)行)。

算法1: 情緒成分分析

(1) for每個 4層情緒[i]do

(2) 得分[i]= 4層分類器[i].分類()+

上層(4層分類器[i]).分類();

(3)endfor

(4) 排序(得分,4層情緒);

(5) 主要情緒= 4層情緒[1:4];

(6) 主要情緒得分=得分[1:4];

(7) 總得分= 0;

(8)for每個主要情緒得分[i] do

(9) 主要情緒得分[i] = exp(主要情緒得分[i]);

(10) 總得分+=主要情緒得分[i];

(11)endfor

(12)主要情緒占比[1:4] = 0

(13)for每個主要情緒占比[i]do

(14) 主要情緒占比[i] =主要得分[i]/總得分;

(15)endfor

(16)return主要情緒,主要情緒占比

2 具體實施

為了分析微博中的情緒,更準確地描繪出不同的情緒差異,有效提高情緒特征的提取與選擇,完成情緒分類,提出層次化情緒分類耦合情緒成分分析的算法,該算法流程如圖1所示。

圖1 本文算法流程

2.1 層次化體系

本文的層次化結構如圖2所示。該層次化結構包含19個細粒度的底層情緒類別,若考慮到中性情緒則包含20個葉子節(jié)點,中性情緒表示沒有任何情緒類別。

圖2 四層的層次化結構

2.2 預處理

為了提高算法效率,在執(zhí)行運算之前對文本進行預處理,移除4種類型的元素,即用戶名、主題、鏈接和位置信息,這些均不包含任何情緒。

用戶名:如果用戶A希望和用戶B分享一些東西,他將會在其文章中輸入B的用戶名,并在該用戶名前添加一個@符號,這樣用戶B將會收到通知。然而,這一部分一定不包含任何情緒,因此本文通過檢測@符號并將其和用戶名一并移除,以略去該元素。

主題:每個用戶都可以在某個特定的主題下參與討論。為加入討論,用戶只需要在文章中輸入該主題,并用兩個“#”符號表示,例如#情緒分析#。這一部分當然不會包含任何情緒,且符號在預處理程序中被移除。

鏈接:用戶的文章中可以包含鏈接。鏈接將會被微博平臺轉換成短鏈接,以減少占用空間。在新浪微博,短鏈接通常以http://t.cn/作為開頭。

位置信息:微博平臺允許用戶在文章的末尾添加位置信息,該信息對于情緒分類沒有幫助。位置信息具有固定的前綴,比如“我在這里:”或“我在:”,這使得預處理程序可以比較容易地識別該信息。

2.3 特征提取

微博用戶常會使用不同的表情符號表達當前的情緒。一些用戶使用表情符號“”以表示高興,一些用戶則使用“”以表示悲傷??傊?,表情符號特征能夠表達一些更為復雜的情緒,因此提取表情特征符號非常重要。

詞性特征在文本情緒處理中是不可或缺的因素,該特征在情緒分析中通常發(fā)揮不同的作用[7]。通過挖掘詞性特征,本文采用ICTCLAS分詞工具包[8]對文章進行分割,隨后提取形容詞、名詞和動詞等,以形成特征空間。同時本文還應用了兩個語義規(guī)則。第一個語義規(guī)則是提取重復的感嘆號(!)和問號(?)。第二個語義規(guī)則是將否定詞和相鄰的形容詞放在一起,比如與原形容詞有著相反含義的短語。但是在兩者之間可能會存在副詞,根據中文的語言習慣,將距離閾值設為3。即當一個否定詞和一個形容詞之間的距離在3個詞內,該否定詞和形容詞以及在其間的詞語作為一個詞語共同提取。

2.4 特征選擇

通過上一節(jié)的特征提取會產生大量特征,因此,有必要從原始特征空間中選擇有效的特征。本文在這里采用了實施卡方測試,以及詞頻和點互信息(point of mutual information,PMI)。PMI由以下公式定義[9]

(1)

式中:t表示詞語,c表示類別,p(t)和p(c)為t和c的個體分布,而p(t,c)則是t和c的聯合分布。

最終的特征集包括兩個詞集:高頻詞集和低頻詞集,這兩個詞集根據算法2分別生成。算法中的所有閾值均通過迭代決定[10]。

算法2: 特征選擇算法

(1) 詞.中文=x2(語料庫,標簽);

(2) 排序(詞,中文);

(3) 詞.頻率_比例=頻率_比例(語料庫,標簽);

(4)S高頻=?;

(5)fori=0;i<詞.大小();i++;do

(6)if詞[i].頻率_比例>正向_頻率_比例_閾值then

(7)S高頻.加入(詞集[i]);

(8)endif

(9)if詞[i].頻率_比例<負向_頻率_比例_閾值then

(10)S高頻.加入(詞[i]);

(11)endif

(12)if詞[i].大小() ≥閾值then

(13)break;

(14)endif

(15)endfor

(16) 詞.正向_點互信息=正向_點互信息(語料庫,標簽);

(17) 詞.負向_點互信息=負向_點互信息(語料庫,標簽);

(18)S低頻=R正向=R負向=?;

(19)for每個詞[i]do

(20)if詞[i].正向_點互信息>正向_點互信息_閾值

(21)S低頻.加入(詞[i]);

(22)R正向.加入(詞[i]);

(23)endif

(24)if詞[i].負向_點互信息>負向_點互信息_閾值

(25)R負向.加入(詞[i]);

(26)endif

(27)endfor

(28)S=合并(S高頻,S低頻);

(29)returnS、R正向、R負向;

卡方測試能夠選出與某類別高度相關的詞語。然而,會受到詞頻的影響,因此詞頻比例作為附加信息采用。在本文算法中,首先在語料庫和標簽上運行卡方測試(第(1)行),并根據測試結果對詞語進行排序(第(2)行)。接著計算所有詞在正向和負向情緒的樣本中的頻率比例(第(3)行)。下一步,按順序選擇頻率的比例高于正向閾值或低于負向閾值的詞語,直到高頻詞集的大小達到大小閾值(第(4)~(15)行)。

低頻詞的選擇取決于PMI,因為其對詞頻的敏感度較低。將所有PMI值高于正面閾值的詞語挑選出,以形成一個低頻詞集。將正向和負向規(guī)則集一起生成,以在分類程序中對回歸值進行修改。

2.5 分 類

為了更有效更準確分類提取的特征,本文引入了支持向量回歸(support vector regression,SVR)工具包作為分類算法[11]。與SVM中只能使用一個固定閾值不同,SVR允許動態(tài)選擇分類閾值。

SVR在訓練程序中需要調整兩個參數(算法3):模型參數v和分類閾值。本文使用10倍交叉驗證方法,將數據集分為訓練集和測試集[12]。當分類結果達到極值時由迭代決定參數值。分類()表示分類程序,評價()是對分類結果的精確率、召回率和F-測度進行評價。

算法3: 訓練

(1)for(v=0.1;v<1;v+=0.1)do

(2) Libsvm_訓練(v);

(3) 分類();

(4)for(t=-1;t≤1;t+=0.05)do

(5) 評價(t);

(6)endfor

(7)endfor

分類程序(算法4)中,在決定最終分類結果之前,通過PMI生成的兩個規(guī)則集對回歸值進行修改。由于規(guī)則犯錯的可能性較小,本文將正向樣本的修正值設為2.0,將負向樣本的修正值設為-2.0,以使得分類結果不會受到閾值的影響,閾值范圍從-1到1。

為實施多類別分類,本文訓練每個類別的二元分類器。選擇在回歸值和閾值之間距離最大的類別作為最終結果,因為該類別的置信度最高。

算法4: 分類

(1) 結果=libsvm_預測();

(2)for每個文章[i] ∈訓練_語料庫do

(3)for每個詞[j] ∈文章[i]do

(4) if 詞[j]∈R負向then

(5) 結果[i]=-2.0;

(6)break

(7)endif

(8)if詞[j] ∈R正向then

(9) 結果[i]=-2.0;

(10)break

(11)endif

(12)endfor

(13)endfor

(14)return結果

3 實驗結果與分析

為了驗證提出算法的優(yōu)異性,選取不同的數據集進行實驗。仿真平臺所用的PC機為:Core i3雙核CPU,2.49 GHz,8 GB RAM,Windows 10操作系統(tǒng)。開發(fā)工具:VS2010和Intel發(fā)布的開源計算機視覺,開發(fā)語言:C/C ++。為了對算法的性能定量評價,引入信息檢索中常用的指標:準確率(Precision)、召回率(Recall)和F值(F測度)。準確率P表示正確檢測特征與檢測出特征的比。在本文中為檢測正確的情感數(TN)與檢測情感數(TF)的比例[13],即

(2)

召回率R為檢測的相關特征數與實際相關特征數的比,即

R=檢測的相關特征數/實際相關特征數

(3)

F值則是準確率與召回率結合的評價方法,即

(4)

F值是對P和R的調和平均值,只有P和R均高的時,才會產生較高的F。因此,F也表示算法的綜合性能。

3.1 數據集

為了保持微博的真實性和實用性,從新浪微博中隨機選擇了9000個原始的中文微博文章,并將其作為數據集。由兩個注解人員分別完成標注。有分歧的標注約占35%??紤]到情緒組合之間缺少明確的界限,這一數值是可以接受的。不一致的標注由注解者從產生分歧的標簽中選擇一個作為最終標簽。

3.2 實驗分組設置

本文在4個組(組1~組4)上進行實驗。如表1所示,組1僅應用了扁平式分類方法。與之相反,組2應用了層次化分類方法。組3在組2的基礎上通過特征選擇進行優(yōu)化。組4在使用了上文提到的所有優(yōu)化方法后,在分割步驟中還應用了一個心理學情緒詞典。在該心理學情緒詞典中共有超過52 000個詞匯,本文將這些詞匯分為6組。每組能夠分別描述一種類型的情緒。這些情緒分別為高興、憂慮、擔心、憤怒和厭惡。所有的結果均取5輪實驗結果的平均值。

表1 分組設置

3.3 分層結果

分層結果被用于評價單一分類器的性能。對每個分類器進行訓練,使其區(qū)分自身類別和相鄰類別之間的樣本。例如,對悲傷、內疚、失望和思念情緒的分類器進行訓練時,對其提供屬于這些情緒的上層類別(如憂慮類別)的訓練樣本。

第1層和第2層的二元分類結果見表2。結果表明應用所有的3個優(yōu)化方法的組4性能最優(yōu)。其中,組4在第2層的F-測度大約是0.9,這是一個非常高的數值。此外,其在第1層的F測度也達到了大約0.85。

通過比較組2和組3,能夠觀察出后者的性能優(yōu)于前者。這表明了本文的特征選擇方法是有效的,該方法在保留了高度相關的特征同時,移除了許多干擾特征。

組4在組3的基礎上有一些性能改善,大多是在1%~3%之間。這表明心理學情緒詞典對分類產生了積極效果,這是組3和組4之間唯一的區(qū)別。

第3層和第4層的分類結果見表3。在大多數情況下,組3的性能優(yōu)于組2,這再次表明了特征選擇方法的有效性。與第1層和第2層差別相似,組4在大多數情況下較組3有1%~3%的性能提高。組4在第3層和第4層的F-測度均超過0.85,而在第4層大部分都超過了0.9。這表明所有的分類器均表現優(yōu)異,可以預測整體模型會發(fā)揮出良好的性能。

表2 第1層和第2層的結果

表3 第3層和第4層的結果

3.4 層次化結果

在層次化分類中,將每個訓練樣本從頂層到底層一次分類。分類結果見表4。

正如組1和組2之間的比較可以觀察出,采用層次化分類方法能夠在超過一半的情況下提高性能,在扁平化的分類體系中,當給出整個數據集時,每個分類器不能輕易區(qū)分自身類別樣本和其它類別樣本。與之相反,層次化的分類方法通過上層分類器移除了大多數不相關的樣本,使得較低層的分類器可以輕易的分類。

從表4中可觀察出,當應用特征選擇和心理學情緒詞典時,其性能有所提高,這與前文得出的結果一致。

表4 層次化的結果

3.5 情緒成分分析結果

文本采用一般人類評判標準評估實驗結果,如表5所示。一般來說,如果一篇文章的分析結果得到了超過半數評判員的支持,即被視為合理分析。實驗中,評判員分別從測試集中隨機挑選50篇文章進行評判。超過70%的結果得到了半數以上的評判員支持。此外,68%的結果得到了80%評判員的支持,將近一半的結果得到了所有評判員的支持,這表明了本文算法的有效性。

表5 情緒成分分析結果

4 結束語

為了更好識別中文微博文章情緒,并描繪出不同的情緒差異,提出了一種基于層次化分類耦合成分分析的情緒識別算法。為了更好描述情緒,在粗粒度的情緒類別中加入細粒度的情緒分類,建立了層次化情緒結構。針對單一的分類結果無法準確地反映出情緒成分,在多類別分類中的置信理念基礎上,提出一種ECA算法,以檢測主要情緒并計算其在文中的比例。新浪微博的情緒分類結果印證了算法的有效性。

微博中的諷刺性表達涉及更深層次的語義分析、情景分析和語境分析,這將是未來研究內容。

猜你喜歡
層次化類別語料庫
面向量化分塊壓縮感知的區(qū)域層次化預測編碼
《語料庫翻譯文體學》評介
鐵路傳送網OTN設備互聯互通開銷層次化處理研究
服務類別
基于JAVAEE的維吾爾中介語語料庫開發(fā)與實現
艦船系統(tǒng)間電磁兼容性的層次化優(yōu)化方法
基于層次化分類器的遙感圖像飛機目標檢測
論類別股東會
中醫(yī)類別全科醫(yī)師培養(yǎng)模式的探討
聚合酶鏈式反應快速鑒別5種常見肉類別