王安君,黃凱凱,陸黎明
(上海師范大學(xué) 信息與機(jī)電工程學(xué)院,上海 201400)
近年來(lái)針對(duì)微博數(shù)據(jù)的情感分析引起了廣泛的關(guān)注[1],同時(shí)也促進(jìn)了立場(chǎng)檢測(cè)研究的興起與發(fā)展.立場(chǎng)檢測(cè)可以看作是針對(duì)特定目標(biāo)話題進(jìn)行的對(duì)情感分析任務(wù)的改進(jìn).2016年Mohanmmad 等[2]構(gòu)建了基于Twitter 數(shù)據(jù)的立場(chǎng)檢測(cè)英文數(shù)據(jù)集,并用于SemEval-2016 會(huì)議的Task 6:立場(chǎng)檢測(cè)(Stance Detection).隨后,Xu 等[3]從Mohammad 等人的工作中受到啟發(fā),構(gòu)建了面向中文微博的立場(chǎng)檢測(cè)數(shù)據(jù)集,并將其用于2016年的自然語(yǔ)言處理與中文計(jì)算會(huì)議(Natural Language Processing and Chinese Computing,NLPCC)發(fā)表的任務(wù)中.
立場(chǎng)檢測(cè)任務(wù)通過自然語(yǔ)言處理技術(shù),分析出當(dāng)前微博文本內(nèi)容對(duì)目標(biāo)話題的立場(chǎng)傾向是“支持”、“反對(duì)”還是“中立”.看似與情感分析相似,但情感分析側(cè)重的是一段文本中情感特征的極性,而立場(chǎng)檢測(cè)是要根據(jù)給定的目標(biāo)話題來(lái)判斷文本的立場(chǎng),在很多情況下是無(wú)法僅僅從文本的情感極性來(lái)判斷其立場(chǎng)分類的.例如,“最反感這些拉客的! 還有在機(jī)動(dòng)車道上行駛的!”,這條微博不考慮任何目標(biāo)話題時(shí),它的情感極性是消極的,但是當(dāng)針對(duì)“深圳禁摩限電”這個(gè)話題時(shí),這條微博的立場(chǎng)應(yīng)為“支持”.由于立場(chǎng)檢測(cè)任務(wù)比情感分析多出一步很重要的目標(biāo)話題特征,所以在模型的設(shè)計(jì)與使用上自然也要與情感分析有所不同.早期的立場(chǎng)檢測(cè)研究中,往往直接忽略掉目標(biāo)話題而只是對(duì)微博的文本內(nèi)容進(jìn)行類似情感分析的處理.而在當(dāng)前的立場(chǎng)檢測(cè)研究中,將目標(biāo)話題與微博文本內(nèi)容以不同方式拼接到一起然后進(jìn)行分類,這些方法都沒有對(duì)目標(biāo)話題同微博文本之間的關(guān)系特征進(jìn)行分析.
本文提出了一個(gè)基于Bert-Condition-CNN 的立場(chǎng)檢測(cè)模型,首先對(duì)微博文本集進(jìn)行主題短語(yǔ)的提取以擴(kuò)大話題信息在微博文本中的覆蓋率;然后使用BERT獲取擴(kuò)充后的話題集和微博文本的句向量,通過構(gòu)建兩個(gè)文本序列間的Condition 矩陣來(lái)提取話題信息和微博文本間的關(guān)系特征;最后使用CNN 對(duì)關(guān)系矩陣Condition 層進(jìn)行立場(chǎng)信息的判斷.
針對(duì)立場(chǎng)檢測(cè)任務(wù),目前國(guó)內(nèi)外的研究人員采用的方法主要有基于特征工程的機(jī)器學(xué)習(xí)方法和基于神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)方法.
Zheng 等[4]將微博文本中的情感詞和主題詞作為特征詞進(jìn)行提取,然后通過Word2Vec 對(duì)特征詞進(jìn)行詞向量的訓(xùn)練,將詞向量取平均作為文本的特征輸入到SVM 分類器中進(jìn)行立場(chǎng)分類.實(shí)驗(yàn)表明只使用情感詞作為特征時(shí),對(duì)立場(chǎng)的分類并不理想,情緒并不能準(zhǔn)確地反映作者的立場(chǎng)傾向,而加入主題詞的特征選取效果更好.Dian 等[5]探究了文本的多種特征融合對(duì)立場(chǎng)檢測(cè)的影響,分別有基于詞頻統(tǒng)計(jì)的詞袋特征、基于同義詞典的詞袋特征、詞與立場(chǎng)標(biāo)簽的共現(xiàn)關(guān)系特征、文本的Word2Vec 的字向量和詞向量,對(duì)這些特征的不同組合方式,分別使用SVM、隨機(jī)森林和決策樹對(duì)進(jìn)行立場(chǎng)分類,實(shí)驗(yàn)表明詞與立場(chǎng)標(biāo)簽的共現(xiàn)關(guān)系同Word2Vec 的字、詞向量的組合對(duì)立場(chǎng)分類的結(jié)果改善最為明顯.
相比基于特征工程的機(jī)器學(xué)習(xí)方法而言,深度學(xué)習(xí)的優(yōu)勢(shì)在于不用進(jìn)行復(fù)雜的人工特征抽取,而是通過將文本內(nèi)容全部映射為向量,然后使用多層的神經(jīng)網(wǎng)絡(luò)與標(biāo)簽之間進(jìn)行擬合自動(dòng)學(xué)習(xí)文本的特征.目前現(xiàn)有的立場(chǎng)檢測(cè)研究中,基于深度學(xué)習(xí)的工作主要是通過將目標(biāo)話題信息以不同的方式添加到微博文本內(nèi)容中和通過修改神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)這兩種方法來(lái)提升立場(chǎng)檢測(cè)效果.
Wei 等[6]使用基于Yoon Kim[7]的卷積神經(jīng)網(wǎng)絡(luò)對(duì)微博文本進(jìn)行分類,它使用了一種對(duì)模型投票的機(jī)制來(lái)融合訓(xùn)練中產(chǎn)生的各模型結(jié)果,每一個(gè)epoch 訓(xùn)練結(jié)束后都會(huì)迭代一些測(cè)試集數(shù)據(jù)對(duì)標(biāo)簽進(jìn)行預(yù)測(cè),最終測(cè)試集的結(jié)果是將所有的epoch 迭代完,每條數(shù)據(jù)選擇被預(yù)測(cè)次數(shù)最多的標(biāo)簽作為最終結(jié)果,但是它只針對(duì)微博文本進(jìn)行了特征提取和分類,而忽略了目標(biāo)話題在立場(chǎng)檢測(cè)中的作用.針對(duì)這個(gè)問題,Augenstein等[8]提出了一個(gè)Bidirectional Conditional Encoding 模型將目標(biāo)話題與微博文本進(jìn)行拼接,通過使用BiLSTM(Bidirectional Long Short-Term Memory)將目標(biāo)話題細(xì)胞狀態(tài)層的輸出作為微博文本BiLSTM 的細(xì)胞狀態(tài)層的初始值,從而實(shí)現(xiàn)兩個(gè)文本序列的拼接,而隱層狀態(tài)的BiLSTM 對(duì)目標(biāo)話題和微博文本的編碼則是相互獨(dú)立的.為了加強(qiáng)模型針對(duì)目標(biāo)話題對(duì)立場(chǎng)檢測(cè)的影響,Bai 等[9]提出了一種基于注意力的BiLSTM-CNN 模型對(duì)中文微博立場(chǎng)進(jìn)行檢測(cè),首先使用BiLSTM 和卷積神經(jīng)網(wǎng)絡(luò)CNN 分別獲取文本的全局特征和局部卷積特征;然后使用基于注意力(Attention)的權(quán)重矩陣將文本的BiLSTM 輸出加入到CNN 的輸出中;將最終獲取到的CNN 的句子表示輸入Softmax 層進(jìn)行分類.在基于注意力機(jī)制的方法上,Yue 等[10]提出了基于兩段注意力機(jī)制的立場(chǎng)檢測(cè)模型,首先使用Word2Vec 進(jìn)行詞向量表示;然后對(duì)微博文本的詞向量和目標(biāo)話題的詞向量進(jìn)行Attention 計(jì)算,使用BiLSTM 對(duì)微博文本進(jìn)行特征提取,對(duì)提取到的特征再次與目標(biāo)話題進(jìn)行Attention計(jì)算,將最后得到的結(jié)果使用Softmax 進(jìn)行分類.
根據(jù)對(duì)現(xiàn)有研究的分析和對(duì)比,如何充分發(fā)揮話題信息在立場(chǎng)檢測(cè)任務(wù)中的作用是本文研究的重點(diǎn).
本文的主要工作是設(shè)計(jì)完成了基于BERT-Condition-CNN 的中文微博立場(chǎng)檢測(cè)模型.首先,為增大話題信息在微博文本中的覆蓋率,本文結(jié)合LDA 和點(diǎn)互信息,在數(shù)據(jù)處理部分對(duì)微博文本進(jìn)行主題短語(yǔ)的提取,將目標(biāo)話題進(jìn)行擴(kuò)充構(gòu)成話題集;然后進(jìn)行網(wǎng)絡(luò)模型的構(gòu)建,使用Bert 獲取話題集和微博文本的句向量(分別用U、V 表示),并構(gòu)建兩個(gè)句向量矩陣的Condition層C,以計(jì)算目標(biāo)話題和微博文本的關(guān)系特征;最后使用CNN 學(xué)習(xí)得到最終的立場(chǎng)信息輸入Softmax 層得到立場(chǎng)標(biāo)簽.模型的流程圖如圖1所示,本章將對(duì)模型中各個(gè)部分的具體實(shí)現(xiàn)步驟進(jìn)行介紹.
圖1 Bert-Condition-CNN 流程圖
本文的主題短語(yǔ)提取采用的是基于n-grams 的識(shí)別技術(shù)[11],首先對(duì)語(yǔ)料進(jìn)行n-grams 詞組集合的構(gòu)建(這里的n-grams 詞組是指由相鄰的n個(gè)詞組成的詞組序列);然后將n-grams 詞組集合中包含低頻詞和標(biāo)點(diǎn)符號(hào)的無(wú)意義詞組序列進(jìn)行刪除構(gòu)成主題短語(yǔ)候選集;最后對(duì)候選集中的詞組進(jìn)行打分,主要考慮兩個(gè)方面:主題關(guān)聯(lián)度和短語(yǔ)質(zhì)量.主題關(guān)聯(lián)度是指詞組序列中包含主題詞的比例numkeys/n(其中numkeys是詞組中含主題詞的個(gè)數(shù);n是詞組的長(zhǎng)度),本文使用LDA 主題模型對(duì)微博文本進(jìn)行主題詞的提??;短語(yǔ)質(zhì)量是指詞組中相鄰詞之間的點(diǎn)互信息和,點(diǎn)互信息(Pointwise Mutual Information,PMI)通常被用于計(jì)算兩個(gè)詞之間的關(guān)聯(lián)度[12],其計(jì)算公式如下:
以詞組在語(yǔ)料中出現(xiàn)的頻率freq為權(quán)重,最終短語(yǔ)的得分計(jì)算方法為:
設(shè)置短語(yǔ)得分的閾值為s,當(dāng)詞組的score大于等于s時(shí),認(rèn)為該詞組可合并為主題短語(yǔ).如果詞組的score小于s,則其為普通詞組序列.主題短語(yǔ)提取的算法步驟如算法1.
算法1.主題短語(yǔ)提取算法1.將微博語(yǔ)料進(jìn)行分詞處理并進(jìn)行詞頻統(tǒng)計(jì);2.使用LDA 對(duì)語(yǔ)料進(jìn)行主題詞的提取,設(shè)定主題個(gè)數(shù)為K;3.構(gòu)建語(yǔ)料的n-grams 詞組集合,刪除其中包含步驟1 中統(tǒng)計(jì)出的低頻詞和包含標(biāo)點(diǎn)符號(hào)的詞組序列,構(gòu)成主題短語(yǔ)候選集D;4.對(duì)步驟3 構(gòu)建的候選集D 中的詞組進(jìn)行主題關(guān)聯(lián)度和短語(yǔ)質(zhì)量的打分,將短語(yǔ)得分大于閾值s 的詞組作為主題短語(yǔ)進(jìn)行提取.
上述算法通過主題關(guān)聯(lián)度過濾掉不包含主題詞或包含主題詞比例較少的詞組,通過計(jì)算詞間的PMI值來(lái)判定詞組合并為短語(yǔ)是否合理,最后通過頻率篩選掉具有高主題關(guān)聯(lián)度和高短語(yǔ)質(zhì)量但出現(xiàn)次數(shù)不多的詞組.表1為NLPCC 語(yǔ)料中5 個(gè)目標(biāo)話題的主題短語(yǔ)提取結(jié)果、實(shí)驗(yàn)中低頻詞的閾值為3、主題個(gè)數(shù)K=200、短語(yǔ)得分閾值s為0.0019,從每個(gè)話題的結(jié)果中選取5 個(gè)作為最終的主題短語(yǔ).
表1 NLPCC 中主題短語(yǔ)的提取結(jié)果
2018年Google AI 團(tuán)隊(duì)發(fā)布了一種新的語(yǔ)言模型Bert[13],Bert 一經(jīng)推出,給自然語(yǔ)言處理中的預(yù)訓(xùn)練模型帶來(lái)了突破性的發(fā)展,在許多自然語(yǔ)言處理任務(wù)上取得了state-of-the-art 的成績(jī).Bert 是一種多層雙向的Transformer 編碼器,其結(jié)構(gòu)如圖2所示(圖中Tm模塊為Transformer 中的Encoder 部分).
圖2 Bert 結(jié)構(gòu)圖
Bert 的預(yù)訓(xùn)練過程使用的是兩個(gè)非監(jiān)督任務(wù):Masked LM(掩碼語(yǔ)言模型)和Next Sentence Prediction(下一句話預(yù)測(cè)).第一個(gè)任務(wù)是使用Masked LM 實(shí)現(xiàn)了雙向語(yǔ)言模型的預(yù)訓(xùn)練,不同于Word2Vec 等其他語(yǔ)言模型需要對(duì)輸入序列中所有詞進(jìn)行預(yù)測(cè),Masked LM 是在輸入數(shù)據(jù)中隨機(jī)選取15%的詞進(jìn)行masked操作,通過上下文的詞去預(yù)測(cè)這15%的詞,以避免下文的詞對(duì)當(dāng)前詞的影響,從而實(shí)現(xiàn)了真正意義上的“雙向”.這15%被masked 的詞中,有80%是用“[MASK]”符號(hào)進(jìn)行替代,10%用語(yǔ)料中隨機(jī)抽出的詞進(jìn)行替代,剩余的10%保留原有詞不進(jìn)行轉(zhuǎn)變.Bert 的第二個(gè)任務(wù)是Next Sentence Prediciton,用來(lái)判斷兩句話(A,B)是否為上下句關(guān)系的二分類任務(wù).訓(xùn)練數(shù)據(jù)中50%的(A,B)數(shù)據(jù)是真實(shí)上下句作為正例,剩余的50%的(A,B)中的B 是隨機(jī)抽取的作為負(fù)例進(jìn)行訓(xùn)練.該任務(wù)的最終預(yù)訓(xùn)練結(jié)果可以達(dá)到97%~98% 的準(zhǔn)確率.Bert 預(yù)訓(xùn)練模型也可作為fine-tuning 用于改善序列對(duì)分類的效果,用于QA (判斷兩句話是否為問答對(duì))和NLI(自然語(yǔ)言推理)任務(wù)等.
在本文的實(shí)驗(yàn)中,使用了Google 發(fā)布的Bert 中文的預(yù)訓(xùn)練模型“BERT-Base,Chinese”.該模型采用了12 層的Transformer,輸出大小為768 的維度向量,multi-head Attention 的參數(shù)為12,模型總參數(shù)大小為110 MB,共包含約2 萬(wàn)的中文簡(jiǎn)體字和繁體字,含有部分英文單詞和數(shù)字.將模型載入后,可以直接輸出訓(xùn)練好的字向量或句向量.本文使用該模型獲取句向量并將其作為后續(xù)網(wǎng)絡(luò)模型的輸入.
使用3.1 節(jié)中抽取出的主題短語(yǔ)對(duì)目標(biāo)話題進(jìn)行擴(kuò)充得到話題集(targets),在<話題集,微博文本>的數(shù)據(jù)中,微博文本可以對(duì)應(yīng)到更多的話題相關(guān)信息.將擴(kuò)充后的話題集和微博文本使用句子序列的方式進(jìn)行表示:話題集targets={target1,…,targetn}、微博文本weibo={sent1,…,sentm},其中n、m分別代表話題集中包含話題的個(gè)數(shù)和微博文本中包含的句子個(gè)數(shù).不同與第一章中介紹的用Attention 將話題以不同的權(quán)重加到微博文本中的計(jì)算方法,本文提出的方法是對(duì)話題集和微博文本進(jìn)行關(guān)系矩陣的計(jì)算.如圖3所示,在對(duì)targets 和weibo 進(jìn)行關(guān)系矩陣的計(jì)算前,先將targeti和sentj(0<=i<=n,0<=j<=m)通過Bert預(yù)訓(xùn)練模型輸出為句向量,記ui=Bert(targeti),vj=Bert(sentj),得到的關(guān)系矩陣稱為Condition,其中cij=score(ui,vj).
圖3 Condition 計(jì)算層的構(gòu)建
Condition 層的作用可以看作是對(duì)原本計(jì)算<target,weibo>的立場(chǎng)檢測(cè)任務(wù)分解為計(jì)算每一對(duì)<targeti,sentj>序列組合的立場(chǎng)檢測(cè).通常認(rèn)為立場(chǎng)檢測(cè)任務(wù)分為以下兩個(gè)步驟:一是判斷sentj是否是圍繞targeti進(jìn)行展開評(píng)論的,即兩個(gè)文本序列之間是否存在蘊(yùn)含關(guān)系;二是sentj針對(duì)targeti的立場(chǎng)是支持、中立還是反對(duì)的.若sentj與targeti不存在蘊(yùn)含關(guān)系時(shí),則其立場(chǎng)為中立.在本節(jié)的Condition 計(jì)算層中進(jìn)行的主要工作是通過計(jì)算sentj與targeti的關(guān)系得分score(ui,vj),從而判斷兩個(gè)序列是否在蘊(yùn)含關(guān)系.由于ui,vj均是句向量(句向量的維度為d),所以在計(jì)算score(ui,vj)時(shí),參考向量之間的距離計(jì)算,本文設(shè)計(jì)了歸一化的歐幾里得距離、余弦距離和向量點(diǎn)乘的3 種方法:
(1) 歸一化的歐幾里得距離
歐幾里得距離是向量中常用的距離定義,兩點(diǎn)的距離越大,歐幾里得距離越大,由此代表的兩個(gè)句向量之間的關(guān)系就越小.因此歐幾里得距離與ui,vj的關(guān)系成反比.故在本文的實(shí)驗(yàn)中采取式(3)所示的歸一化處理,使得score(ui,vj)與ui,vj的關(guān)系形成正比.
(2) 余弦距離
余弦距離計(jì)算的是兩個(gè)向量所形成夾角的余弦值,如式(4)所示,值越大說(shuō)明兩個(gè)句向量的夾角越小,兩個(gè)向量的關(guān)系就越大.
(3) 向量點(diǎn)乘
向量點(diǎn)乘的計(jì)算同余弦距離相比,不僅可以體現(xiàn)兩個(gè)向量之間的夾角,還反映了向量ui在向量vj上的映射大小,計(jì)算公式如式(5)所示.
在這3 種計(jì)算向量關(guān)系的方法中,歐幾里得距離是通過計(jì)算空間距離來(lái)反映向量之間的關(guān)系;余弦距離是通過計(jì)算空間中兩個(gè)向量之間的夾角余弦值來(lái)反映向量之間的關(guān)系.點(diǎn)乘計(jì)算不但反映了向量間的夾角,而且其計(jì)算復(fù)雜度和空間復(fù)雜度都相對(duì)較低,因此在深度學(xué)習(xí)中,通常使用點(diǎn)乘來(lái)計(jì)算兩個(gè)向量之間的關(guān)系.通過3 種方法計(jì)算得到的關(guān)于話題集和微博文本之間的關(guān)系矩陣Condition 層,反映了微博文本和話題集的蘊(yùn)含關(guān)系.在后續(xù)特征提取的計(jì)算中,以Condition 層作為輸入進(jìn)行分類.
CNN 特征提取層的輸入是3.3 節(jié)中的Condition計(jì)算層,該特征矩陣為話題集與微博文本之間的關(guān)系矩陣,其中涵蓋了話題targeti和文本sentj這一對(duì)文本序列中存在的蘊(yùn)含關(guān)系和所持立場(chǎng)信息.本節(jié)內(nèi)容針對(duì)Condition 層對(duì)所有<targeti,sentj>序列對(duì)計(jì)算得到的Cij進(jìn)行特征融合并分類,通過二維卷積計(jì)算相鄰序列對(duì)<ui,vj>的關(guān)系特征對(duì)最終立場(chǎng)分類影響的權(quán)重,計(jì)算公式如式(6)所示.
式中,K(i-m,j-n)為卷積核權(quán)重參數(shù),b為偏置項(xiàng),f為非線性激活函數(shù),通常為Relu、Sigmoid 或Tanh.卷積后的特征矩陣S要經(jīng)過最大池化層的處理,池化層可以看作是一種降采樣方式,最大池化就是選取當(dāng)前池化窗口中最大的數(shù)值作為特征,可有效縮減特征矩陣的大小,縮小模型參數(shù)數(shù)量,從而加快計(jì)算速度,有利于減少模型的過擬合問題.將池化后的特征向量使用全連接進(jìn)行特征融合,然后進(jìn)行Softmax 算法對(duì)其進(jìn)行分類.全連接層和Softmax 層的主要任務(wù)是將最終獲取到的特征信息進(jìn)行融合,獲取特征向量對(duì)于每個(gè)立場(chǎng)標(biāo)簽的得分,并輸出<targets,weibo>的最終立場(chǎng)標(biāo)簽.本文采用Softmax 層是概率轉(zhuǎn)換層,將輸入的向量以概率形式表示,完成對(duì)立場(chǎng)標(biāo)簽的預(yù)測(cè).
本文使用的數(shù)據(jù)集是NLPCC 在2016年發(fā)布的任務(wù)4:“中文微博立場(chǎng)檢測(cè)任務(wù)”中所提供的公開數(shù)據(jù)集.該數(shù)據(jù)集中共包含4000 條已標(biāo)注立場(chǎng)類別標(biāo)簽的中文微博數(shù)據(jù),其中3000 條為訓(xùn)練集,1000 條為測(cè)試集,如圖4所示.
圖4 立場(chǎng)檢測(cè)任務(wù)數(shù)據(jù)
數(shù)據(jù)以“<id><target><weibo><stance>”的格式給出,其中“target”為目標(biāo)話題,共有5 個(gè),分別是:“iPhone SE”、“春節(jié)放鞭炮”、“俄羅斯在敘利亞的反恐行動(dòng)”、“開放二胎”和“深圳禁摩限電”;“weibo”為微博文本內(nèi)容,一般文本長(zhǎng)度較大,因此在進(jìn)行實(shí)驗(yàn)前需要先將其進(jìn)行斷句處理;“stance”是立場(chǎng)標(biāo)簽,共有3 個(gè)分類:“FAVOR”代表支持、“AGAINST”代表反對(duì)、“NONE”代表中立.針對(duì)5 個(gè)不同的目標(biāo)話題,其立場(chǎng)標(biāo)簽的分布情況如表2所示.
表2 NLPCC 訓(xùn)練集數(shù)據(jù)分布
由于微博文本中的數(shù)據(jù)較為口語(yǔ)化,并包含很多表情符號(hào)、繁體字、URL 鏈接、多次標(biāo)點(diǎn)符號(hào)重復(fù)等情況.這些情況都會(huì)對(duì)文本分析產(chǎn)生很大的噪聲影響,因此本文在預(yù)處理部分進(jìn)行了語(yǔ)料清洗的工作,主要包括:清除了冗余的標(biāo)點(diǎn)符號(hào)和鏈接,將繁體字轉(zhuǎn)為簡(jiǎn)體等,如表3所示.
表3 數(shù)據(jù)預(yù)處理對(duì)比
Bert-Condition-CNN 模型的輸入是基于句子級(jí)別的,但因?yàn)槲⒉┪谋镜膬?nèi)容普遍較長(zhǎng),所以需要在預(yù)處理部分將微博文本內(nèi)容進(jìn)行斷句處理.本文在實(shí)驗(yàn)中將微博文本中出現(xiàn)的“,”、“?”、“!”,“、”和“.”標(biāo)點(diǎn)符號(hào)作為斷句標(biāo)識(shí)符對(duì)文本內(nèi)容進(jìn)行斷句分割.斷句后訓(xùn)練集和測(cè)試集中微博文本的長(zhǎng)度(包含句子的個(gè)數(shù))分布情況如圖5所示.由圖可見訓(xùn)練集和測(cè)試集文本長(zhǎng)度的分布大體上是一致的,且大部分?jǐn)?shù)據(jù)的長(zhǎng)度是集中在0~25 之間,因此為保證在計(jì)算Condition 層時(shí),微博文本內(nèi)容的長(zhǎng)度一致.所以在預(yù)處理部分將微博文本的長(zhǎng)度固定為25,對(duì)長(zhǎng)度不足25 的數(shù)據(jù)進(jìn)行“[PAD]”符號(hào)的補(bǔ)齊,長(zhǎng)度大于25 的數(shù)據(jù)進(jìn)行截?cái)嗵幚?
分類器的主要評(píng)價(jià)指標(biāo)有準(zhǔn)確率(Accuracy)、精確率(Percision)、召回率(Recall)和F 值(F-score).準(zhǔn)確率是指分類正確的樣本占總樣本個(gè)數(shù)的比例,精確率是指分類正確的正樣本占分類器預(yù)測(cè)為正樣本個(gè)數(shù)的比例,召回率是指分類正確的正樣本占真正的正樣本個(gè)數(shù)的比例.為平衡精確率和召回率之間的關(guān)系,以免出現(xiàn)由于數(shù)據(jù)類別分布不均衡導(dǎo)致兩個(gè)分?jǐn)?shù)之間相差過大,無(wú)法充分反映分類器的效果,通常在分類任務(wù)中,引入兩者的調(diào)和平均值,F(xiàn)度量值作為分類的評(píng)價(jià)指標(biāo),其計(jì)算公式如式(7)所示.
圖5 訓(xùn)練集和測(cè)試集的微博長(zhǎng)度
在NLPCC 任務(wù)中,官方給出的評(píng)價(jià)指標(biāo)是使用FFaver和FAgainst的平均值作為最終評(píng)價(jià)指標(biāo).其中FFaver是“支持”標(biāo)簽的F度量,F(xiàn)Against是“反對(duì)”標(biāo)簽的F度量.其計(jì)算公式如下:
實(shí)驗(yàn)中涉及的網(wǎng)絡(luò)模型參數(shù)如表4所示.使用Relu 作為卷積層的激活函數(shù).實(shí)驗(yàn)采用4.1 節(jié)中介紹的數(shù)據(jù)集,其中3000 為訓(xùn)練集,1000 為測(cè)試集.將訓(xùn)練集中20% 的數(shù)據(jù)抽出作為驗(yàn)證集使用,迭代次數(shù)epoch=150,選取在驗(yàn)證集上得到最好效果的模型作為最終模型在測(cè)試集上進(jìn)行測(cè)試.
表4 模型參數(shù)
為了驗(yàn)證本文提出的基于Condition-CNN 的模型在中文微博立場(chǎng)檢測(cè)任務(wù)上的有效性.本節(jié)進(jìn)行了如下實(shí)驗(yàn)對(duì)比.
如表5所示,首先對(duì)比了采用拼接法將目標(biāo)話題和微博文本連在一起(Concat) 和使用本文提出的Condition 層對(duì)話題集和微博文本進(jìn)行關(guān)系矩陣構(gòu)建的兩種方法的效果.同時(shí)給出了Bai[9]中提到的BiLSTMCNN-ATT 在相同數(shù)據(jù)集上的表現(xiàn)結(jié)果.
表5 Condition 層的實(shí)驗(yàn)結(jié)果
在本次對(duì)比中,Concat 和Condition 的實(shí)驗(yàn)中均使用了Bert預(yù)訓(xùn)練模型輸出句向量.通過這兩種對(duì)話題和微博文本的不同組成方式的實(shí)驗(yàn)結(jié)果對(duì)比表明,基于Condition 計(jì)算層進(jìn)行話題和微博文本關(guān)系構(gòu)建的方式對(duì)立場(chǎng)檢測(cè)任務(wù)的效果有著明顯的提升.表中BiLSTM-CNN-ATT 的模型是基于注意力的混合網(wǎng)絡(luò)模型,BiLSTM-CNN-ATT 的FFavor值取得了最高分,但其分類結(jié)果不均衡的現(xiàn)象導(dǎo)致了最終的FAvg值的降低.通過Concat 方法和BiLSTM-CNN-ATT 的對(duì)比,可以看到,Bert作為句向量的語(yǔ)義特征抽取能力是優(yōu)于RNN 和CNN 的甚至是優(yōu)于將RNN、CNN、Attention拼接組合起來(lái)的效果.
表6中對(duì)比了3.3 節(jié)中給出的3 種Condition 層計(jì)算的方法,分別是基于歐幾里得距離(Euclidean)、余弦距離(cosine)和點(diǎn)乘計(jì)算(dot)的.實(shí)驗(yàn)結(jié)果顯示基于點(diǎn)乘計(jì)算的效果最佳,并且相對(duì)于另外兩個(gè)計(jì)算方式,點(diǎn)乘的計(jì)算復(fù)雜度也相對(duì)較低,因此在后續(xù)的實(shí)驗(yàn)中采用Condition 計(jì)算方式都是采用點(diǎn)乘的方法,包括在表5中的Condition 計(jì)算也是使用的點(diǎn)乘.
表6 Condition 的3 種計(jì)算方式
為了方便對(duì)模型結(jié)構(gòu)進(jìn)行驗(yàn)證對(duì)比,上述兩個(gè)對(duì)比實(shí)驗(yàn)在進(jìn)行訓(xùn)練及測(cè)試的時(shí)候針對(duì)的是數(shù)據(jù)集中所有的數(shù)據(jù),并未做話題的區(qū)分.但實(shí)際上,從實(shí)驗(yàn)數(shù)據(jù)的角度出發(fā),5 個(gè)目標(biāo)話題是相互獨(dú)立的,因此將5 個(gè)話題的數(shù)據(jù)分開進(jìn)行單獨(dú)訓(xùn)練會(huì)得到更好的效果.如表7所示,將話題分開單獨(dú)訓(xùn)練的結(jié)果同Dian[5]和Yue[10]的ATA 模型進(jìn)行對(duì)比.其中Dian 的工作是基于不同特征融合的機(jī)器學(xué)習(xí)模型,經(jīng)過實(shí)驗(yàn)對(duì)比,對(duì)不同目標(biāo)話題采取了不同的特征組合方式.該工作在2016年NLPCC 的任務(wù)中取得了第一名的成績(jī).Yue的ATA 模型是基于深度學(xué)習(xí)的模型,采用兩段注意力機(jī)制將目標(biāo)話題和微博文本進(jìn)行組合.該表中僅使用了FAvg進(jìn)行對(duì)比.
表7 5 個(gè)話題分開單獨(dú)訓(xùn)練結(jié)果
從實(shí)驗(yàn)對(duì)比結(jié)果中可以看出,基于Bert-Condition-CNN 的模型在5 個(gè)話題的立場(chǎng)檢測(cè)中,F(xiàn)Avg均取得了最高的分值.在話題“深圳禁摩限電”、“開放二胎”和“春節(jié)放鞭炮”中FAvg都取得了0.8 以上的分?jǐn)?shù).在話題“春節(jié)放鞭炮”和“開放二胎”的任務(wù)上以微弱的形式勝出;在話題“俄羅斯在敘利亞反恐行動(dòng)”、“深圳禁摩限電”和“iPhone SE”中取得了1%~3% 的提升.在同ATA 模型的對(duì)比中,進(jìn)一步驗(yàn)證了Condition 層對(duì)立場(chǎng)檢測(cè)任務(wù)的提升.
對(duì)于分類結(jié)果較差的兩個(gè)話題“俄羅斯在敘利亞反恐行動(dòng)”和“iPhone SE”.這兩個(gè)話題經(jīng)主題短語(yǔ)提取后形成的話題集如3.1 中的表分別為{“極端組織”、“戰(zhàn)斗民族”、“大國(guó)博弈”、“勝利陣線”、“武裝分子”}和{“中國(guó)市場(chǎng)”、“電池續(xù)航”、“開發(fā)者大會(huì)”、“外觀侵權(quán)”、“1200 萬(wàn)像素?cái)z像頭”}.首先這兩個(gè)話題集在數(shù)據(jù)中的覆蓋率相比于其他話題的覆蓋率來(lái)講是較低的,在通過Condition 計(jì)算層計(jì)算時(shí)形成的關(guān)系矩陣大多較為稀疏.因此在進(jìn)行立場(chǎng)檢測(cè)分類時(shí)得到的效果較差.
本文的主要工作是基于構(gòu)建話題和微博文本之間Bert句向量的Condition 層,利用卷積神經(jīng)網(wǎng)絡(luò)模型,實(shí)現(xiàn)了對(duì)中文微博的立場(chǎng)檢測(cè)研究,并給出了一種主題短語(yǔ)提取的方法.經(jīng)過實(shí)驗(yàn)對(duì)比分析,驗(yàn)證了本文提出的模型Bert-Condition-CNN 的有效性和在立場(chǎng)檢測(cè)任務(wù)中取得的進(jìn)步.
首先對(duì)微博數(shù)據(jù)進(jìn)行分析發(fā)現(xiàn),單一的目標(biāo)話題對(duì)微博文本數(shù)據(jù)的覆蓋不足,因此需要對(duì)微博文本進(jìn)行主題短語(yǔ)的提取.本文提出了基于LDA 和點(diǎn)互信息提取的方式.首先從n-grams 詞組集合中刪去包含低頻詞和標(biāo)點(diǎn)符號(hào)的無(wú)意義詞組序列構(gòu)成主題短語(yǔ)候選集,然后使用LDA 對(duì)文本進(jìn)行主題詞提取和點(diǎn)互信息計(jì)算,分別用來(lái)反映詞組的主題相關(guān)性和短語(yǔ)質(zhì)量;最終將候選集中的詞組進(jìn)行主題相關(guān)性和短語(yǔ)質(zhì)量的打分,并以在語(yǔ)料中出現(xiàn)的頻率為權(quán)重,從而選出主題短語(yǔ).
其次在對(duì)文本進(jìn)行向量之間的映射時(shí),使用了Google 在2018年發(fā)布的Bert預(yù)訓(xùn)練模型,直接生成句向量.通過對(duì)話題集和微博文本的句向量進(jìn)行Condition計(jì)算,得到兩個(gè)文本的關(guān)系特征矩陣.對(duì)立場(chǎng)檢測(cè)的分類是基于Condition 層進(jìn)行計(jì)算.
最后通過與目前現(xiàn)有研究中取得最好成績(jī)的基于特征融合的機(jī)器學(xué)習(xí)模型和基于深度學(xué)習(xí)的模型均在相同的數(shù)據(jù)集上進(jìn)行了對(duì)比,對(duì)本文提出模型的有效性進(jìn)行了驗(yàn)證.
本文在進(jìn)行立場(chǎng)檢測(cè)的實(shí)驗(yàn)對(duì)比時(shí)發(fā)現(xiàn),在“俄羅斯在敘利亞的反恐行動(dòng)”和“iPhone SE”兩個(gè)話題上,本文提出的基于Condition-CNN 模型的得分相對(duì)于其他三個(gè)話題的得分較低.對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行分析后發(fā)現(xiàn),主要是因?yàn)獒槍?duì)這兩個(gè)話題進(jìn)行的主題短語(yǔ)提取結(jié)果中,得到的結(jié)果在微博文本中的立場(chǎng)表現(xiàn)并不十分明顯.因此,如何提取有利于進(jìn)行立場(chǎng)檢測(cè)研究的主題短語(yǔ)還有待改進(jìn).