黃偉強(qiáng),劉 海,梁韜文,楊海華
(1.華南師范大學(xué) 網(wǎng)絡(luò)中心,廣東 廣州 510631;2.華南師范大學(xué) 計(jì)算機(jī)學(xué)院,廣東 廣州 510631)
隨著信息技術(shù)的飛速發(fā)展,在線教育逐漸興起,越來(lái)越多的人在在線教育課程中留下了有價(jià)值的評(píng)論,通過(guò)對(duì)這些評(píng)論進(jìn)行情感分析可以達(dá)到多方面的目的,如分析學(xué)生對(duì)課程的滿意度、調(diào)查老師授課水平、挖掘課程質(zhì)量等。
情感分析(Sentiment Analysis),又稱為情感傾向性分析[1],目的是找出文本中情感的正負(fù)性,如正面或負(fù)面、積極或消極,并且把這種正負(fù)性數(shù)值化,以百分比或者正負(fù)值的方式表現(xiàn)出來(lái)。情感分析的研究方法大致可以分為兩種:一是基于情感詞典的情感分析[2],主要通過(guò)建立情感詞典或領(lǐng)域詞典及通過(guò)文本中帶有極性的情感詞進(jìn)行計(jì)算來(lái)獲取文本的極性,由于依賴于情感詞典,存在覆蓋率不足等缺點(diǎn);二是基于機(jī)器學(xué)習(xí)的情感分析,包括監(jiān)督學(xué)習(xí)、無(wú)監(jiān)督學(xué)習(xí)和半監(jiān)督學(xué)習(xí)三種方法,其中與監(jiān)督學(xué)習(xí)和無(wú)監(jiān)督學(xué)習(xí)相比,半監(jiān)督學(xué)習(xí)通過(guò)少量標(biāo)注數(shù)據(jù)和大量無(wú)標(biāo)注數(shù)據(jù)進(jìn)行識(shí)別,既不用對(duì)所有的數(shù)據(jù)進(jìn)行標(biāo)注,也不依賴先驗(yàn)經(jīng)驗(yàn),有較好的實(shí)用性,從而被許多學(xué)者應(yīng)用在情感分析問(wèn)題上,如陳珂等[3]利用基于分類器集成的self-training方法進(jìn)行情感分析研究,使用少量標(biāo)注樣本和大量未標(biāo)注樣本來(lái)進(jìn)行情感分析訓(xùn)練,準(zhǔn)確率達(dá)86%。
數(shù)據(jù)擴(kuò)充[4]是一種結(jié)合機(jī)器學(xué)習(xí)使用的方法,在訓(xùn)練樣本不足的情況下,可使模型訓(xùn)練更好地?cái)M合,通過(guò)與半監(jiān)督的方法相結(jié)合,可達(dá)到標(biāo)注少量數(shù)據(jù)以擴(kuò)充至大量訓(xùn)練數(shù)據(jù)的效果。數(shù)據(jù)擴(kuò)充方法目前已被用于圖像、交通、醫(yī)療等領(lǐng)域[5-7],目前主流的數(shù)據(jù)擴(kuò)充方法有圖像翻轉(zhuǎn)、隨機(jī)噪聲、標(biāo)簽傳播等[8]。
情感分析目前已被應(yīng)用于如電影評(píng)論、書(shū)籍評(píng)論、微博短評(píng)等多個(gè)領(lǐng)域,但在在線教育課程評(píng)論領(lǐng)域的應(yīng)用還較缺乏,把情感分析應(yīng)用在在線教育課程評(píng)論上存在著各種挑戰(zhàn),如評(píng)論數(shù)據(jù)的獲取、評(píng)論數(shù)據(jù)的標(biāo)注等。為了解決以上問(wèn)題,本文借鑒半監(jiān)督學(xué)習(xí)的方法,提出基于聚類分析的文本數(shù)據(jù)擴(kuò)充方法:對(duì)少量關(guān)鍵數(shù)據(jù)進(jìn)行標(biāo)注,并通過(guò)聚類分析獲得大量已標(biāo)注數(shù)據(jù)。在目前主流在線教育平臺(tái)爬取的569 970條課程評(píng)論中選取1 000條關(guān)鍵數(shù)據(jù)進(jìn)行標(biāo)注并使用本文數(shù)據(jù)擴(kuò)充方法擴(kuò)充至10萬(wàn)條標(biāo)注數(shù)據(jù),分別利用SVM[9]、RandomForest[10]、AdaBoost[11]、GradientBoost[12]和CNN模型對(duì)標(biāo)注數(shù)據(jù)進(jìn)行訓(xùn)練,實(shí)驗(yàn)表明,與目前主流的LabelSpreading算法相比,本文的數(shù)據(jù)擴(kuò)充方法均有準(zhǔn)確率上的優(yōu)勢(shì)。
在線課程評(píng)論情感分析的流程如圖1所示。
圖1 在線課程評(píng)論情感分析流程
(1)課程評(píng)論獲取與向量化:利用爬蟲(chóng)爬取在線教育平臺(tái)課程評(píng)論數(shù)據(jù),把文本的課程評(píng)論數(shù)據(jù)分詞及詞向量轉(zhuǎn)化后,再組合詞向量得到向量化的課程評(píng)論數(shù)據(jù);
(2)主觀評(píng)論提?。菏止?duì)少量數(shù)據(jù)進(jìn)行主客觀標(biāo)注后,經(jīng)聚類分析把課程評(píng)論分為主觀評(píng)論和客觀評(píng)論兩類,保留主觀評(píng)論并移除客觀評(píng)論;
(3)評(píng)論情感值計(jì)算與標(biāo)注:手工對(duì)少量關(guān)鍵數(shù)據(jù)進(jìn)行正負(fù)性標(biāo)注后,利用聚類分析計(jì)算主觀評(píng)論的情感值,利用情感值對(duì)數(shù)據(jù)進(jìn)行標(biāo)注,以達(dá)到擴(kuò)充數(shù)據(jù)的目的;
(4)情感分析模型訓(xùn)練:分別利用CNN、SVM、RandomForest、AdaBoost、GradientBoost模型和前三步得到的大量標(biāo)注數(shù)據(jù)進(jìn)行課程評(píng)論情感分析模型訓(xùn)練,并對(duì)各模型的課程評(píng)論情感分析準(zhǔn)確率進(jìn)行對(duì)比。
在課程評(píng)論獲取操作中,通過(guò)爬取“中國(guó)大學(xué)MOOC”[13]、“網(wǎng)易云課堂”[14]和“礪儒云課堂”[15]共10 037門課程,獲取共569 970條課程評(píng)論數(shù)據(jù)用于制作數(shù)據(jù)集。獲取的課程評(píng)論大多為數(shù)據(jù)長(zhǎng)度在10~40字?jǐn)?shù)的中文短評(píng),具體數(shù)據(jù)長(zhǎng)度的數(shù)量分布如圖2所示。
圖2 不同長(zhǎng)度數(shù)據(jù)的數(shù)量分布
在課程評(píng)論向量化操作中,首先對(duì)爬取的課程評(píng)論進(jìn)行分詞操作:基于Python環(huán)境下的中文分詞組件“jieba”對(duì)數(shù)據(jù)集課程評(píng)論進(jìn)行分詞,為了支持含特殊字符的表情符的分詞操作,對(duì)“jieba”組件中匹配關(guān)鍵字的正則表達(dá)式及相關(guān)代碼進(jìn)行了修改,使其能夠識(shí)別組成表情符的空格及特殊字符,并通過(guò)增加自定義表情符字典的方式,使其對(duì)表情符的分詞提供支持。
然后,對(duì)課程評(píng)論進(jìn)行字典生成和向量生成:利用自然語(yǔ)言處理Python庫(kù)“gensim”的內(nèi)置模塊“corpora”中的“Dictionary”方法,對(duì)分詞后的文本進(jìn)行字典生成,并利用“gensim”中內(nèi)置的詞轉(zhuǎn)向量算法“Word2Vec”對(duì)分詞后的文本進(jìn)行詞到向量的轉(zhuǎn)換。由于字詞的重要性隨著其在文件中出現(xiàn)的次數(shù)成正比增加[16],為了增強(qiáng)文本向量表達(dá)的準(zhǔn)確性,利用tf-idf向量[17]作為權(quán)值,對(duì)詞向量進(jìn)行加權(quán)平均后得到文本向量:
其中:⊕表示的是詞向量的拼接操作,本文使用的是向量的加法;ri表示文本各詞的向量;R表示文本向量;n表示該文本含有的詞的數(shù)量;ti表示詞的tf-idf權(quán)值。
課程評(píng)論向量化操作中使用的詞向量維度為128維,詞向量訓(xùn)練規(guī)模為268 GB的中文語(yǔ)料,滑動(dòng)窗口設(shè)為20×120。
基于以下兩個(gè)假設(shè),使用基于聚類分析[18-19]的方法計(jì)算各課程評(píng)論的情感值,以實(shí)現(xiàn)課程評(píng)論的正負(fù)性標(biāo)注:
(1)在文本向量空間中距離相近的2個(gè)文本正負(fù)性質(zhì)相近;
(2)在文本向量空間中2個(gè)文本距離越近,其正負(fù)性質(zhì)越相近。
借鑒半監(jiān)督訓(xùn)練的方法,通過(guò)標(biāo)記少量的數(shù)據(jù)來(lái)對(duì)整個(gè)數(shù)據(jù)集進(jìn)行情感值的計(jì)算,把標(biāo)記的數(shù)據(jù)作為情感值計(jì)算的標(biāo)桿,基于以上兩個(gè)假設(shè)對(duì)整個(gè)數(shù)據(jù)集進(jìn)行聚類操作。
使用第2節(jié)中向量化后的課程評(píng)論數(shù)據(jù)作為數(shù)據(jù)集T,設(shè)ti∈T,使用Mi來(lái)表示ti的情感值。Mi為正則表示評(píng)論ti偏向正面,Mi越大表示正面性越強(qiáng);Mi為負(fù)則表示評(píng)論ti偏向負(fù)面,Mi越小表示負(fù)面性越強(qiáng)。在T中選取適量課程評(píng)論數(shù)據(jù)作為初始數(shù)據(jù)集Tj,對(duì)任意tj∈Tj,對(duì)tj手工標(biāo)記mj:若該評(píng)論為正面評(píng)論則標(biāo)記mj=1,若該文本為中性評(píng)論則標(biāo)記mj=0,若該文本為負(fù)面評(píng)論則標(biāo)記mj=-1。設(shè)正整數(shù)常量Minit(經(jīng)本文實(shí)驗(yàn),Minit=100為一個(gè)較合適的取值),用于對(duì)Mi進(jìn)行初始化。對(duì)于每個(gè)ti,設(shè)置其Mi值:
設(shè)dij為評(píng)論ti與評(píng)論tj在向量空間的距離;設(shè)距離dfar,若dij≤dfar,則表示ti與tj的正負(fù)性質(zhì)一樣(經(jīng)本文實(shí)驗(yàn),dfar取除雜后向量空間中各評(píng)論數(shù)據(jù)平均距離的1/8為較合適的值);設(shè)距離dclose,若dij≤dclose, 則表示ti與tj非常接近 (經(jīng)本文實(shí)驗(yàn),取為較合適的值)。在每一輪聚類中對(duì)于新標(biāo)記的課程評(píng)論數(shù)據(jù)集Tk(初始時(shí)Tk=Tj)中的每一條評(píng)論tk,按下式更新其附近課程評(píng)論集合Tl中每一條評(píng)論tl的Ml值:
式(3)中表述了更新tl情感值的三種情況(見(jiàn)圖3):
圖3 三種更新情感值的情況
設(shè)tk被手工標(biāo)注為mk,t1、t2、t3、t4為tk附近的課程評(píng)論,對(duì)于算法中每一輪聚類過(guò)程及式(3)的更新過(guò)程,以下給出兩個(gè)實(shí)際例子進(jìn)行說(shuō)明。
表1 實(shí)際例子1
表2 實(shí)際例子2
使用手工標(biāo)注約800條課程評(píng)論數(shù)據(jù)進(jìn)行正負(fù)性聚類用于課程評(píng)論的情感值計(jì)算,經(jīng)主客觀聚類后提取的主觀課程評(píng)論數(shù)據(jù)通過(guò)PCA[20]降維操作可視化后的分布情況見(jiàn)圖4。
圖4 文本在正負(fù)性向量空間的分布情況
聚類后的部分評(píng)論及對(duì)應(yīng)情感值Mi見(jiàn)表3。
表3 正負(fù)性分析部分結(jié)果
情感值計(jì)算的準(zhǔn)確率使用基于古典概型[21]的方法推算得出:通過(guò)另外隨機(jī)手工標(biāo)注課程評(píng)論數(shù)據(jù)并剔除Mi=0的評(píng)論,直到最終剩下n條課程評(píng)論,在n條課程評(píng)論中統(tǒng)計(jì)標(biāo)注與聚類結(jié)果相符(即另外標(biāo)注結(jié)果與實(shí)驗(yàn)結(jié)果同為正面或同為負(fù)面)的數(shù)據(jù)量k,使用下式推算實(shí)驗(yàn)準(zhǔn)確率:
其中,P(A)為標(biāo)注與聚類結(jié)果相符的事件A發(fā)生的概率,即推算出的準(zhǔn)確率。本文實(shí)驗(yàn)使用100條課程評(píng)論數(shù)據(jù)用作統(tǒng)計(jì),即取n=100;統(tǒng)計(jì)出100條數(shù)據(jù)中標(biāo)注與聚類結(jié)果相符的數(shù)據(jù)有86條,即k=86。基于上述計(jì)算,推算出準(zhǔn)確率達(dá)86%。
在完成情感值計(jì)算的課程評(píng)論中,本文選取情感值最大的5萬(wàn)條正面評(píng)論及情感值最小的5萬(wàn)條負(fù)面評(píng)論共10萬(wàn)條課程評(píng)論用于下文情感分析實(shí)驗(yàn)。
使用3.1節(jié)中算法對(duì)向量化的569 970條課程評(píng)論數(shù)據(jù)進(jìn)行聚類分析及主客觀性質(zhì)計(jì)算,通過(guò)手工標(biāo)注約1 000條課程評(píng)論數(shù)據(jù)進(jìn)行主客觀聚類,由文本在向量空間[22]通過(guò)PCA降維操作后的分布情況(圖5)可知:主觀評(píng)論數(shù)據(jù)及客觀評(píng)論數(shù)據(jù)已經(jīng)在幾個(gè)地方分別聚集成團(tuán),但由于手工標(biāo)注的課程評(píng)論數(shù)量有所不足,使得部分?jǐn)?shù)據(jù)不能參與聚類,從而造成圖中仍有部分中性數(shù)據(jù)。
圖5 文本在主客觀向量空間的分布情況
聚類后的部分評(píng)論及對(duì)應(yīng)主客觀性質(zhì)Mi見(jiàn)表4。
表4 主客觀分析部分結(jié)果
通過(guò)另外手工標(biāo)注的100條課程評(píng)論數(shù)據(jù)中有81條標(biāo)注與聚類結(jié)果相符(即另外標(biāo)注結(jié)果與實(shí)驗(yàn)結(jié)果同為主觀或同為客觀),即n=100,k=81,由式(4)可推算準(zhǔn)確率達(dá)81%。
剔除干擾評(píng)論數(shù)據(jù)、中性評(píng)論數(shù)據(jù)及客觀評(píng)論數(shù)據(jù)后,本文最終篩選出23萬(wàn)主觀課程評(píng)論用于情感值的計(jì)算及正負(fù)性標(biāo)注。
采用3.3節(jié)篩選出的10萬(wàn)條課程評(píng)論數(shù)據(jù)進(jìn)行情感預(yù)測(cè)分析實(shí)驗(yàn),隨機(jī)取其中90%作為訓(xùn)練集,其余10%作為測(cè)試集,分別采用基于機(jī)器學(xué)習(xí)庫(kù)“sklearn”的SVM模型、RandomForest模型、AdaBoost模型、GradientBoost模型和基于TensorFlow的卷積神經(jīng)網(wǎng)絡(luò)(CNN)模型進(jìn)行情感預(yù)測(cè)分析。支持向量機(jī)(SVM)模型是一種在分類與回歸中分析數(shù)據(jù)的學(xué)習(xí)模型,SVM模型把數(shù)據(jù)映射為空間中的點(diǎn),使每一類數(shù)據(jù)被盡可能寬地間隔分開(kāi);隨機(jī)森林(RandomForest)模型是一個(gè)包含多個(gè)決策樹(shù)的分類模型,其通過(guò)平均多個(gè)深決策樹(shù)以降低方差;AdaBoost模型是一種自適應(yīng)的迭代模型,其在每一輪中加入一個(gè)新的弱分類器,以減少分類的錯(cuò)誤率;梯度提升(GradientBoost)模型是一種用于回歸和分類問(wèn)題的機(jī)器學(xué)習(xí)模型,其以分階段的方式構(gòu)建模型,通過(guò)允許對(duì)任意可微分損失函數(shù)進(jìn)行優(yōu)化實(shí)現(xiàn)對(duì)一般提升方法的推廣;CNN模型是一種前饋神經(jīng)網(wǎng)絡(luò)模型,它的人工神經(jīng)元可以響應(yīng)一部分覆蓋范圍內(nèi)的周圍單元,近年來(lái)在圖像處理和語(yǔ)音處理上取得不少突破性進(jìn)展,也有被應(yīng)用于情感分析領(lǐng)域。
各模型參數(shù)設(shè)置見(jiàn)表5。
表5 模型訓(xùn)練參數(shù)設(shè)置
本文實(shí)驗(yàn)設(shè)備配置為Inter?CoreTMi7-9750H CPU和NVIDIA GeForce GTX 1650顯卡,系統(tǒng)環(huán)境為64位Windows 10系統(tǒng),Python版本3.6.8。
對(duì)比sklearn的Label Spreading半監(jiān)督學(xué)習(xí)算法,本文基于聚類分析的文本數(shù)據(jù)擴(kuò)充算法在5個(gè)模型的情感分析準(zhǔn)確率上均有明顯優(yōu)勢(shì),在SVM模型上準(zhǔn)確率相差最大,在CNN模型上準(zhǔn)確率相差最小。其中進(jìn)行LabelSpreading實(shí)驗(yàn)時(shí),kernel選擇KNN,其他參數(shù)保持默認(rèn),使用標(biāo)記為3.3節(jié)的手工標(biāo)注,數(shù)據(jù)集為569 970條課程評(píng)論數(shù)據(jù)向量,最終隨機(jī)篩選出10萬(wàn)條課程評(píng)論數(shù)據(jù)進(jìn)行情感預(yù)測(cè)分析實(shí)驗(yàn)。
在5個(gè)機(jī)器學(xué)習(xí)模型的準(zhǔn)確率對(duì)比上,CNN模型的準(zhǔn)確率最高(使用基于聚類分析的文本數(shù)據(jù)擴(kuò)充算法時(shí)準(zhǔn)確率達(dá)96.5%,使用LabelSpreading算法時(shí)準(zhǔn)確率達(dá)84.47%);在使用基于聚類分析的文本數(shù)據(jù)擴(kuò)充算法時(shí),各模型準(zhǔn)確率均高于89%。詳細(xì)對(duì)比見(jiàn)圖6。
圖6 本文方法與LabelSpreading在5種模型的準(zhǔn)確率對(duì)比
準(zhǔn)確率最高的CNN模型在訓(xùn)練時(shí)的loss和準(zhǔn)確率隨epoch的變化見(jiàn)圖7:隨著epoch的增加,loss逐漸減小,準(zhǔn)確率逐漸提高,模型訓(xùn)練在約第70個(gè)epoch收斂;loss最低值為0.012 6;準(zhǔn)確率最高值為97.01%,最終準(zhǔn)確率為96.50%。
圖7 loss及準(zhǔn)確率隨epoch變化圖
本文針對(duì)情感分析應(yīng)用在在線教育領(lǐng)域上的數(shù)據(jù)標(biāo)注問(wèn)題,提出了基于聚類分析的數(shù)據(jù)擴(kuò)充方法,手工標(biāo)注少量關(guān)鍵數(shù)據(jù)以擴(kuò)充至大量標(biāo)注數(shù)據(jù)。利用該方法擴(kuò)充的數(shù)據(jù),在多個(gè)主流機(jī)器學(xué)習(xí)模型和CNN模型上進(jìn)行情感預(yù)測(cè)分析訓(xùn)練,結(jié)果表明,經(jīng)過(guò)擴(kuò)充后的數(shù)據(jù)在各模型上的準(zhǔn)確率均達(dá)89%以上,其中在CNN模型準(zhǔn)確率達(dá)96.5%。使用本文方法擴(kuò)充的數(shù)據(jù)在各模型上得到的準(zhǔn)確率皆優(yōu)于目前主流的LabelSpreading數(shù)據(jù)擴(kuò)充算法的準(zhǔn)確率。