潘 浩,衛宇杰,2,潘爾順,2
(1. 上海交通大學 機械與動力工程學院,上海 200240 2. 上海交通大學 中國質量發展研究院,上海 200240)
近年來,憑借在線交互的便捷性與移動設備的迅猛發展,互聯網成為了人們表達情感和分享經驗的重要平臺。人們可以跨越時空表達自己,產生了大量的觀點信息,而這些信息無論是對個人、企業還是政府部門,都具有輔助決策的重要作用。以商家和消費者為例,認為可以借鑒評論購買商品的人群占比 82%[1];以企業為例,制造型企業可以從自身產品相關的評論中發現存在的質量問題并加以改進。日本富士通公司開發了從中、日、英三國的論壇和博客中提取涉及企業及其自身產品的評價信息的技術,根據從萬維網上抓取的大量用戶的評論對自身產品做出正確評價[2];服務型企業可以實時監測服務過程中的文本或語音提升自身服務質量,中金公司開發的智能質檢系統,通過實時監測來自客戶的語音或評論分析其情感變化,進而給客服人員預警和建議,降低投訴率,提升服務質量;以政府部門為例,2011年的阿拉伯之春運動中,社會媒體中出現了大量包含傾向性的帖子,對區域政治格局產生了重要影響[3]。在研究語料增多與研究意義重大的雙重影響下,2000年前后出現的文本情感分析進入了全面發展的快車道,學術成果及其衍生產品或公司呈現爆炸式增長。Google、Microsoft、HP、Amazon、eBay、SAS、Oracle、Adobe、SAP以及國內的BAT等公司都開發了自己的情感分析系統,應用領域也涉及各行各業各層面。
情感分析也稱觀點挖掘,目的是從文本中分析出人們對于實體或屬性所表達的觀點、情感、態度、評價或情緒。根據研究目的或語料的顆粒度,可以將其細分為很多方向,如句子級情感極性分析、短語級情緒分析等,但均可看作分類問題。其研究方法主要包含有監督和無監督兩類。
有監督的情感分析方法通過對帶有情感標記的文本進行分析訓練獲取模型。2002年,Pang等首次將樸素貝葉斯和SVM應用到影評的情感分類中[4],奠定了監督學習算法在有監督的情感分析領域的主導地位。眾多研究者開始嘗試更多的學習算法,訓練模型所選的文本特征也由詞、詞頻、詞性、短語規則擴展到依存句法關系。代表性工作有: Ng等(2006)使用詞性組合(如形容詞+名詞)作為特征用于模型的訓練[5];Chaffar和Inkpen(2011)比較了決策樹、樸素貝葉斯和SVM在文檔級和句子級上的分類效果,驗證了SVM在情感分類中具有更好的結果[6];Massung(2013)等從依存句法樹中提出了樹深度、句法類別、分枝數量等作為特征[7]。除了標準的機器學習方法之外,也有少量學者使用自定義情感函數用于情感分類,如Dave(2003)提出了基于正負面評論詞的打分函數[8]。這些方法在需要大量人工標注的語料庫的同時,也面臨著應用領域的泛化問題,如針對影評建立的機器學習模型較難應用于電商評論。因此,越來越多的學者開始關注模型應用領域的自適應問題,如Hassan 等(2017)提出將 CNN 與 LSTM 相結合的深度學習模型[9]優化了Santos 等(2014)提出的卷積神經網絡(CNN)情感分析模型[10]。吳冬茵等(2017)通過從輔助數據中遷移與測試集數據分布相符的高質量樣例擴充訓練數據集,實現遷移學習用于分類器訓練[11]。
無監督的情感分析方法有效避免了大量的人工標注工作,更好地融入人類自身的經驗,減少了機器學習的盲目性。主要包含基于句法模板和基于詞典兩類方法。Turney(2002)等假設表達情感的部分由不超過3個詞的短語組成,并定義了多個句法模板(如: 形容詞+名詞+任意詞),利用規定的情感詞和短語的互信息(PMI)計算出短語的情感極性[12];Feng(2013)等利用谷歌、維基百科、推特等多個數據集證明了PMI計算方法的有效性[13];此后,不少學者給出了更多的句法模板或新的情感表達規則,如Jia(2009)等定義了否定詞與其后其他詞之間的詞語間隔,完善了對否定或雙重否定表示肯定的情感判斷[14]。基于詞典的情感分析比句法模板的發展更加成熟,除了最初的各類情感詞典外,Polanyi和Zaenen(2004)補充了情感轉置詞(否定詞、轉折詞/情態動詞等)對情感詞的影響[15];Kennedy等(2006)進一步補充了Polanyi的研究[16];Taboada等(2011)對情感詞典進行了細化,將情感詞的取值范圍由{-1,0,1}擴展到了-5到5[17]。從情感分析的邏輯而言,無論是基于句法模板還是基于詞典的方法,都存在需要大量的人類經驗和勞動構建模板或詞典的問題。這一問題使得自動構建句法模板或詞典成為了熱門,如Saias(2015)等通過提取句子主干, 包括否定關系、轉折關系、動詞、形容詞詞根等, 再利用通用情感詞典發現情感詞進行監督學習,來判斷屬性對應的情感[18]。熱西旦木·吐爾洪太(2017)等在情感分類過程中對詞典進行遞歸擴充,在維吾爾語情感分析領域取得了較好結果[19]。受限于句法模板較單個詞條更具多樣性,自動或半自動建立句法模板的發展逐漸滯后于自動或半自動情感極性詞典的建立。
然而,盡管基于詞典的方法發展較快,仍受兩個問題制約: (1)不包含情感詞的語句也可能表達情感,如“怎么會這樣?!”;反之,包含情感詞的語句也可能不表達情感,如“美觀程度不作評價”。(2)情感詞在不同的句法結構中可能表達不同的極性。如“漂亮”表示積極情感,在句法結構“不漂亮”中卻表達消極情感,在“不可謂不漂亮”中又偏向于積極情感。而基于句法模板的方法可在不考慮情感詞的條件下,進行客觀句與情感句的分類,同時協助判斷情感詞在不同句法結構中的極性變化。因此,可引入自動提取句法模板的方法對無監督的情感分析進行改進。
為了研究句子級情感句法模板的自動提取,本文定義了分枝、剪枝、嫁接、枝解四種操作,壓縮語句的依存句法關系特征。同時,假設可表達情感的依存句法關系類型有限,極大弱化了句法模板結構的多樣性對自動提取過程的限制,建立了有監督的句法模板提取模型。并結合具體實驗驗證了提取結果的有效性以及對無監督情感分析的影響。
文本可以表達豐富的情感,但表達情感的句法結構卻是有限的。基于該假設,可將文本的情感極性分析分為兩步進行: ①識別文本中是否存在可表達情感的句法結構;②分析可表達情感的語法結構的情感極性。
本文采用依存句法樹表征語句的句法結構,并定義了分枝、剪枝、嫁接、枝解四種操作壓縮依存句法樹的特征空間,達到提高效率和精度的雙重目的。
為了提取影響情感表達的主要句法結構并保證提取過程的有效性,本文以信息增益(IG: Information Gain)為依存句法關系的篩選指標,提出了一種有監督的依存句法關系自動提取模型。最后,結合已有的情感極性詞典給出依存句法關系與情感之間的聯系。
對給定的句子S分詞,可將其轉換成按一定順序的詞語及標點的向量,即式(1):
wi(i=1...n) 表示詞語或標點。
基于句法結構本質上包含詞和詞對之間的關系的假設,依存樹(Dependency Tree)T可以被表示為一個有向多重圖T=(V,A),其中,節點和邊的定義為:
(1)V={w1...wn},其中每一個節點對應一個詞或標點wi,依存樹必須包含所有詞且不可重復。
(2)A={l1...lm}?L,L是所有文本依存關系類型的集合,包含了依存樹中所有可能的邊lj(j=1...m)。
將依存樹T中每條邊lj連同相連的兩個節點稱為一個三元組tj,如式(2)所示。
式(2)中包含支配詞(governor)wg、修飾詞(dependent)wd及其依存關系lj。依存樹T也可表示為式(3):
同時,依存樹需要滿足三個約束:
(1) 單核心(Single-headed): 每個詞只能修飾一個核心詞;
(2) 弱連通(Weakly-connected): 將所有有向邊替換為無向邊后,任意一對節點都是連通的,則稱此圖是弱連通的;
(3) 無環(Acylic): 對于任意一個節點,無法經過有向邊后重新回到該點。
文獻[20]中列舉了常用的三個依存句法分析軟件,并指出了StanfordNLP更加常用,文獻[21]關于機器翻譯的應用,同樣驗證了stanfordNLP對于識別句法依存關系的優越性。因此,本文選用StanfordCoreNLP(1)詞性及依存關系解釋文檔下載: https://github.com/Quincy1994/standfordParser/(3.8.0版本)求解評論的依存關系。以“企業效益非常低,口碑也不好,需要推進質量品牌建設”為例,根據StanfordCoreNLP輸出結果,借助Visio繪制依存樹,如圖1所示。

圖1 基于StanfordCoreNLP所得依存句法樹示例
一句文本中可能包含多個子句,但并不是每個子句都表達情感,如果全部引入模型,不僅影響模型精度,還降低了效率。同時,即使一句文本中每個子句表達了情感,只選擇其中一個表達情感的子句也不影響“該句表達了情感”的結論。因此,在識別表達情感的句法結構時,可以刪除不必要的子句壓縮依存樹的特征空間,在減少噪聲、降低句法結構多樣性的同時提升效率。本文定義了依存句法樹的四種基本操作以達到壓縮特征空間的目的。
2.2.1 分枝操作(B: branch)
當前較常使用的子句識別依賴于標點符號,在文獻[22]中,使用逗號、冒號、分號將句子切分,并稱之為切分標點。但并不是所有的句子均可以通過逗號切分,如圖1對應的“企業效益非常低,口碑也不好,需要推進質量品牌建設”中,“效益非常低”與“口碑也不好”是并列關系,均為對“企業”的描述,應將其切分到一個子句中。
本文基于依存句法樹做出如下定義:
片段(segment): 句首到第一個標點符號間或任意兩個標點符號間的文本,記為seg。
節點的深度(depth): 從根節點開始自頂向下逐層累加,記為dep,根節點的深度約定為1。
節點的祖先(ancestors): 從根節點到該節點所經分支上的所有節點(包含根節點,不包含當前節點,約定根節點的祖先為自身),記為anc;
節點的最近祖先(父節點)(nearest ancestor): 節點的所有祖先中深度值最大的祖先,記為Nanc。
子句(sub-sentences): 語義相關的片段集合,記為Ssub。
對給定的句子S,假設可分為X個子句,包含Y個片段,每個片段有ty個詞條,則S表示為式(4)。
Ssubx(x∈{1,...,X})表示第x個子句,為待求變量;segy(y∈{1,...,Y})表示第y個片段,可表示為式(5)。
子句識別規則如下:
(1) 求出每個片段的最近祖先,記為該片段的Nanc,如式(6)所示。
其中,anc(segy)表示片段segy的所有祖先的集合,如式(7)所示。
(2) 按語句的原有順序合并具有相同Nanc的片段,如式(8)所示。
(3) 每個相異的Nanc對應一個子句。
2.2.2 剪枝操作(P: pruning)
將語句表示成子句的集合后,需要篩選出其中最可能表達情感的1個子句作為當前語句的情感特征句。
假設能表達情感的句法結構的最小單位為三元組,記為e。由于句法結構的相似性依賴于詞性及其依存關系,因此三元組e與三元組t之間的關系可表示為公式(9)。
f表示三元組e與三元組t之間的映射函數,pos(part of speech)表示詞性。
但并不是所有表達情感的結構均可以用三元組表示,如“A沒有B好”,其表達情感的核心為“沒有B好”,并不是簡單的三元組,而是如圖2所示的結構。
我們稱之為“子樹”結構,記為Tsub。文獻[23]總結了對句法分析產生影響的4類子樹,如圖3所示。同時文獻[24]發現,當子樹中的依存關系超過3個時,對于句法已基本不產生影響,因此,本文將能表達情感的所有句法結構歸結為圖3的(a)(b)(c)三類,其結構的文字形式見表1。

圖2 “沒有B好”的依存句法關系圖

圖3 四類常用的子樹圖
假定子句Ssubx對應的依存句法樹T可拆分為包含R個子樹的集合Tsub。

表1 三種子樹的結構式
定義篩選規則如下:
(1) 求解子句Ssubx分解為子樹后,各子樹對應情況下,子句表達情感的概率如式(10)所示。
其中,ne表示語料庫中表達情感的語句個數,N表示語料庫所有語句的個數。
p(Tsubr)為句法子樹Tsubr在語料庫所有子句中出現的概率,可表示為式(12):
其中,nTsubr表示語料庫中包含Tsubr的語句個數。


(2) 求解子句Ssubx表達情感的概率;

(14)
(3) 只保留語句S中表達情感的概率最大的子句作為S的特征句,如式(15)所示。
2.2.3 嫁接操作(G:grafting)
刪除冗余的子句后,子句內部的句法結構仍會有明顯冗余或重復進而降低運算的效率。文獻[25]中,盡管也考慮到了該因素的影響,但僅處理了依存關系為“名詞合成修飾”的枝葉,如 “企業”與“效益”之間的依存關系為“nn”,則將“企業”嫁接到“效益”上,組成1個新詞“企業效益”,保留原核心詞“效益”的詞性。并未對其他情況冗余進行處理,本文對照詞性表總結出的嫁接情形如表2所示。

表2 需嫁接子樹結構集
“*”表示通配符,可匹配任意詞性。
2.2.4 枝解操作(D: decomposition)
語句情感表達的概率取決于句中可表達情感的短句或詞語(包含表情)的實際含義,等價于語句對應的依存關系樹中包含的句法結構表達情感的概率。在“剪枝操作”中我們定義了三類可表達情感的子樹,進而將子句情感表達的概率表示為子樹表達情感的概率關系。
本文采用自下而上的遞歸算法完成樹的分解操作。需要注意的是,求解b類子樹時,由于相聚較遠的節點很難產生關系,本文只考慮相鄰的兄弟節點,偽代碼如下:

輸入: 子句Ssub對應的詞性依存樹T輸出: 子句Ssub所包含的所有可能子樹Tsub//nodei表示樹T的第i個節點//Tsuba表示符合圖3(a)結構的子樹//Tsubb表示符合圖3(b)結構的子樹//Tsubc表示符合圖3(c)結構的子樹n=m=0For j← depth(T) to2 For i←1 to count(node) If depth(nodei)=j Tsuba.append= t(Nanc(nodei),nodei) n=m=m+1 End forEnd forFor tsubam in Tsuba If Nanc(nodem) = Nanc(nodem+1) Tsubb.append=t(tsubam,nodem+1) End for If depth(nodem)>=2( Tsubc.append=t(tsubam,Nanc(Nanc(nodem))))End forTsub=merge(Tsuba,Tsubb,Tsubc)Return Tsub
代碼中,函數count()表示計數,A.append()表示給向量A追加元素,函數t()表示節點與子樹的一一映射,merge()表示將多個向量拼接為單個向量。
假設能用于表達情感的所有句法子樹共有Z個且已知,記為集合Tsube:
輸入帶有情感標記的訓練語料庫Ct和驗證語料庫Cv,經過分枝、嫁接、枝解和剪枝后,實現語句到單個子句再到子樹集合Tsub的轉換。
為了實現Tsube的自動提取并取得更好的結果,本文借助遺傳算法完成Tsube的更新迭代,并設計了構造較優初始解的流程作為初代種群以提高效率。對Tsub中所有不同的h個句法結構進行定序,每一種子樹對應一個基因位點[26],每個基因只有0和1兩種堿基[27],若某基因位點對應堿基為0,表示對應子樹不在Tsube中。自動提取流程如圖4所示。

圖4 情感子樹的自動獲取流程
其中,終止條件則可以是:
1) 多次結果之間的差值小于閾值;
2) 進化代數要求;
3) 精度達到要求。
為了縮減進化代數,本文采用貪婪法構造較為優異的Tsube作為初代種群的個體并進行復制。構造過程中,參考文獻[28],選擇子樹的IG作為子樹優先入選Tsube的依據。IG是信息論中的一個重要概念,并被廣泛的應用在機器學習算法中。其通過統計某一個特征項t在類別C中出現與否的文檔數來計算特征項t對類別C的信息增益,本質是考察引入特征前后信息熵的增值,值越大說明引入的特征對于當前類別的劃分效果越明顯,計算見式(17)。
構造初始種群中較優個體的流程如圖4所示,初始個體對應的句法結構集Tsube通過對子樹的IG值降序排列逐次獲取,直至Tsube中的元素覆蓋了全部的情感子句或剩余子樹對當前分類基本已不產生影響(IG的閾值取0.01)。

圖5 初始種群的構造流程
本文參照文獻[29]使用的Hownet情感詞典將情感單詞分為積極與消極兩類。根據詞典將Tsube中入選的句法結構中的情感詞的詞性進一步細分,如形容詞VA分為積極類形容詞VA_pos和消極類形容詞VA_neg。依據新的Tsube在驗證集中的情感傾向(概率是否大于50%)最終將對各子樹進行定性。
實驗數據為第三屆自然語言處理與中文計算會議(NLPCC 2014)任務2情感分析部分評測數據(2)下載鏈接: http://tcci.ccf.org.cn/conference/2014/pages/page04_ans.html。原數據集由22 431條標記好情緒類別的微博評論組成。將happiness、like、surprise情緒歸為積極,將sadness、fear、disgust、anger歸為消極。刪除其中借用表情而非文本表達情感的語句3 536條,保留 3 088條積極情感語句、2 639條消極情感語句和13 168條客觀語句,用于模板的自動提取與驗證。按照6∶2∶2的比例隨機篩選各部分語句組成訓練集、驗證集和測試集,概況如表3所示。

表3 實驗數據概況
預測結果可以根據目前廣泛采用的F值指標進行比較,F值為查準率P和召回率R的調和平均值。原則上,F值越大,模型效果越好。
其中,TP表示“預測為情感語句,實際為情感語句”,FP表示“預測為情感語句,實際為非表達情感的語句”,FN表示“預測為非表達情感的語句,實際為表達情感的語句”。
仍以“企業效益非常低,口碑也不好,需要推進質量品牌建設”為例,展示壓縮空間的四種操作,分枝、嫁接、枝解、剪枝結果依次如圖6~9所示。

圖6 分枝操作結果示意圖

圖7 嫁接操作結果示意圖

圖8 枝解操作結果示意圖

圖9 剪枝操作結果示意圖
分枝過程中,由于Stanford Parser模型會自動刪除分詞結果中的標點符號,需要提前標記好各片段包含的詞條信息作為輸入,結合依存樹確定各子句。如: 例句包含三個片段,片段1“企業效益非常低”與片段2“口碑也不好”的父節點均為“低”,片段3“需要推進質量品牌建設”的父節點為“好”。因此,片段1與片段2構成子句1,片段3作為子句2。需要注意的是,當單個評論包含重復詞時,需要區分標記。
按照初始個體的構造流程,對在情感子句中出現的所有204種子樹進行篩選,可得初始情感子樹集合,如表4所示。

表4 初始情感子樹集合

續表
對204種待確定子樹定序,可將情感子樹集合編碼為具有204個基因位點的個體。
3.3.1 驗證初始個體對于求解最優子樹集的影響
初始種群:
實驗組種群: 復制出2 000個表4對應的初始個體。
對照組種群: 隨機生成2 000個有且只有33個位點編碼為1的個體。
遺傳操作:
適應度: 檢測一個個體所表示方案的優劣性,本文采用情感子樹集合針對驗證集語句是否表達情感的預測的F值作為個體的適應度。
選擇算子: 采用輪盤賭選擇方法。適應度越大的個體被選擇的概率越大。
交叉算子: 采用基于位置的多點交叉方法。隨機選擇兩個父代,從一個父代的204個位點中隨機選擇102個位點復制給子代,并從另一個父代復制余下的102個位點。
變異算子: 隨機選擇個體及位點進行突變,突變后位點的編碼與突變前和為1。
設置種群大小為2 000,最大進化代數為150,交叉概率為0.7,變異概率0.1,選擇每代最大適應度作圖如10。過程中最大適應度為對照組的87.06%,對應情感子樹集見表5。

圖10 種群進化過程中最優個體特征曲線

TsubeTsube(AD,NR,nsubj)(VV,SB,auxpass)(AD,SP,discourse)(VV,SP,dep)(IJ,IJ,dep)(VV,SP,nsubj)(JJ,DEG,case)(VV,VA,dep)(JJ,JJ,amod)(VV,VE,ccomp)(JJ,JJ,dep)(VV,VV,advmod:rcomp)(NN,AD,advmod)(VV,VV,xcomp)(NN,CD,dep)[(NN,DT,det),(NN,SP,discourse)]

續表

續表
結果表明: ①利用貪婪法構建的初始解已足夠優異;②基于情感子樹預測語句是否表達情感的準確率非常高;③再次驗證了一個良好的初始種群可以大大提升遺傳算法的效率。
3.3.2 驗證依存關系與詞典結合對情感分析的影響
將表5中的所有情感子樹根據各核心詞的情感極性拆分成2個或4個,如(VV,VA,dep)結構中VA表示形容詞,若對應的詞語在情感詞典中,則可根據情感詞的極性將該子樹拆分為(VV,VA_pos,dep)和(VV,VA_neg,dep),得到新的情感子樹集合,并在驗證集上進行情感傾向的定性。若子樹的情感傾向取決于核心詞的情感極性,則舍去該子樹,若核心詞不在情感詞典內或子樹的情感傾向與核心詞的極性相反或無關,則保留該情感子樹,最終,得到新的情感極性子樹集合,如表6所示。

表6 新的情感極性子樹集合
新的情感極性子樹數量遠少于預期的原因為: 大部分情感子樹相關詞語并沒有出現在情感詞典中,且會因為詞語本身含義的不同而表達不同的極性。如: (IJ,IJ,dep)表示兩個并列語氣詞,當為“啊哈”時為積極情感,當為“啊呸”時為消極情感,在詞典中并未收錄該詞條。
實驗設置:
實驗組情感規則: 表5的情感子樹篩選出測試集中的情感語句,表6和Hownet情感詞典預測情感句的極性。
對照組情感規則: 基于Hownet情感詞典預期測試集的情感極性。
將兩組情感規則應用到測試集上,最終結果如表7所示。

表7 實驗組與對照組的預測結果(%)
從表7可知,基于句法模板與基于詞典方法的結合,明顯改善了基于詞典的預測結果。為了探究改進背后的原因,我們刪除了預測集中的所有客觀句,重新進行了實驗,結果如表8所示。

表8 刪除客觀句后實驗組與對照組的預測結果(%)
實驗組結果雖仍優于對照組,但提升效果已經沒有表7明顯。由此可推斷,句法模板的引入,更多地作用于情感句與客觀句的分類,即更多地彌補了相關研究所述的基于詞典方法的第1類缺陷。
綜合以上結果表明: 結合句法關系可以明顯改進基于詞典的情感分析效果。但在情感句極性的細分上仍有很大提升空間。
本文研究基于句法模板的情感分析問題,并在自動提取句法模板方面進行了創新: ①基于依存句法樹,定義了分枝、嫁接、枝解、剪枝四種壓縮語句的句法特征的操作,大大降低了句法結構的多樣性,為自動提取奠定了基礎;②利用貪婪法的思想構造了足夠優的情感子樹集合作為初始種群中的個體,明顯降低了求解最優情感子樹集合時的進化代數。最終的實驗結果也表明,本文自動提取的依存句法關系結構(情感子樹),在情感表達與否的判斷上具有非常好的效果,可以有效識別部分含有情感詞但不表達情感的語句,改善基于詞典方法在區分客觀句與情感句方面的高誤差率;同時,與情感詞典結合可以幫助正確區分含有比較級、情態動詞等情形時的情感極性,進一步提升基于詞典的情感分析方法的效果。不過,在情感句極性的細分方面,句法模板與詞典的表現都有較大提升空間,可通過完善情感詞典或引入新的方法解決。