張 娜,喬德聰
(河南城建學(xué)院 計(jì)算機(jī)與數(shù)據(jù)科學(xué)學(xué)院,河南 平頂山 467036)
文本情感分析又稱為意見挖掘、傾向性分析等,是對(duì)主觀性文本進(jìn)行挖掘、分析和推理的過程。研究來自在線學(xué)習(xí)平臺(tái)的文本情感分析可以指導(dǎo)個(gè)性化教學(xué)。在大數(shù)據(jù)背景下,應(yīng)用個(gè)性化教學(xué)的國(guó)內(nèi)外研究項(xiàng)目日趨增多,如表1所示。
這些經(jīng)典的研究項(xiàng)目可分為以下3類[1]:個(gè)性化學(xué)習(xí)與教學(xué)類數(shù)據(jù)挖掘技術(shù)、學(xué)習(xí)預(yù)測(cè)與評(píng)估類以及學(xué)習(xí)互動(dòng)分析。主要分析方法有5類:(1)統(tǒng)計(jì)分析方法:用以分析學(xué)習(xí)者的成績(jī)達(dá)到課程目標(biāo)的百分比,學(xué)習(xí)時(shí)長(zhǎng)及觀看知識(shí)點(diǎn)情況,以及他們之間的關(guān)系;李帥[2]分析了東北大學(xué)MOOC平臺(tái)上的學(xué)習(xí)行為數(shù)據(jù);(2)內(nèi)容分析法:分析學(xué)習(xí)者的知識(shí)掌握情況,在線互動(dòng)情況,產(chǎn)生困難的原因;(3)社交網(wǎng)絡(luò)分析法:分析學(xué)習(xí)者之間的互動(dòng)關(guān)系,分析其對(duì)于學(xué)習(xí)者情感和認(rèn)知的影響;(4)話語分析法,用于分析學(xué)習(xí)者在線學(xué)習(xí)平臺(tái)上的語言,進(jìn)而分析學(xué)習(xí)者的學(xué)習(xí)特征和情感態(tài)度情況;(5)文本分析法:分析目前網(wǎng)絡(luò)學(xué)習(xí)環(huán)境中以文本為主的非結(jié)構(gòu)化數(shù)據(jù)。文本數(shù)據(jù)挖掘的典型研究如表2所示。這5類方法分別從認(rèn)知、行為、情感這3個(gè)維度,對(duì)學(xué)習(xí)者的具體學(xué)習(xí)情況進(jìn)行分析。
表1 社交網(wǎng)絡(luò)相關(guān)的研究
表2 文本數(shù)據(jù)挖掘技術(shù)相關(guān)的研究
文章利用統(tǒng)計(jì)分析和文本分析兩種方法,通過分析MOOC平臺(tái)課程評(píng)論的極性程度,將好評(píng)和差評(píng)信息及時(shí)反饋給授課教師,針對(duì)性地幫助教師改善課程內(nèi)容,提高課程質(zhì)量;同時(shí),平臺(tái)也可以從整體觀察不同學(xué)科的好評(píng)比例,在引進(jìn)和改善師資力量方面提供有效參考。
1.1.1 軟件環(huán)境
在設(shè)計(jì)過程中,需要使用用于爬取數(shù)據(jù)的PyCharm軟件、具有良好穩(wěn)定性的Chrome瀏覽器、用于保存信息的數(shù)據(jù)庫Mysql、動(dòng)態(tài)爬取信息用到的Selenium WebDriver庫和一些BeautifulSoup、PyQuery、time等常用庫。詳細(xì)信息見表3。
表3 軟件配置信息
1.1.2 設(shè)計(jì)總流程
程序初始化后,打開慕課網(wǎng)課程分類頁面(http://www.icourse163.org/category/all),構(gòu)建link_list,觀察任意課程頁面,將想要捕捉的內(nèi)容分為課程信息和評(píng)論信息。其中,課程信息包括:學(xué)科大類、課程名、授課教師和網(wǎng)頁地址;評(píng)論信息包括:學(xué)生的昵稱、學(xué)習(xí)者的評(píng)論內(nèi)容、對(duì)課程的評(píng)分、發(fā)表評(píng)論時(shí)間、開課班次以及評(píng)論點(diǎn)贊數(shù)。爬取的過程,當(dāng)頁信息獲取完畢后,將自動(dòng)跳轉(zhuǎn)到下一頁,在最后一頁時(shí)停止。采集到的信息通過insert語句儲(chǔ)存到Mysql數(shù)據(jù)庫中。整體的流程如圖1所示。
圖1 MOOC爬取流程
1.1.3 爬取內(nèi)容
本次共爬取到有效數(shù)據(jù)68 367條,包括來自國(guó)家精品、計(jì)算機(jī)、社會(huì)科學(xué)、生物醫(yī)學(xué)等12種領(lǐng)域的學(xué)科課程,數(shù)千位講師、副教授、教授主講的千余門課程信息和近七萬條評(píng)價(jià),將爬取到的所有信息,保存在Mysql數(shù)據(jù)庫中,部分?jǐn)?shù)據(jù)如圖2所示。
圖2 數(shù)據(jù)舉例
1.2.1 數(shù)據(jù)清洗
數(shù)據(jù)清洗是一個(gè)重新檢查和驗(yàn)證數(shù)據(jù)的過程,目的在于清除某些錯(cuò)誤的數(shù)據(jù)、不合格的數(shù)據(jù)以及不合理的數(shù)據(jù),即“臟”數(shù)據(jù),例如:拼寫錯(cuò)誤、空值等。數(shù)據(jù)清洗可以剔除格式錯(cuò)誤、不滿足要求的數(shù)據(jù),從而提高數(shù)據(jù)分析的效率。
1.2.2 數(shù)據(jù)預(yù)處理過程
首先引入需要用到的基本庫,如正則表達(dá)式re庫,讀文件的Pandas庫、分詞工具jieba庫和編碼轉(zhuǎn)換codecs庫等。具體步驟為:
(1)利用正則表達(dá)式。將有意義的字母、數(shù)字、漢字輸出,命令如下:
leave_valid_pattern = re.compile("[^/u4e00-/u9fa5^a-z^A-Z^0-9]")
(2)調(diào)整文本的格式和字符。去除無關(guān)符號(hào)和特殊字符,保留有價(jià)值的中文文本。
(3)去除停用詞并分詞。停用詞是指在檢索的過程中,移除某些特定的字或者詞,從而使NLP數(shù)據(jù)、文本變得更有效率,同時(shí)也節(jié)省了存儲(chǔ)空間。預(yù)處理的效果如圖3所示。
圖3 預(yù)處理效果舉例
圖4 總樣本極性比例情況
1.2.3 情感詞性標(biāo)注
詞性標(biāo)注是指在給定句子中分析每個(gè)詞的語法類別,確定其詞性并加以標(biāo)注的過程。可以使文本在詞性標(biāo)注后,方便進(jìn)行分類分析和統(tǒng)計(jì),帶來更多便利,發(fā)揮良好作用。詞性標(biāo)注可以照搬分詞的工作,在漢語中,多數(shù)詞僅一個(gè)詞性,結(jié)果更加準(zhǔn)確;不同于英文,相同的單詞可能有著積極和消極兩種詞意,或是多種詞性分別表示不同的意思,容易產(chǎn)生歧義。
本文采用Python中的SnowNLP庫完成中文情感詞性標(biāo)注任務(wù),閾值設(shè)置為threshold=0.5。
1.2.4 樣本統(tǒng)計(jì)
通過分類上一步詞性標(biāo)注結(jié)果,將label值為1的數(shù)據(jù)定義為積極(positive),不為1的數(shù)據(jù)定義為消極(negative),同時(shí)使用seaborn可視化庫輸出積極和消極的柱狀圖,如圖4所示。結(jié)果顯示超過6萬的好評(píng)數(shù)據(jù),大幅超過小于一萬的差評(píng)數(shù)據(jù)。
由圖4可知,極性比例嚴(yán)重失衡,這會(huì)導(dǎo)致訓(xùn)練結(jié)果出現(xiàn)較大誤差,因此需要調(diào)整正、負(fù)樣本的配比,平衡兩種樣本。首先將閾值調(diào)整為0.6,設(shè)置percent(多數(shù)類別下采樣的數(shù)量相對(duì)于少數(shù)類別樣本數(shù)量的比例)的值為1.5,使用len()函數(shù)從低到高返回一個(gè)隨機(jī)整型數(shù),采取上采樣的方法,再次使用seaborn方法輸出平衡后的極性比例柱狀圖,如圖5所示。
圖5 調(diào)整閾值后樣本極性比例情況
圖6 關(guān)鍵詞云圖
由圖5可以看出:消極數(shù)據(jù)選取接近8 000條,積極數(shù)據(jù)10 000多條,兩者比例適中,可以進(jìn)行下一步詞向量的訓(xùn)練。最后用shape()方法了解到,全部數(shù)據(jù)為17 125條,每條各有14個(gè)屬性。
1.2.5 云圖制作
詞云是詞語頻率可視化的一種方法,其基于Python的WorldCloud庫,同時(shí)也用到了matplotlib.pyplot方法來制作。其過程為:根據(jù)輸入的字符串,對(duì)詞頻進(jìn)行統(tǒng)計(jì),并用不同的大小顯示出來,輸出為指定的圖片。詞云的樣式由參數(shù)設(shè)定,本次設(shè)計(jì)采用白色底部,楷體字,圖片為10×10的矩形,其他參數(shù)如最大、最小字體的字號(hào),顯示的最大單詞量等均為默認(rèn)設(shè)置。最后使用plt.show()方法輸出詞云,效果如圖6所示。
由圖6可以看出:出現(xiàn)頻次較多的關(guān)鍵詞,其在詞云圖中的位置越靠近中間,且字體越大。因此可以推斷出,頻次較多的詞越多,生成的詞云圖將會(huì)越密集,詞與詞、文字本身的空隙會(huì)越來越少。
Word2Vec是Google團(tuán)隊(duì)發(fā)布的開源詞向量工具,主要包含詞袋模型和跳字模型兩種模型,可以將文本詞匯轉(zhuǎn)化成含有一定語義信息的高維實(shí)數(shù)向量,更好地表達(dá)不同詞之間的相似和類比關(guān)系。
參數(shù)的設(shè)置作用于結(jié)果,這里參考較為常見的參數(shù)設(shè)置方法以及訓(xùn)練文本的特征,對(duì)表4參數(shù)進(jìn)行設(shè)置。
表4 TextCNN超參數(shù)
文中采用準(zhǔn)確率(Accuracy)、精確率(Precision)、召回率(Recall)和F值(F1-Measure)作為評(píng)價(jià)指標(biāo)來權(quán)衡文本情感分析的結(jié)果。四種指標(biāo)的公式見式(1)~式(4)。其中,TP 指積極預(yù)測(cè)為積極情感的數(shù)量,F(xiàn)P 指消極預(yù)測(cè)為積極情感的數(shù)量,F(xiàn)N指積極預(yù)測(cè)為消極情感的數(shù)量,TN 指消極預(yù)測(cè)為消極情感的數(shù)量。
(1)
(2)
(3)
(4)
在對(duì)數(shù)據(jù)的爬取以及對(duì)數(shù)據(jù)樣本標(biāo)注情感閾值之后,統(tǒng)計(jì)得到本次共爬取到有效數(shù)據(jù)68 367條,包括來自國(guó)家精品、計(jì)算機(jī)、社會(huì)科學(xué)、生物醫(yī)學(xué)、教學(xué)方法、農(nóng)學(xué)、外語、法律、藝術(shù)設(shè)計(jì)等12種領(lǐng)域的學(xué)科課程,數(shù)千位講師、副教授、教授帶領(lǐng)的千余門課程信息和近七萬條的評(píng)價(jià),對(duì)數(shù)據(jù)進(jìn)行清理、標(biāo)注情感后,保留了有效數(shù)據(jù)17 125條,其中積極數(shù)據(jù)有11 294條,占總數(shù)據(jù)的65.95%;消極數(shù)據(jù)有5 831條,占總數(shù)據(jù)的34.05%。其中占比最多的學(xué)科為teaching-method,共有11 506條評(píng)論數(shù)據(jù),占總數(shù)據(jù)的67.19%;占比最少的學(xué)科為agriculture,共有43條數(shù)據(jù),占總數(shù)據(jù)的0.25%。12門課程具體評(píng)論數(shù)及其所占的比例如圖7所示。
圖7 課程分類占比圖
在確定使用的數(shù)據(jù)中,通過劃分好的情感極性,對(duì)這12種課程大類的極性進(jìn)行分析,并繪制成柱形圖,如圖8所示。
圖8 樣本總體極性分布
由圖8可以看出:絕大部分課程大類中,積極評(píng)論數(shù)量都高于消極的評(píng)論數(shù)量,再根據(jù)各大類學(xué)科積極評(píng)論的比例,繪制柱狀圖如圖9所示。
由圖9可以看出:historiography大類積極評(píng)論的比例最高,達(dá)到了68.84%;而law大類積極評(píng)論占比最低,僅為47.13%,是12個(gè)學(xué)科中,唯一占比低于50%的學(xué)科。其中有8個(gè)學(xué)科的積極占比都超過了60%,排除數(shù)據(jù)數(shù)量較小的law學(xué)科(87條數(shù)據(jù))和agriculture學(xué)科(43條數(shù)據(jù))外,可以總結(jié)出:
(1)慕課網(wǎng)中teaching-method大類的受眾學(xué)生群體比例最高,也是慕課網(wǎng)中最受歡迎的學(xué)科分類,學(xué)生十分積極;law和agriculture大類的受眾學(xué)生群體比例最低,可以推斷出這兩個(gè)專業(yè)學(xué)生活躍度較低。
(2)根據(jù)積極評(píng)論的占比可以得出,大部分學(xué)生給予了認(rèn)可;而負(fù)面評(píng)論的學(xué)生部分因?yàn)樵O(shè)備無法連接網(wǎng)絡(luò)、沒有聲音等技術(shù)問題給出了差評(píng),其他意見也將幫助授課教師更好地完善課程內(nèi)容。
(3)對(duì)于17 125條評(píng)論中僅出現(xiàn)87條的law學(xué)科和43條的agriculture學(xué)科,平臺(tái)可以針對(duì)性地分析這兩門學(xué)科的課程設(shè)置,提供多樣化學(xué)習(xí)方案,吸引更多學(xué)生加入學(xué)習(xí)。
圖9 各大類學(xué)科積極評(píng)論占比圖
為了解決深度學(xué)習(xí)過程中,損失值波動(dòng)無法達(dá)到最小的問題,設(shè)計(jì)采用ReduceLROnPlateau方法調(diào)整學(xué)習(xí)率,監(jiān)測(cè)損失值的變化,當(dāng)評(píng)價(jià)指標(biāo)趨于穩(wěn)定時(shí),降低學(xué)習(xí)率。
同時(shí),防止過擬合是訓(xùn)練模型中的核心任務(wù),為了改善過擬合泛化性能較差的特點(diǎn),本次設(shè)計(jì)中采用Early stopping方法,通過切斷迭代次數(shù)來防止過擬合,即訓(xùn)練停止于迭代收斂之前,無須等到驗(yàn)證集誤差最小化。同時(shí),在網(wǎng)絡(luò)結(jié)構(gòu)的定義中,加入Dropout層,以0.4的概率隨機(jī)斷開輸入神經(jīng)元,起到防止過擬合的作用。
為了保證對(duì)比結(jié)果的準(zhǔn)確性,在調(diào)參方面,3種模型采用相同的詞向量維度、文本定長(zhǎng)、dropout等參數(shù),以及相同的編譯模型方式,在網(wǎng)絡(luò)層的調(diào)參和全連接層的激活函數(shù)方面存在不同;另一方面,本次設(shè)計(jì)按照73的比例設(shè)置訓(xùn)練集和驗(yàn)證集,在13 700條總數(shù)據(jù)中,包含9 590個(gè)訓(xùn)練樣本以及4 110個(gè)驗(yàn)證樣本,迭代次數(shù)epoch設(shè)置為10,同時(shí)作用于3種模型。
3.3.1 TextCNN訓(xùn)練結(jié)果
導(dǎo)入劃分好的訓(xùn)練集和驗(yàn)證集,加入降低學(xué)習(xí)率和防止過擬合方法,使用model.fit()輸入訓(xùn)練模型,設(shè)置好各項(xiàng)參數(shù),使用print方法輸出精確率、準(zhǔn)確率、召回率、F1值和損失值。經(jīng)歷了10次迭代之后,該模型的準(zhǔn)確率由85.76%提高到了99.22%,并趨于穩(wěn)定;loss值由最初的1.07降到了0.04;精確值由86.73%提高到了99.59%;召回率由93.72%提高到99.24%;F1值由89.68%提高到99.41%。X軸表示迭代次數(shù),Y軸表示損失值,點(diǎn)表示訓(xùn)練損失,折線代表驗(yàn)證損失,繪制點(diǎn)折圖,如圖10所示。再以迭代次數(shù)為橫坐標(biāo),準(zhǔn)確值為縱坐標(biāo),點(diǎn)表示訓(xùn)練F1值,折線代表驗(yàn)證F1值,繪制點(diǎn)折圖,如圖11所示。
圖10 訓(xùn)練集和驗(yàn)證集loss值點(diǎn)折圖
圖11 訓(xùn)練集和驗(yàn)證集F1點(diǎn)折圖
3.3.2 LSTM訓(xùn)練結(jié)果
采用與TextCNN相同的訓(xùn)練模型過程,經(jīng)過迭代后,得到該模型的準(zhǔn)確率穩(wěn)定在65.81%;loss值由最初的0.648降到了0.643;精確值由65.38%提高到了65.81%;召回率穩(wěn)定在1.0;F1值由78.72%提高到79.23%。訓(xùn)練集和驗(yàn)證集損失值的點(diǎn)折圖如圖12所示,其F1點(diǎn)折圖如圖13所示。
圖12 訓(xùn)練集和驗(yàn)證集loss值點(diǎn)折圖
圖13 訓(xùn)練集和驗(yàn)證集F1點(diǎn)折圖
3.3.3 BiLSTM-Self-Attention訓(xùn)練結(jié)果
經(jīng)歷了10次迭代之后,該模型的準(zhǔn)確率由78.70%提高到94.97%;loss值由最初的0.445降到了0.127;精確值由80.94%提高到了96.10%;召回率由90.51%提高到了96.28%;F1值由84.87%提高到96.14%。訓(xùn)練集和驗(yàn)證集的損失值如圖14所示,訓(xùn)練集合驗(yàn)證集的F1點(diǎn)折圖如圖15所示。
圖14 訓(xùn)練集和驗(yàn)證集loss值點(diǎn)折圖
圖15 訓(xùn)練集和驗(yàn)證集F1點(diǎn)折圖
將3個(gè)模型的各項(xiàng)數(shù)據(jù)結(jié)果繪制成表格,綜合對(duì)比,結(jié)果如表5所示。
表5 實(shí)驗(yàn)結(jié)果對(duì)比
在訓(xùn)練時(shí)間方面,TextCNN和LSTM所用時(shí)間較短,平均40 s可以完成一次epoch,而BiLSTM完成一次epoch平均需要95 s。結(jié)合表5的信息,可以得出:
(1)TextCNN充分發(fā)揮其提取文本局部特征的特點(diǎn),利用不同大小的卷積核來獲取句子中的核心信息,以及較強(qiáng)的特征抽取能力[14],在本次實(shí)驗(yàn)中,有著較短的訓(xùn)練時(shí)間、較高的準(zhǔn)確率和較低的損失值,有效地處理空間信息,是本次實(shí)驗(yàn)中的最優(yōu)模型。
(2)LSTM實(shí)驗(yàn)結(jié)果沒有達(dá)到預(yù)期,映射出調(diào)參中存在問題,作為損失函數(shù)的BinaryCrosse-ntropy在這里似乎并不合適;另一方面,由于LSTM自身只能學(xué)習(xí)當(dāng)前詞的上文信息,無法利用文本的下文信息,然而一個(gè)詞的語義同時(shí)連接著上下文的內(nèi)容,與下文信息也密不可分[15],所以這個(gè)特點(diǎn)也將影響最終的準(zhǔn)確率。
(3)為了改善LSTM結(jié)構(gòu)特點(diǎn)的不足,特引入BiLSTM,其由正向 LSTM 和反向 LSTM 組成,兩者上下疊加,前者用于學(xué)習(xí)過去的信息,后者用于學(xué)習(xí)未來的信息,在某一時(shí)刻t,同時(shí)存在兩個(gè)方向相反的門,既能夠利用t-1時(shí)刻的信息,又能夠利用到t+1時(shí)刻的信息[16]。算法實(shí)現(xiàn)上采用merge層融合,解決了LSTM不能學(xué)習(xí)后續(xù)文本的問題。同時(shí),自注意力機(jī)制的加入,可以直接計(jì)算依賴關(guān)系,忽略詞間距,學(xué)習(xí)一個(gè)句子的內(nèi)部結(jié)構(gòu),增加計(jì)算的并行性,提高訓(xùn)練效率[17]。基于這兩點(diǎn)的改進(jìn),BiLSTM-self-Attention在本次實(shí)驗(yàn)中充分發(fā)揮其提取文本全局特征的特點(diǎn),獲得了較高的準(zhǔn)確率,結(jié)果優(yōu)于LSTM模型,在實(shí)際應(yīng)用中,具有較大的使用價(jià)值。
文章從教育大數(shù)據(jù)挖掘視角出發(fā),研究基于深度學(xué)習(xí)的在線學(xué)習(xí)評(píng)論情感分析。對(duì)MOOC平臺(tái)進(jìn)行評(píng)論數(shù)據(jù)爬取,并對(duì)文本數(shù)據(jù)做去除停用詞等預(yù)處理,采用SnowNLP庫完成中文情感詞性標(biāo)注,用TextCNN、LSTM和BiLSTM-self-Attention分布等算法對(duì)深度學(xué)習(xí)模型進(jìn)行訓(xùn)練。實(shí)驗(yàn)結(jié)果表明,改進(jìn)后的包含自注意力機(jī)制的BiLSTM模型優(yōu)于LSTM模型,不僅能獲得較高的準(zhǔn)確率,而且使得語言模型更加完整。