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