馬辛巳,于明鶴,王 虹,張?zhí)斐?/p>
(1.東北大學(xué) 軟件學(xué)院;2.東北大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,遼寧 沈陽 110169)
加強(qiáng)學(xué)生技能培訓(xùn)的多樣化、個(gè)性化是高等教育發(fā)展的迫切需要。近年來,隨著互聯(lián)網(wǎng)行業(yè)技術(shù)的不斷更新,數(shù)據(jù)挖掘、人工智能等新興技術(shù)不斷涌現(xiàn),這些技術(shù)逐漸被應(yīng)用于生活的各個(gè)領(lǐng)域。在技能培訓(xùn)體系中,能否運(yùn)用相關(guān)互聯(lián)網(wǎng)技術(shù)從海量信息中提取適當(dāng)、有用的信息和智力資源,提高教學(xué)質(zhì)量,已經(jīng)成為評(píng)價(jià)高校教學(xué)質(zhì)量的重要指標(biāo)之一[1]。
教育部召開的2021 屆高校畢業(yè)生就業(yè)進(jìn)展新聞發(fā)布會(huì)指出,2021 屆全國高等院校畢業(yè)生總規(guī)模達(dá)到909 萬,相比前年增長(zhǎng)了35 萬[2],我國高等教育正一步步走向大眾化。隨著智能時(shí)代的到來,信息技術(shù)與教育的進(jìn)一步融合正在深刻改變教育教學(xué)方式?!笆奈濉币?guī)劃,明確提出了“深化新時(shí)代教育評(píng)價(jià)改革,建立健全教育評(píng)價(jià)制度和機(jī)制”的目標(biāo)[3]。同時(shí),中共中央、國務(wù)院印發(fā)《深化新時(shí)代教育評(píng)價(jià)改革總體方案》[4]中指出“堅(jiān)持科學(xué)有效,改進(jìn)結(jié)果評(píng)價(jià),健全綜合評(píng)價(jià),充分利用信息技術(shù)提高教育評(píng)價(jià)的科學(xué)性、專業(yè)性”。在此情況下,利用大數(shù)據(jù)集、機(jī)器學(xué)習(xí)等新興技術(shù)構(gòu)成的學(xué)生畫像技術(shù),可成為全面刻畫學(xué)生能力、服務(wù)于教學(xué)評(píng)價(jià)的重要手段[5]。為了實(shí)現(xiàn)這一目的,本文設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于用戶畫像的學(xué)生評(píng)價(jià)系統(tǒng)。該系統(tǒng)可實(shí)現(xiàn)數(shù)據(jù)預(yù)處理、數(shù)據(jù)向量化,完成對(duì)學(xué)生各個(gè)維度的特征分類。通過構(gòu)建學(xué)生畫像,系統(tǒng)對(duì)各維度上的數(shù)據(jù)進(jìn)行加權(quán)計(jì)算,最終形成對(duì)學(xué)生的綜合評(píng)價(jià),幫助教師全面、準(zhǔn)確地了解每一位學(xué)生的情況。
(1)K-means 聚類算法。K-means 聚類算法是一種深度學(xué)習(xí)相關(guān)的迭代聚類分析算法,其認(rèn)為數(shù)據(jù)點(diǎn)對(duì)于聚類中心的歐氏距離較近,即屬于同一類別,從而將相似數(shù)據(jù)聚到一個(gè)類中。具體過程如算法1所示。
算法1K-means 聚類算法
(2)用戶畫像技術(shù)。用戶畫像的概念最早由交互設(shè)計(jì)之父Alan[6]提出,從文獻(xiàn)總數(shù)、學(xué)科分布和資金支持3 方面來看,國外的用戶肖像研究起步明顯早于中國,在2010 年左右相差最多。2015 年該研究在國內(nèi)進(jìn)入快速發(fā)展時(shí)期,文獻(xiàn)數(shù)量開始呈大量增長(zhǎng)趨勢(shì)[7]??梢钥闯?,用戶畫像是近年來在國內(nèi)興起的熱點(diǎn)研究問題。
用戶畫像主要基于大量用戶積累的數(shù)據(jù),結(jié)合相應(yīng)需求與場(chǎng)景,沉淀出一系列標(biāo)簽,這些標(biāo)簽共同為產(chǎn)品迭代提供數(shù)據(jù)支撐。通過用戶行為構(gòu)建各種標(biāo)簽,實(shí)時(shí)刻畫用戶畫像,從而進(jìn)行產(chǎn)品運(yùn)營輔助。
畫像構(gòu)建過程主要包括以下3 個(gè)階段:①數(shù)據(jù)采集。在用戶畫像研究中,用戶數(shù)據(jù)主要通過社會(huì)調(diào)查、網(wǎng)絡(luò)數(shù)據(jù)收集和平臺(tái)數(shù)據(jù)庫收集獲得;②特征提取。指從用戶數(shù)據(jù)中提取特征標(biāo)簽的過程,主要通過人工與機(jī)器學(xué)習(xí)算法兩種方法完成特征提??;③畫像可視化。指將構(gòu)建的用戶畫像用各種直觀、清晰的視覺圖形呈現(xiàn)出來的過程,例如直方圖、雷達(dá)圖、標(biāo)簽云等。
目前,很多研究者進(jìn)行了用戶畫像構(gòu)建研究。韓梅花等[8]在構(gòu)造抑郁情緒種子詞的基礎(chǔ)上,計(jì)算抑郁情感指數(shù),從而構(gòu)建抑郁群體用戶畫像,并基于此為具有抑郁特征的用戶推送相應(yīng)閱讀治療資源;王凌霄等[9]基于大量社會(huì)化問答社區(qū)用戶的活動(dòng)指標(biāo)數(shù)據(jù),構(gòu)建用戶畫像并從中識(shí)別用戶群體與用戶質(zhì)量;Rossi 等[10]采集機(jī)場(chǎng)用戶的手機(jī)軌跡數(shù)據(jù),并抽取機(jī)場(chǎng)用戶的實(shí)時(shí)行為特征,研發(fā)了一個(gè)決策支持系統(tǒng),為機(jī)場(chǎng)用戶提供信息與建議;張琳娟等[11]通過雙聚類算法分析用戶用電數(shù)據(jù),研究用戶用電行為;Liang 等[12]通過構(gòu)建機(jī)器學(xué)習(xí)模型提取用戶特征,對(duì)非定向上網(wǎng)行為進(jìn)行研究以預(yù)測(cè)學(xué)生的學(xué)業(yè)成績(jī);吳文瀚[13]將數(shù)據(jù)分析與數(shù)據(jù)驗(yàn)證過程相結(jié)合,通過KL 散度和AIO社會(huì)學(xué)模型選取具有代表性的計(jì)算樣本與標(biāo)簽樣本,并利用CH-Score 和SH-Score 明確算法與相關(guān)參數(shù),利用聚類算法,通過TGI 解讀集群數(shù)據(jù)結(jié)果,最終利用關(guān)聯(lián)規(guī)則發(fā)現(xiàn)年輕用戶對(duì)汽車的需求。
面對(duì)龐大且不斷增長(zhǎng)的學(xué)生群體,本文通過數(shù)據(jù)分析與可視化相關(guān)技術(shù),準(zhǔn)確描繪與建模學(xué)生特點(diǎn),生成相關(guān)學(xué)生畫像并進(jìn)行評(píng)價(jià)。主要通過聚類算法的應(yīng)用,根據(jù)各科目屬性和特點(diǎn)對(duì)學(xué)生成績(jī)進(jìn)行聚類,生成恰當(dāng)?shù)奶卣鳂?biāo)簽,據(jù)此開發(fā)學(xué)生評(píng)價(jià)系統(tǒng),使用戶畫像有了更廣闊的應(yīng)用場(chǎng)景,實(shí)現(xiàn)了用戶畫像技術(shù)與高校教學(xué)間的融合,為學(xué)生的下一步學(xué)習(xí)提供參考。同時(shí),可為教師指導(dǎo)、定制個(gè)性化培養(yǎng)方案提供數(shù)據(jù)依據(jù),也為管理者提供決策支持,實(shí)現(xiàn)教學(xué)效果和人才培養(yǎng)質(zhì)量的提升。
傳統(tǒng)意義上對(duì)學(xué)生學(xué)習(xí)成績(jī)、學(xué)習(xí)能力和學(xué)習(xí)過程的數(shù)據(jù)評(píng)價(jià)是基于排名或分?jǐn)?shù)段的,例如90 分以上為優(yōu)秀,80~90 之間為良好。由于成績(jī)與評(píng)價(jià)數(shù)據(jù)分布的不穩(wěn)定性和密度不確定性等原因,無法非常準(zhǔn)確地衡量一個(gè)學(xué)生的實(shí)際情況。例如課程難度較高,90 分以上的學(xué)生較少,可能85 分以上的學(xué)生即處于整體優(yōu)秀狀態(tài),此類問題使用傳統(tǒng)計(jì)算方法無法準(zhǔn)確進(jìn)行評(píng)估。基于以上前提,且學(xué)生成績(jī)大部分符合正態(tài)分布特征,本文通過K-means 聚類分析確定數(shù)據(jù)的實(shí)際分類情況。其中,課程分析是單次調(diào)用聚類算法的顯示,詞云評(píng)價(jià)圖及標(biāo)簽云是多次調(diào)用后進(jìn)行歸一化等處理后的結(jié)果。
(1)數(shù)據(jù)收集與預(yù)處理。本文數(shù)據(jù)集來源于高校教務(wù)處學(xué)生數(shù)據(jù),脫敏后導(dǎo)出得到1 888 行個(gè)人基本信息與競(jìng)賽、論文、實(shí)踐活動(dòng)信息,以及107 195 行學(xué)生成績(jī)信息。為確保數(shù)據(jù)與實(shí)際教學(xué)情況相符,從而保證評(píng)價(jià)模型的適用性,數(shù)據(jù)集包含了多個(gè)專業(yè)學(xué)科方向的學(xué)生數(shù)據(jù)。
使用Navicat 導(dǎo)入工具將Excel 中的數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫中,在導(dǎo)入之前對(duì)數(shù)據(jù)進(jìn)行相應(yīng)的清理操作。使用Excel自帶的vlookup()函數(shù)分離出學(xué)生、教師、課程分類等信息。將五級(jí)分制、二級(jí)分制等轉(zhuǎn)化為int 型成績(jī),對(duì)于是否選修項(xiàng),必修為1,選修為0;修讀類型正常為1,重修為2;考試類別正常為1,補(bǔ)考為2。
(2)K-means 算法應(yīng)用。調(diào)用算法對(duì)課程成績(jī)進(jìn)行聚類,為后續(xù)特征標(biāo)簽構(gòu)建提供輸入。本系統(tǒng)的K-means 算法使用Python 語言編寫,系統(tǒng)框架使用SpringBoot[14]編寫,因此涉及到Java調(diào)用Python 的方法,具體代碼如下:
由于Python 程序調(diào)用了numpy、matplotlib、pymysql 等依賴包,此方式調(diào)用時(shí)import 不到相應(yīng)環(huán)境,因此使用anaconda 配置好環(huán)境之后,需要import sys 將其路徑引入到main.py文件中。
針對(duì)Runtime.getRuntime().exec()的異常處理問題,當(dāng)代碼有異常時(shí),由于調(diào)用后未及時(shí)捕捉進(jìn)程輸出,因此控制臺(tái)沒有輸出,導(dǎo)致開發(fā)調(diào)試?yán)щy。解決辦法為啟動(dòng)該進(jìn)程后,再啟動(dòng)一個(gè)線程及時(shí)獲取異常信息。
(3)特征標(biāo)簽構(gòu)建算法?;贙-means 算法對(duì)學(xué)生評(píng)價(jià)特征標(biāo)簽進(jìn)行構(gòu)建,參考高校對(duì)本科生的培養(yǎng)計(jì)劃及課程大類分類進(jìn)行特征劃分較為全面、可靠。系統(tǒng)共分為六大特征標(biāo)簽,即math、humanities、specialty、electives、code、innovation,分別代表學(xué)生的數(shù)學(xué)與自然科學(xué)、人文、專業(yè)基礎(chǔ)、專業(yè)選修、工程實(shí)踐能力、創(chuàng)新能力六大能力值。給出標(biāo)簽基準(zhǔn)分為5 分,運(yùn)用分母限制,通過運(yùn)算保證標(biāo)簽分?jǐn)?shù)在1~9 分之間。學(xué)生每多選一門課,算法運(yùn)行對(duì)應(yīng)的評(píng)分機(jī)制,直至得出最終評(píng)分,具體描述如算法2所示。
算法2特征能力標(biāo)簽構(gòu)建算法
科目標(biāo)簽得分與每個(gè)標(biāo)簽下的課程數(shù)量有直接關(guān)系,一旦掛科(低于60 分)還會(huì)啟動(dòng)相應(yīng)的減分機(jī)制。獎(jiǎng)罰體系以標(biāo)簽內(nèi)所有課程數(shù)量為分母,結(jié)合具體課程的聚類情況賦予分子進(jìn)行評(píng)分,標(biāo)簽評(píng)分隨著每增加一門科目進(jìn)行動(dòng)態(tài)更新。由于分母的限制,每增加一門課程,課程數(shù)量增加,在屬于同一聚類結(jié)果(分子一定)的情況下,對(duì)最終得分的影響會(huì)逐漸縮小,因此一定程度上避免了因某一標(biāo)簽得分較低,進(jìn)而選取大量該標(biāo)簽下課程進(jìn)行刷分的行為。由于已經(jīng)掌握了該標(biāo)簽下大量課程的知識(shí),因此在后續(xù)獎(jiǎng)懲體系中只有擁有較高級(jí)的聚類結(jié)果才會(huì)有較多加分,從而對(duì)最終結(jié)果造成較大影響。
系統(tǒng)在確定一位學(xué)生進(jìn)行特征能力標(biāo)簽構(gòu)建之后,根據(jù)其所修的課程成績(jī)進(jìn)行單項(xiàng)排序。通過比較可得出:特征能力標(biāo)簽得分較高的課程成績(jī)?cè)谌w學(xué)生中排名靠前,得分較低的課程成績(jī)則不理想,可在一定程度上體現(xiàn)出算法的有效性。以學(xué)號(hào)為“711”的學(xué)生為例,該學(xué)生“數(shù)學(xué)與自然科學(xué)”標(biāo)簽下的高等數(shù)學(xué)、大學(xué)物理、數(shù)值分析得分分別為99、97、91,在同年級(jí)241 名同學(xué)中排名第3、7、20 名。而“專業(yè)基礎(chǔ)”標(biāo)簽下的計(jì)算機(jī)體系結(jié)構(gòu)、計(jì)算機(jī)網(wǎng)絡(luò)得分為72、78,在同年級(jí)241 名同學(xué)中排名第217、131 名?;谏鲜龀煽?jī),該同學(xué)的六大特征標(biāo)簽:數(shù)學(xué)與自然科學(xué)、人文、專業(yè)基礎(chǔ)、專業(yè)選修、工程實(shí)踐能力、創(chuàng)新能力得分分別為8.27、7.70、6.77、7.00、8.11、6.75,所有學(xué)生標(biāo)簽均值得分為6.14、6.48、6.13、6.82、6.53、6.89。系統(tǒng)根據(jù)上述標(biāo)簽得分最終形成雷達(dá)圖,如圖1所示。
Fig.1 Radar chart example圖1 雷達(dá)圖示例
(4)學(xué)生畫像生成。通過算法得到六大特征標(biāo)簽值之后,在畫像中加入競(jìng)賽、論文、志愿時(shí)長(zhǎng)、實(shí)踐活動(dòng)等信息,形成綜合、全面的學(xué)生畫像。在后續(xù)系統(tǒng)開發(fā)中,將此學(xué)生畫像通過柱狀圖、雷達(dá)圖、詞云圖等可視化方法更加直觀地展現(xiàn)給系統(tǒng)用戶。詞云圖中文字大小即標(biāo)簽數(shù)值,并根據(jù)每位學(xué)生在學(xué)科競(jìng)賽、社會(huì)工作和論文發(fā)表等方面取得的成績(jī)?cè)黾訉?duì)應(yīng)的文字標(biāo)簽。以學(xué)號(hào)為“711”的學(xué)生為例,其詞云圖如圖2所示。
Fig.2 Example of wordcloud chart圖2 詞云圖示例
該學(xué)生可根據(jù)此畫像保持自己的競(jìng)爭(zhēng)優(yōu)勢(shì),同時(shí)彌補(bǔ)畫像所展現(xiàn)出的不足,教師可根據(jù)學(xué)生畫像定制培養(yǎng)方案,公司可根據(jù)畫像尋找所需的人才,以達(dá)到共贏的目的。
基于學(xué)生畫像的學(xué)生評(píng)價(jià)系統(tǒng)主要是針對(duì)學(xué)生評(píng)價(jià)和個(gè)性化教學(xué)相關(guān)服務(wù)的需求而開發(fā)的,主要工作是記錄每天的教學(xué)數(shù)據(jù)、維護(hù)信息,對(duì)數(shù)據(jù)進(jìn)行挖掘形成學(xué)生標(biāo)簽云。系統(tǒng)應(yīng)具有學(xué)生畫像分析、數(shù)據(jù)處理、系統(tǒng)管理三大功能。學(xué)生畫像分析主要負(fù)責(zé)給出某門課程的學(xué)生成績(jī)分布占比以及最高分、最低分、平均分等信息,根據(jù)學(xué)號(hào)查詢?cè)搶W(xué)生所有科目成績(jī),并通過相關(guān)算法對(duì)其成績(jī)進(jìn)行分析,得出評(píng)價(jià)標(biāo)簽;數(shù)據(jù)處理主要負(fù)責(zé)數(shù)據(jù)收集與清洗,對(duì)學(xué)生成績(jī)、科目信息進(jìn)行增刪改查操作;系統(tǒng)管理主要負(fù)責(zé)身份驗(yàn)證管理,對(duì)個(gè)人用戶信息、賬號(hào)信息進(jìn)行增刪改查等操作。
圖3 是整個(gè)系統(tǒng)的用例概要。在系統(tǒng)中,一些通用功能需要進(jìn)行良好地封裝,而且需盡量避免魔法值的出現(xiàn),以確保后續(xù)需求變更時(shí)方便修改。對(duì)于業(yè)務(wù)數(shù)據(jù)量的增大,可以使用SpringClound 相關(guān)技術(shù)將其快速拆分為微服務(wù)項(xiàng)目進(jìn)行集群部署;對(duì)于數(shù)據(jù)集的增大,可以考慮采用elastatic search 技術(shù)進(jìn)行快速查詢,且可以對(duì)聚類算法進(jìn)行一定優(yōu)化與改進(jìn)。綜上所述,本系統(tǒng)具有極大的可擴(kuò)展空間。
Fig.3 System use case圖3 系統(tǒng)用例
針對(duì)上述功能需求,本系統(tǒng)的設(shè)計(jì)如圖4 所示。該系統(tǒng)為B/S 應(yīng)用程序,對(duì)各種瀏覽器有較好的兼容性。系統(tǒng)采用MVC 架構(gòu)[15],分為4 部分:存儲(chǔ)層、業(yè)務(wù)流程層、控制層以及前端頁面。同時(shí)系統(tǒng)采用高內(nèi)聚、低耦合、易于系統(tǒng)擴(kuò)展的設(shè)計(jì),以便后續(xù)作進(jìn)一步升級(jí)。
Fig.4 System architecture圖4 系統(tǒng)架構(gòu)
系統(tǒng)主要設(shè)計(jì)三大功能模塊,即學(xué)生畫像分析、數(shù)據(jù)采集處理和系統(tǒng)管理模塊。本系統(tǒng)要求用戶必須在登錄狀態(tài)下才能使用系統(tǒng)功能,未登錄時(shí)訪問系統(tǒng)任何其他資源將跳轉(zhuǎn)到登錄頁面。學(xué)生畫像模塊是整個(gè)系統(tǒng)的核心部分,包括數(shù)據(jù)預(yù)處理和矢量變換,利用模型訓(xùn)練可以構(gòu)建學(xué)生的能力畫像與特征標(biāo)簽,是業(yè)務(wù)邏輯和算法的主要實(shí)現(xiàn)部分;數(shù)據(jù)采集模塊是整個(gè)系統(tǒng)算法的數(shù)據(jù)來源,包括算法所需數(shù)據(jù)的增刪改查;系統(tǒng)管理模塊是基礎(chǔ)模塊,由系統(tǒng)管理員操作,維護(hù)基礎(chǔ)數(shù)據(jù),建立系統(tǒng)用戶權(quán)限,以保證系統(tǒng)的正常運(yùn)行。
本系統(tǒng)采用關(guān)系型數(shù)據(jù)庫MySQL[16]與非關(guān)系型數(shù)據(jù)庫Redis,并采用mybatis 持久化層框架進(jìn)行分頁等操作;后端選用SpringBoot 框架進(jìn)行開發(fā),同時(shí)集成了jsr303、lombok、jackson、JWT、log4j 等相關(guān)技術(shù)以降低系統(tǒng)耦合度,輔助系統(tǒng)開發(fā);前端頁面展示選用vue[17]框架集成elementui和v-chart實(shí)現(xiàn),開發(fā)過程中采用junit進(jìn)行單元測(cè)試。系統(tǒng)開發(fā)完成后將其部署在Linux操作系統(tǒng)上運(yùn)行。
學(xué)生畫像分析模塊基于本文設(shè)計(jì)的學(xué)生畫像構(gòu)建技術(shù),實(shí)現(xiàn)對(duì)學(xué)生當(dāng)前狀態(tài)進(jìn)行分析。用戶登錄成功后在左側(cè)導(dǎo)航欄選擇“學(xué)生畫像”頁面,3 列分別為單科目聚類算法、學(xué)生評(píng)價(jià)詞云圖和雷達(dá)圖。具體實(shí)現(xiàn)頁面如圖5所示。
(1)基于K-means 聚類的課程分析。同一門課程選擇不同的聚類中心數(shù)量進(jìn)行聚類,結(jié)果如圖6 所示,k 值分別為2、3、4、5。在計(jì)算時(shí)去除不及格成績(jī)的影響,默認(rèn)Kmeans 聚類算法的k 值為3,將學(xué)生成績(jī)分為中、良、優(yōu)秀3類,聚類算法結(jié)果更加清晰,實(shí)際效果最好。
(2)學(xué)生特征標(biāo)簽構(gòu)建。雷達(dá)圖與柱狀圖采用vchart組件進(jìn)行實(shí)現(xiàn),搜索框中輸入學(xué)號(hào)可進(jìn)行切換。雷達(dá)圖提供平均標(biāo)簽值的數(shù)據(jù),并且可以在搜索多位學(xué)生學(xué)號(hào)時(shí)進(jìn)行比對(duì),查看其在各個(gè)標(biāo)簽?zāi)芰χ捣矫娴牟町悺F骄只鶞?zhǔn)數(shù)據(jù)隨著計(jì)算過的學(xué)生畫像越來越多,不斷進(jìn)行動(dòng)態(tài)更新。
(3)學(xué)生評(píng)價(jià)詞云圖實(shí)現(xiàn)。學(xué)生評(píng)價(jià)詞云圖在學(xué)生特征標(biāo)簽構(gòu)建基礎(chǔ)上,采用ve-wordcloud 進(jìn)行構(gòu)建,依據(jù)標(biāo)簽構(gòu)建結(jié)果對(duì)其進(jìn)行顯示。采用wordExtend 設(shè)置隨機(jī)字體顏色,并利用人像輪廓圖片設(shè)置詞云圖形狀。
5.2.1 數(shù)據(jù)庫操作
(1)關(guān)系型數(shù)據(jù)庫。使用mybatis-generator 生成實(shí)體類、Example、Mapper 和xml 文件,減少了手動(dòng)編碼的代碼量,加快了開發(fā)速度,并且應(yīng)用log4j 打印相應(yīng)日志,便于調(diào)試。
本系統(tǒng)選用邏輯分頁,并不依賴于物理實(shí)體,將所有數(shù)據(jù)都查詢出來,然后通過RowBounds 在內(nèi)存進(jìn)行分頁。
Fig.5 Student portrait page圖5 學(xué)生畫像頁面
Fig.6 K-means schematic diagram圖6 K-means示意圖
(2)非關(guān)系型數(shù)據(jù)庫。Redis 默認(rèn)使用Java 序列化存儲(chǔ)Java 對(duì)象,實(shí)體類必須實(shí)現(xiàn)Serializable 接口,編碼不方便,且使用序列化形式碼流大,不易傳輸,無法進(jìn)行跨語言協(xié)同,因此將Redis 存儲(chǔ)格式變更為json 格式進(jìn)行對(duì)象存儲(chǔ),具體代碼如下:
5.2.2 課程數(shù)據(jù)處理
用戶登錄成功后在左側(cè)導(dǎo)航欄選擇“課程編輯”頁面,其主體由表格構(gòu)成,可以對(duì)課程信息進(jìn)行增刪改查操作。具體實(shí)現(xiàn)頁面如圖7所示。
在表格前設(shè)置check 框,用戶可以選擇進(jìn)行批量刪除操作,刪除功能可提供二次確認(rèn)。還可提供單行數(shù)據(jù)操作功能,將表格中的一項(xiàng)更改為可編輯輸入框。
Fig.7 Course editing page圖7 課程編輯頁面
在前端增加表單驗(yàn)證功能,在后端實(shí)體類上,為應(yīng)對(duì)需求變更,使用了Lombok,在實(shí)體類上增加@Data、@AllArgsConstructor、@NoArgsConstructor 注釋來自動(dòng)生成構(gòu)造方法和getter、setter方法。
提供模糊查詢功能,在后臺(tái)使用動(dòng)態(tài)sql,通過關(guān)鍵字“l(fā)ike”進(jìn)行拼接。點(diǎn)擊“新增”按鈕,可以跳出dialog,部分?jǐn)?shù)據(jù)項(xiàng)具有下拉框選擇功能。
提供數(shù)據(jù)導(dǎo)出功能,使用Export2Excel.js 將表格數(shù)據(jù)導(dǎo)出為Excel文件。
5.3.1 token身份驗(yàn)證
登錄頁面如圖8 所示??紤]到安全性及系統(tǒng)性能,由于使用普通賬號(hào)密碼登錄會(huì)頻繁調(diào)用數(shù)據(jù)庫而影響系統(tǒng)性能,本系統(tǒng)對(duì)于用戶登錄采取JWT 的token 身份驗(yàn)證方式。使用加密算法HMAC256 生成token,可在一定程度上保證安全性,使用攔截器獲取并驗(yàn)證token,攔截所有請(qǐng)求,通過判斷是否有@LoginRequired 注解,決定是否需要登錄。
5.3.2 系統(tǒng)信息查詢
Fig.8 Login page圖8 登錄頁面
管理員登錄成功后將顯示系統(tǒng)主頁。其中,餅圖可查看具體課程的分?jǐn)?shù)區(qū)間占比,柱狀圖可搜索對(duì)應(yīng)學(xué)號(hào)學(xué)生的所有課程成績(jī)。系統(tǒng)主頁如圖9所示。
Fig.9 System homepage圖9 系統(tǒng)主頁
(1)頭像上傳。用戶點(diǎn)擊頁面顯示的頭像可進(jìn)行頭像更換。該功能使用el-upload 實(shí)現(xiàn),在前端接收?qǐng)D片時(shí)限制圖片小于5M。存儲(chǔ)過程為:以form 形式傳回后臺(tái),服務(wù)器使用UUID 生成隨機(jī)字符串+截取源文件的后綴名來重定義文件名,并寫入到本地服務(wù)器。獲取過程為:查找前端服務(wù)器中該用戶的頭像文件是否存在,若不存在則向后端服務(wù)器接口發(fā)起請(qǐng)求,調(diào)用數(shù)據(jù)庫查詢后返回。
(2)個(gè)人資料增刪改查。點(diǎn)擊個(gè)人信息框的“修改資料”后跳出dialog,如圖10 所示。其中編號(hào)和學(xué)校由系統(tǒng)后臺(tái)統(tǒng)一給出,用戶不可更改,性別選項(xiàng)為下拉框選擇格式。加入正則表達(dá)式驗(yàn)證郵箱和手機(jī)號(hào)格式及內(nèi)容是否為空,以確保數(shù)據(jù)的有效性。服務(wù)器端為防止從postman等軟件跳過前端頁面直接注入數(shù)據(jù),加入JSR303 校驗(yàn),以確認(rèn)數(shù)據(jù)不為空且符合相應(yīng)格式要求。
Fig.10 Information modification圖10 修改資料頁面
(3)選擇課程進(jìn)行成績(jī)查詢。點(diǎn)擊餅圖“設(shè)置”按鈕后跳出課程成績(jī)查詢,類比多層級(jí)下拉框的樣式實(shí)現(xiàn),調(diào)用后端對(duì)該課程進(jìn)行統(tǒng)計(jì)分析。使用動(dòng)態(tài)SQL 語句,考慮到sql 注入,防止給sql 語句傳入1 等信息導(dǎo)致所有信息被查出來,因此使用占位符#{},而不是字符串拼接${}。
(4)選擇學(xué)號(hào)進(jìn)行分?jǐn)?shù)顯示。柱狀圖顯示分?jǐn)?shù),默認(rèn)第一位學(xué)生的學(xué)號(hào),可以通過搜索框進(jìn)行切換。使用vchart 的ve-histogram 組件,由于每位學(xué)生所修科目量較大,導(dǎo)致顯示不全,因此需要通過chartExtend 屬性進(jìn)入底層echart中使用series的barWidth 進(jìn)行設(shè)置。
(1)登錄功能測(cè)試。對(duì)系統(tǒng)的首次登錄、token 身份驗(yàn)證及刷新時(shí)間、登錄時(shí)能否記住密碼等功能進(jìn)行測(cè)試,表1對(duì)登錄功能的測(cè)試用例進(jìn)行了詳細(xì)說明。經(jīng)過測(cè)試得出系統(tǒng)登錄功能良好,具有記住密碼的能力,在token 未失效時(shí)段內(nèi)可自動(dòng)登錄。
Table 1 Test cases of log in function表 1 登錄功能測(cè)試用例表
(2)統(tǒng)計(jì)數(shù)據(jù)查詢測(cè)試。對(duì)系統(tǒng)主頁的頭像上傳、資料修改、課程選擇、圖標(biāo)生成等功能進(jìn)行測(cè)試,表2 對(duì)統(tǒng)計(jì)數(shù)據(jù)查詢的測(cè)試用例進(jìn)行了詳細(xì)說明。經(jīng)過測(cè)試得出統(tǒng)計(jì)數(shù)據(jù)查詢功能良好,頭像上傳可以在前端存儲(chǔ),且短時(shí)間內(nèi)可以加載出圖片,郵箱、手機(jī)號(hào)格式的正則表達(dá)式正確,可以正確查詢課程成績(jī)分布與個(gè)人成績(jī)柱狀圖。
Table 2 Test cases of statistics queries表 2 統(tǒng)計(jì)數(shù)據(jù)查詢測(cè)試用例表
(3)學(xué)生畫像構(gòu)建測(cè)試。對(duì)系統(tǒng)的聚類結(jié)果、學(xué)生評(píng)價(jià)詞云圖、特征標(biāo)簽構(gòu)建、成績(jī)分析、標(biāo)簽數(shù)值柱狀圖等進(jìn)行測(cè)試,表3 對(duì)統(tǒng)計(jì)數(shù)據(jù)查詢的測(cè)試用例進(jìn)行了詳細(xì)說明。經(jīng)過測(cè)試得出學(xué)生畫像模塊功能良好,Java 調(diào)用Python 時(shí)正確未出錯(cuò),K-means 算法聚類結(jié)果無空類,詞云圖輪廓為人形,且文字大小與得分成正比,雷達(dá)圖可同時(shí)展現(xiàn)個(gè)人標(biāo)簽得分與平均標(biāo)簽得分。
Table 3 Test cases of student profile表 3 學(xué)生畫像測(cè)試用例表
(4)數(shù)據(jù)庫修改測(cè)試。對(duì)數(shù)據(jù)庫的修改功能進(jìn)行測(cè)試,表4 對(duì)統(tǒng)計(jì)數(shù)據(jù)的增加、刪除、查詢及更新的測(cè)試用例進(jìn)行了詳細(xì)說明。經(jīng)過測(cè)試得出數(shù)據(jù)庫運(yùn)行良好,前端所有數(shù)據(jù)的增刪改查及其他操作均可以在數(shù)據(jù)庫中對(duì)應(yīng)實(shí)現(xiàn)。
Table 4 Test cases of database表 4 數(shù)據(jù)庫測(cè)試用例表
(5)性能測(cè)試。系統(tǒng)的性能測(cè)試包括吞吐量測(cè)試、響應(yīng)時(shí)間測(cè)試等,由于要應(yīng)用到線上環(huán)境,本系統(tǒng)需要對(duì)這些指標(biāo)進(jìn)行測(cè)試。系統(tǒng)性能測(cè)試用例如表5所示。
經(jīng)過測(cè)試,系統(tǒng)并發(fā)性能良好。從系統(tǒng)并發(fā)數(shù)來看,在目前預(yù)計(jì)的實(shí)際應(yīng)用中,管理員數(shù)量不會(huì)超過100 個(gè),而有數(shù)千名學(xué)生使用該系統(tǒng)。按照性能分析中的“二八原則”,同時(shí)可能有幾百名學(xué)生使用本系統(tǒng),目前看來系統(tǒng)可以滿足此并發(fā)量。
Table 5 Test cases of performance表 5 性能測(cè)試用例表
系統(tǒng)經(jīng)過驗(yàn)證與測(cè)試,性能符合需求,可以較好地實(shí)現(xiàn)特征標(biāo)簽構(gòu)建與學(xué)生評(píng)價(jià)功能,且標(biāo)簽形象直觀,人機(jī)交互友好。
系統(tǒng)以高等院校為應(yīng)用場(chǎng)景,通過對(duì)教學(xué)數(shù)據(jù)的收集、清洗、挖掘,實(shí)時(shí)構(gòu)建學(xué)生能力特征標(biāo)簽,生成學(xué)生評(píng)價(jià)詞云圖,從而實(shí)現(xiàn)可視化反饋學(xué)習(xí)狀態(tài)與教學(xué)成果。該系統(tǒng)可以幫助學(xué)生了解自己的學(xué)習(xí)情況,同時(shí)讓教師隨時(shí)掌握教學(xué)情況,并根據(jù)系統(tǒng)提供的信息定制個(gè)性化的學(xué)生培養(yǎng)方案。
本文完成了基本學(xué)生評(píng)價(jià)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),未來還可以從業(yè)務(wù)完善、數(shù)據(jù)分析、算法創(chuàng)新等方面進(jìn)行改進(jìn),例如綜合學(xué)生的日常行為及校外學(xué)習(xí)等數(shù)據(jù),設(shè)計(jì)更加完善的多元評(píng)價(jià)機(jī)制。在模型選擇上,還可探索更多適合教育領(lǐng)域的模型進(jìn)行算法運(yùn)算。同時(shí)在數(shù)據(jù)量、用戶量不斷增大的情況下,可以適當(dāng)增加算法的復(fù)雜度,將本系統(tǒng)拆分為微服務(wù)項(xiàng)目進(jìn)行集群部署,以保證并發(fā)量。