胡召亞,張順香
(安徽理工大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,安徽 淮南 232001)
微博通常既包含著一些熱點(diǎn)事件和新聞話題的描述,也包含著廣大用戶對(duì)這些事件或新聞的態(tài)度和看法,通過分析用戶在線發(fā)表的內(nèi)容來了解事件的輿論走向,對(duì)政府和社會(huì)把握社情民意有著重要意義。基于此,本文對(duì)微博進(jìn)行情感傾向的研究與分析。
目前,中文情感傾向分析的研究方法主要分為兩大類。一類是基于情感詞典與規(guī)則的方法。文獻(xiàn)[1-5]都是以情感詞典為基礎(chǔ),考慮語義規(guī)則的影響對(duì)文本進(jìn)行情感分析與研究。文獻(xiàn)[6]將語義規(guī)則與膠囊網(wǎng)絡(luò)融合,增強(qiáng)綜合句子的表示學(xué)習(xí),提高跨域情緒分類的性能。文獻(xiàn)[7]通過構(gòu)建多級(jí)詞庫,制定成詞規(guī)則,開展串頻統(tǒng)計(jì)給出一種新詞識(shí)別方法。另一類是基于機(jī)器學(xué)習(xí)的方法。文獻(xiàn)[8-10]采用特征融合的方法,構(gòu)建不同模型進(jìn)行情感判別。文獻(xiàn)[11]采用基于層次結(jié)構(gòu)的多策略方法,分類效果比單純使用表情符號(hào)和情感詞典有一定提高。文獻(xiàn)[12-13]利用依存句法與關(guān)聯(lián)規(guī)則進(jìn)行特征提取與構(gòu)建,從而進(jìn)行情感分析。文獻(xiàn)[14-17]利用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,建立情感分類模型進(jìn)行情感分析。文獻(xiàn)[18]提出了利用卷積神經(jīng)網(wǎng)絡(luò)與k-means聚類算法結(jié)合的短文本聚類模型。文獻(xiàn)[19]以用戶信息為基礎(chǔ),分析用戶的偏好話題,并推薦給其他信息相似的用戶作為核心人物,提出基于用戶聚類的微博推薦算法。
根據(jù)目前已有的中文微博情感分析方法以及現(xiàn)階段的文本情感分析領(lǐng)域的研究成果,考慮以下幾點(diǎn):①如何對(duì)存在誤導(dǎo)語句的長微博進(jìn)行情感分析,并減少計(jì)算量,提高工作效率;②對(duì)于存在復(fù)雜句型的句子,如何提高文本情感值的準(zhǔn)確度。針對(duì)上述問題,本文提出一種基于關(guān)鍵句的中文微博情感分析的方法。該方法首先對(duì)微博語句進(jìn)行關(guān)鍵句提取,再利用多規(guī)則方法,即句型規(guī)則與句間關(guān)系規(guī)則計(jì)算關(guān)鍵句的情感值。情感分析工作主要分為兩個(gè)部分,具體實(shí)現(xiàn)框架如圖1所示:
1)關(guān)鍵句提取。首先引入大連理工大學(xué)的情感詞匯本體作為情感詞典,計(jì)算語句的情感屬性值與位置屬性值,然后通過構(gòu)建的關(guān)鍵特征詞詞典計(jì)算語句的情感特征詞屬性值。最后篩選得分較高的語句作為關(guān)鍵句。
2)情感傾向性計(jì)算。首先提取情感詞利用句間關(guān)系規(guī)則計(jì)算子句的情感值,再利用句型規(guī)則對(duì)整個(gè)關(guān)鍵句情感值進(jìn)行計(jì)算。最后,與表情加權(quán)求和得到整體情感傾向值。
圖1 情感分析框架圖
關(guān)鍵句抽取算法主要考慮句子的3個(gè)屬性:情感屬性、位置屬性與關(guān)鍵特征詞屬性。在一篇微博中,對(duì)每個(gè)句子計(jì)算上述3個(gè)屬性,并進(jìn)行加權(quán)求和,獲得每個(gè)句子的得分,設(shè)定閾值,選擇得分大于閾值的句子作為關(guān)鍵句。句子si分值函數(shù)
其中,α、β與γ為調(diào)節(jié)參數(shù),為使結(jié)果更加準(zhǔn)確,它們的值通過機(jī)器學(xué)習(xí)的方法訓(xùn)練得到。
圖2 關(guān)鍵句抽取流程圖
由于微博文本語句的發(fā)散情況,情感屬性用來識(shí)別句子是否具有情感傾向性。本文采用大連理工大學(xué)的情感詞匯本體作為情感詞典[20]。定義情感屬性emo(si)
其中:wordi,k表示si中第k個(gè)詞語;m表示si中詞語的個(gè)數(shù)。當(dāng) wordi,k為情感詞時(shí),estimate(wordi,k)=1,否則為 0。
通常情況下,一段文字的起始句子為點(diǎn)題,結(jié)尾為總結(jié)。對(duì)于一篇長微博而言,開頭和結(jié)尾一般表達(dá)了作者的觀點(diǎn)和情感傾向,應(yīng)該賦予較高的權(quán)重。位置屬性pos(si)表示了句子在整篇微博中的位置信息。
其中:n為該篇微博中的句子個(gè)數(shù);si代表該微博的第i個(gè)句子。該公式保證了在整篇微博中,開頭和結(jié)尾的句子具有較高的權(quán)重。
影響情感傾向的關(guān)鍵句中一般含有總結(jié)性詞語,可以作為關(guān)鍵特征詞,例如“總之”等。同時(shí),含有第一人稱表述詞的語句通常明確表達(dá)了發(fā)布者的觀點(diǎn)或者情感傾向,例如“我”等。因此,第一人稱表述詞也可作為關(guān)鍵特征詞。本文根據(jù)語料通過經(jīng)驗(yàn)進(jìn)行整理建立了兩類關(guān)鍵詞集合:總結(jié)性詞語集C1={總之、因此、所以、總而言之、總的來說、綜上所述、喜歡、其實(shí)、覺得、最好、建議、支持、反對(duì)、贊成、應(yīng)該、但是、但、理解};第一人稱表述詞語集C2={我、本人、俺、人家、咱、咱們}。
若上述詞語存在于某個(gè)句子中,則該語句為微博關(guān)鍵句的可能性比較大,所以定義
關(guān)鍵句抽取算法如算法1所示。
images/BZ_98_276_953_1185_1014.png輸入:待識(shí)別的微博文檔輸出:保存關(guān)鍵句的數(shù)組1.輸入關(guān)鍵句閾值λ以及微博文檔,定義字符串?dāng)?shù)組t,數(shù)組zscore;2.對(duì)微博文檔進(jìn)行預(yù)處理,即按標(biāo)點(diǎn)符號(hào)進(jìn)行分句。按順序放進(jìn)t中,t中下標(biāo)表示句子對(duì)應(yīng)位置;3.for each句子s in t 4.{for(k=1,2,…,m)5. { if(wordi,k∈情感詞集)6. estimate(wordi,k)=estimate(wordi,k)+1;7. 由(2)式計(jì)算情感屬性得分; }8. 句子的位置i=t的下標(biāo);9. 由(3)式計(jì)算位置屬性得分;10.由(4)式計(jì)算關(guān)鍵特征詞屬性得分;11.由(1)式計(jì)算句子關(guān)鍵句得分;12.if(score>λ)13.{將s放入字符串?dāng)?shù)組z中;14.將score放入數(shù)組zscore中;}15.}
算法1中,第4~7行計(jì)算句子的情感屬性得分,第8~9行和第10行分別計(jì)算句子的位置屬性得分和關(guān)鍵特征詞屬性得分,第12~14行判斷是否作為關(guān)鍵句并將其存入數(shù)組中。
中文語法句型豐富多變,在含有情感詞的關(guān)鍵句中,任何修飾詞都能夠影響情感詞所在語句的傾向值,故利用句型規(guī)則和句間規(guī)則計(jì)算句子級(jí)的情感傾向值。
每個(gè)關(guān)鍵句都是一個(gè)完整的句子,即以句號(hào)、問號(hào)、感嘆號(hào)結(jié)尾的句子,Si表示第i個(gè)關(guān)鍵句。本文只考慮4種常見的句型,即感嘆句、疑問句、反問句以及陳述句。分別對(duì)應(yīng)4條句型規(guī)則,由Ci表示相應(yīng)規(guī)則下的權(quán)值:
感嘆句一般表達(dá)作者的強(qiáng)烈意圖。若Si為感嘆句,則情感傾向極性加強(qiáng),令Ci=2。反問句的表達(dá)一般會(huì)改變句子的情感極性。若Si為反問句,則改變情感傾向的程度值,令Ci=-1.5。若Si為疑問句,并不改變句子的情感極性,只是提出疑問,令Ci=1。若Si為陳述句,對(duì)情感傾向值沒有影響,令Ci=1。
在一個(gè)復(fù)句中,存在以逗號(hào)分隔的多個(gè)子句,這些子句之間的關(guān)系也影響著整個(gè)文本的情感傾向值。本文考慮常見的四種句間關(guān)系,即轉(zhuǎn)折關(guān)系、假設(shè)關(guān)系、遞進(jìn)關(guān)系與否定關(guān)系。定義pi表示句間關(guān)系規(guī)則下的權(quán)值:
2.2.1 轉(zhuǎn)折關(guān)系規(guī)則
在含有轉(zhuǎn)折關(guān)系的關(guān)鍵句中,說話者所表達(dá)的意圖往往在后面的子句中。故對(duì)應(yīng)規(guī)則如下:
若Si中只存在前接轉(zhuǎn)折詞且出現(xiàn)在子句sj中,則p1,p2,…,pj=0,pj+1,…,pn=1;若Si中存在后接轉(zhuǎn)折詞(或同時(shí)存在前接轉(zhuǎn)折詞)且后接轉(zhuǎn)折詞出現(xiàn)在子句sj中,則p1,p2,…,pj-1=0,pj,pj+1,…,pn=1。
2.2.2 假設(shè)關(guān)系規(guī)則
含有假設(shè)關(guān)系的關(guān)鍵句中,往往說話者的主要意圖在前半部分的前提條件,由此便弱化了后半部分。對(duì)應(yīng)規(guī)則如下:
若假設(shè)關(guān)系后連接詞出現(xiàn)在子句sj中且存在前連接詞出現(xiàn)在子句sj之前,則p1,p2,…,pj-1=1,pj,…,pn=0.5。
2.2.3 遞進(jìn)關(guān)系規(guī)則
通常情況下,在遞進(jìn)關(guān)系的關(guān)鍵句中,后半部分的子句要比前半部分的子句意義更深、更大。故對(duì)應(yīng)規(guī)則如下:
若關(guān)鍵句中存在遞進(jìn)關(guān)系連接詞且出現(xiàn)在子句sj中,則p1,p2,…,pj-1=1,pj,…,pn=1.5。
2.2.4 否定關(guān)系規(guī)則
若關(guān)鍵句中存在否定詞出現(xiàn)在子句sj中,則pj=-1。
微博表情在微博文本的情感分析中起著重要的作用。在新浪微博中,表情符號(hào)是文本形式的表達(dá),一個(gè)表情符對(duì)應(yīng)的文字包含在一對(duì)中括號(hào)之間,所以利用正則匹配的方法獲取表情符號(hào)。本文通過人工的方式對(duì)常用的表情符號(hào)進(jìn)行情感強(qiáng)度標(biāo)注,分為三個(gè)類別:積極、消極和中性。將采用表情情感值與文本情感值進(jìn)行加權(quán)處理來獲得最終的情感傾向值。
前述工作結(jié)束后,將得到關(guān)鍵句組成的文本中表情、復(fù)句、分句、短語四個(gè)層面上的參數(shù),由此計(jì)算最終的情感傾向值,用S來表示。
1)分句情感值Score(si)
2)復(fù)句情感值Score(Si)
3)關(guān)鍵句組成的文本情感值Score(total)
4)表情情感值Score(E)
value(E)表示微博表情情感值,由微博文本中所有出現(xiàn)的表情情感值求和后取平均確定。
5)微博情感值S
λ值取0.64,由多次試驗(yàn)取得。
實(shí)驗(yàn)數(shù)據(jù)集采用公開的微博情感分析數(shù)據(jù)集,在該數(shù)據(jù)集中,包含200萬條微博數(shù)據(jù),均已完成情感傾向的標(biāo)注。本文在標(biāo)注情感極性為褒義、貶義、中立的數(shù)據(jù)集中各分別隨機(jī)選取1 000條微博作為實(shí)驗(yàn)數(shù)據(jù)。
通過采用本文的算法對(duì)微博進(jìn)行情感分析,將分析的結(jié)果與人工標(biāo)注的結(jié)果進(jìn)行對(duì)比,以準(zhǔn)確率Precision、召回率Recall及F1作為評(píng)估指標(biāo)。其計(jì)算公式如下:
為驗(yàn)證本文提出的基于關(guān)鍵句分析的中文微博情感分析方法,設(shè)計(jì)實(shí)驗(yàn)如下:
實(shí)驗(yàn)1:對(duì)實(shí)驗(yàn)數(shù)據(jù)進(jìn)行預(yù)處理之后,考慮句型規(guī)則和句間規(guī)則,引入表情符號(hào),計(jì)算微博文本的情感傾向,即規(guī)則+表情+情感詞典的方法,進(jìn)行實(shí)驗(yàn)。
實(shí)驗(yàn)2:采用本文提出的基于關(guān)鍵句提取的中文微博情感計(jì)算方法,在實(shí)驗(yàn)1的基礎(chǔ)上引入關(guān)鍵句抽取算法,對(duì)抽取到的關(guān)鍵句進(jìn)行情感計(jì)算分析。對(duì)收集到的數(shù)據(jù)集進(jìn)行如上實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表1。
表1 微博數(shù)據(jù)情感分析實(shí)驗(yàn)結(jié)果
從表1可以看到實(shí)驗(yàn)結(jié)果的變化,與實(shí)驗(yàn)1中簡單考慮語義規(guī)則的方法相比,在加入關(guān)鍵句提取之后,正確率、召回率、F1的平均值都有所上升,因?yàn)樵陂L微博中,有部分不相關(guān)的語句影響文本的情感傾向,故在進(jìn)行關(guān)鍵句提取之后,結(jié)果更加準(zhǔn)確。
針對(duì)中文語言的特點(diǎn)和微博中部分長微博的情況,本文提出一種基于關(guān)鍵句的中文微博情感分析算法。首先提取影響微博情感傾向的句子作為關(guān)鍵句,再對(duì)關(guān)鍵句采用句型規(guī)則與句間規(guī)則的方法進(jìn)行情感分析,實(shí)現(xiàn)了從詞語級(jí)到句子級(jí)再到文檔級(jí)的情感計(jì)算。