陳力帆 畢振波
(浙江海洋大學(xué)信息工程學(xué)院 浙江省舟山市 316000)
立德樹(shù)人是高校培養(yǎng)人才的根本任務(wù),高校需要把思想政治工作貫穿教學(xué)全過(guò)程,而在傳統(tǒng)的高校教學(xué)中,思政知識(shí)僅放在為數(shù)不多的幾門(mén)政治課中教授,專業(yè)課程只涉及專業(yè)教學(xué),忽略思政知識(shí)。為解決高校教學(xué)中專業(yè)課程與思政課程不平衡的問(wèn)題,亟需全面推進(jìn)課程思政建設(shè)工作[1]。在計(jì)算機(jī)教育領(lǐng)域,課程思政建設(shè)已成為教學(xué)改革的重要內(nèi)容,以數(shù)據(jù)庫(kù)課程為例,數(shù)據(jù)庫(kù)技術(shù)作為現(xiàn)代化信息管理的重要工具,相關(guān)從業(yè)人員不僅要注重?cái)?shù)據(jù)的搜集、存儲(chǔ)和管理,更需要學(xué)會(huì)正確使用和保護(hù)數(shù)據(jù)。因此高校教師要將思想政治教育融入數(shù)據(jù)庫(kù)課程教學(xué)中,可以幫助學(xué)生培養(yǎng)法治意識(shí),提升數(shù)據(jù)從業(yè)者的數(shù)據(jù)倫理道德。
隨著互聯(lián)網(wǎng)和大數(shù)據(jù)技術(shù)的發(fā)展,人們獲取信息的方式越發(fā)多樣化[2]。信息過(guò)載和各種碎片化信息導(dǎo)致教師很難從海量、龐雜的資源中篩選出能夠滿足教學(xué)需要的思政資源,學(xué)生也無(wú)法找到自己感興趣的資源學(xué)習(xí)。
針對(duì)此類特殊場(chǎng)景,利用個(gè)性化推薦算法分析用戶的行為記錄,篩選出用戶感興趣的課程思政資源,結(jié)合Springboot框架技術(shù)進(jìn)行Web開(kāi)發(fā),設(shè)計(jì)一個(gè)基于個(gè)性化推薦的課程思政資源庫(kù),對(duì)推進(jìn)高校的課程思政建設(shè)有著深遠(yuǎn)意義。
2.1.1 個(gè)性化推薦算法
(1)協(xié)同過(guò)濾推薦算法。其主要思想是以當(dāng)前己有的歷史評(píng)分信息來(lái)計(jì)算用戶或物品項(xiàng)目之間的相似度,從而尋找用戶的相似群體,獲取相似群體感興趣的物品生成推薦列表[3]。推薦流程分為以下幾步。
第一步:構(gòu)建評(píng)分矩陣。從系統(tǒng)中獲取用戶對(duì)物品的評(píng)分信息,構(gòu)建的評(píng)分矩陣如公式(1)所示。其中rAB表示A用戶對(duì)B物品的評(píng)分,如果用戶對(duì)物品有過(guò)瀏覽或者評(píng)分行為,矩陣中rAB的值可以通過(guò)多個(gè)用戶行為加權(quán)計(jì)算得出,如果用戶對(duì)某個(gè)物品沒(méi)有評(píng)分則對(duì)應(yīng)位置為0。
第二步:計(jì)算相似度。利用上述矩陣計(jì)算用戶之間的相似度,找出與當(dāng)前用戶興趣接近的用戶。相似度的計(jì)算有以下幾種方法。
基于標(biāo)準(zhǔn)的余弦相似度。即任意兩個(gè)用戶之間的夾角余弦值,夾角越大余弦值越小,兩個(gè)用戶之間的相似度就越低;相反夾角越小余弦值越大,兩個(gè)用戶之間的相似度就越高。計(jì)算公式如公式(2)所示,其中rui和rvi表示用戶u和用戶v對(duì)物品i的評(píng)分。
基于修正的余弦相似度。修正的余弦相似度算法使用了項(xiàng)目得分和平均得分之間的差值,如公式(3)所示。其中rui和rvi表示用戶u和用戶v對(duì)物品i的評(píng)分,表示用戶u和用戶v對(duì)物品評(píng)分的平均值。
皮爾森相似度。該方法不會(huì)計(jì)算所有物品,而是計(jì)算用戶共同評(píng)分項(xiàng)。其中Itemuv為用戶公共評(píng)分集,如公式(4)所示。
第三步:選取推薦集合。對(duì)上一步計(jì)算出的相似度降序排序,選取前n個(gè)用戶作為當(dāng)前用戶興趣相似的用戶,根據(jù)當(dāng)前用戶與相似用戶的相似度,得到相似用戶的偏好物品,計(jì)算當(dāng)前用戶對(duì)其未有過(guò)行為記錄的物品偏好度,把偏好度最高的物品集合最為推薦候選集。計(jì)算方式如公式(5)所示。其中Nuv表示與用戶u有共同評(píng)分的用戶集合,rvi表示用戶v對(duì)物品i的實(shí)際評(píng)分。
(2)基于內(nèi)容推薦算法。基于內(nèi)容的推薦算法的主要過(guò)程是通過(guò)分析物品的屬性信息賦予物品關(guān)鍵字或標(biāo)簽,建立物品特征,然后基于用戶偏好和物品特征構(gòu)建兩種特征向量,計(jì)算用戶興趣特征向量和物品特征向量的匹配程度,將匹配程度高的項(xiàng)目作為候選集推薦給用戶?;趦?nèi)容推薦算法主要分為三步:構(gòu)造物品特征向量、構(gòu)造用戶特征向量得出用戶偏好度、計(jì)算用戶偏好度和物品特征向量的匹配程度[4]。
第一步,構(gòu)造物品特征向量。從系統(tǒng)中獲取到物品的數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行信息抽取,分解出可以用于做標(biāo)簽的數(shù)據(jù)作為該物品的特征值,構(gòu)建特征向量,又叫做特征提取。
第二步,得出用戶偏好度。利用用戶歷史評(píng)分物品的物品特征向量,學(xué)習(xí)用戶的興趣愛(ài)好,從而構(gòu)造用戶特征向量。
第三步,相似度匹配計(jì)算。把獲取到的物品特征與用戶偏好度匹配,通過(guò)相似度計(jì)算方法計(jì)算物品特征和用戶偏好的匹配程度,從物品的數(shù)據(jù)集中找到用戶感興趣的物品。選取前N個(gè)作為推薦候選集推薦給用戶。
(3)混合推薦算法。其主要的思想是將兩種或兩種以上的推薦算法組合使用,利用多種算法的互補(bǔ)特性改善推薦效果?;旌贤扑]算法不單單是算法之間的混合,還包括了選取數(shù)據(jù)之間的混合、算法使用場(chǎng)景之間的混合。混合推薦算法常見(jiàn)的組合方式主要分為以下幾種[5]:
第一種,加權(quán)式。通過(guò)賦予幾種推薦算法不同的權(quán)重,將多種推薦算法產(chǎn)生的結(jié)果以權(quán)重組合,對(duì)候選集物品得分最終加權(quán)計(jì)算得出的結(jié)果進(jìn)行排序推薦。加權(quán)混合的得分計(jì)算如公式(6)所示,其中βk為第k個(gè)算法所占的權(quán)重,reck(u,i)為第k個(gè)算法中用戶u對(duì)物品i的評(píng)分。 (6)
第二種,瀑布式。瀑布式混合是將一個(gè)推薦算法的推薦結(jié)果作為下一個(gè)推薦算法的初始值,產(chǎn)生的推薦集合在作為下一種的初始值,以此類推,逐層過(guò)濾,得到精確的推薦結(jié)果。
第三種,特征組合式。利用多個(gè)推薦算法從中抽取出特征數(shù)據(jù),在選擇其中一個(gè)算法作為主推薦算法生成最終結(jié)果。
第四種,摻雜式?;旌隙鄠€(gè)推薦算法的結(jié)果,對(duì)不同推薦算法的結(jié)果去重、排序得到的物品集合推薦給用戶。
第五種,切換式。根據(jù)用戶的狀態(tài)、用戶行為記錄的數(shù)量、物品的數(shù)量、標(biāo)簽的數(shù)量等變量,選取不同的推薦算法,對(duì)于剛注冊(cè)的新用戶可以根據(jù)用戶注冊(cè)時(shí)選擇的標(biāo)簽采用基于內(nèi)容推薦,對(duì)于老用戶可以選擇協(xié)同過(guò)濾推薦。
經(jīng)過(guò)長(zhǎng)期的發(fā)展,混合推薦算法因其良好的推薦效果逐漸成為一種主流的趨勢(shì)。本文課程思政資源庫(kù)采用混合模式的推薦算法。
2.1.2 Springboot框架
Springboot[6]是為了改進(jìn)Spring開(kāi)發(fā)中配置繁瑣、部署效率低下而設(shè)計(jì),旨在幫助開(kāi)發(fā)者更加快速搭建Spring框架,Springboot極大地簡(jiǎn)化了Spring應(yīng)用的搭建、開(kāi)發(fā)、部署過(guò)程,取消了xml文件的配置,只要通過(guò)注解的方式配置即可。Springboot還默認(rèn)嵌入了Tomcat容器,開(kāi)發(fā)者直接將項(xiàng)目打成jar包即可運(yùn)行,無(wú)需以war包的形式部署。Springboot構(gòu)建的項(xiàng)目中使用starter模塊來(lái)引用所需要的依賴,使項(xiàng)目的依賴管理更加簡(jiǎn)單,功能模塊整合更加輕巧,易于理解和使用。
2.1.3 Vue框架
Vue[7]是一個(gè)可構(gòu)建用戶可視化界面的漸進(jìn)式企業(yè)級(jí)前端框架,采用自底向上的設(shè)計(jì)模式,作為一種輕量級(jí)框架,Vue對(duì)于第三方庫(kù)有很強(qiáng)的集成能力,同時(shí),Vue可以和現(xiàn)代工具箱和各種支持類庫(kù)相結(jié)合,還可以為復(fù)雜的應(yīng)用程序提供驅(qū)動(dòng)程序。Vue中的核心是響應(yīng)式數(shù)據(jù)綁定與組合視圖組件,響應(yīng)式數(shù)據(jù)綁定可以根據(jù)數(shù)據(jù)變化自動(dòng)更新視圖,組合視圖組件通過(guò)封裝代碼可以提高代碼復(fù)用性以及降低數(shù)據(jù)耦合度。
課程思政資源庫(kù)的使用者分為普通用戶和管理員兩類,普通用戶分為學(xué)生用戶和教師用戶,學(xué)生用戶可以對(duì)資源庫(kù)中的資源查看、下載和評(píng)分,教師用戶可以查看、下載和上傳資源。功能性需求主要為用戶功能性需求、資源推薦功能性需求、管理員功能性需求。普通用戶必須先注冊(cè)個(gè)人信息才能登錄查看、下載資源和對(duì)資源評(píng)分。管理員輸入自己賬號(hào)密碼登錄后可以對(duì)用戶和資源的信息進(jìn)行查看審核、添加資源、修改資源信息、刪除資源等操作。系統(tǒng)的推薦功能可以通過(guò)讀取用戶對(duì)資源的行為記錄從而找到相似的資源推薦給當(dāng)前用戶。功能模塊圖如圖1所示。
圖1:課程思政資源庫(kù)功能模塊圖
根據(jù)系統(tǒng)的需求分析和業(yè)務(wù)邏輯,可以將系統(tǒng)分為三層架構(gòu),分別是數(shù)據(jù)訪問(wèn)層、業(yè)務(wù)邏輯層、界面表示層。
數(shù)據(jù)訪問(wèn)層主要負(fù)責(zé)系統(tǒng)數(shù)據(jù)庫(kù)的存儲(chǔ)和交互,包括用戶信息、思政資源信息、系統(tǒng)日志信息、推薦列表信息,對(duì)系統(tǒng)數(shù)據(jù)的增加、修改、刪除、查看都是在數(shù)據(jù)訪問(wèn)層完成。
業(yè)務(wù)邏輯層作為系統(tǒng)的核心架構(gòu)層,負(fù)責(zé)整個(gè)系統(tǒng)的業(yè)務(wù)流程和邏輯處理,業(yè)務(wù)邏輯層可以調(diào)用數(shù)據(jù)訪問(wèn)層獲取用戶數(shù)據(jù)和資源數(shù)據(jù),根據(jù)用戶對(duì)資源的行為記錄采用皮爾森和余弦相似度計(jì)算用戶、資源之間的相似度,通過(guò)混合推薦算法對(duì)其進(jìn)行分析,得出資源推薦列表,將推薦數(shù)據(jù)存入系統(tǒng)數(shù)據(jù)庫(kù)。
界面表示層作為系統(tǒng)程序的入口,負(fù)責(zé)在終端向用戶提供操作和展示的界面,用戶首先在界面表示層提交請(qǐng)求,隨后該層就會(huì)調(diào)用業(yè)務(wù)邏輯層已經(jīng)封裝好的方法,最后服務(wù)器會(huì)將后臺(tái)處理完成的數(shù)據(jù)通過(guò)表示層再展示給用戶。在課程思政資源庫(kù)中用戶可以在表示層注冊(cè)登錄、查看個(gè)人信息、在線瀏覽搜索評(píng)價(jià)資源以及查看推薦列表。
課程資源庫(kù)的設(shè)計(jì)采用了MySQL數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)存儲(chǔ),根據(jù)系統(tǒng)的整體功能和各實(shí)體之間的關(guān)系,利用關(guān)系規(guī)范化理論設(shè)計(jì)數(shù)據(jù)庫(kù)表。主要包含了學(xué)生表(student)、教師表(teacher)、管理員表(admin)、章節(jié)表(chapter)、資源表(source)、評(píng)分表(score)。
2.4.1 管理員表
管理員登錄系統(tǒng)后,權(quán)限有:學(xué)生管理、教師管理、資源管理。管理員表信息字段和字段格式如表1所示。2.4.2 學(xué)生表
表1:管理員表
學(xué)生表主要包含學(xué)生的基本信息,字段和格式如表2所示。
表2:學(xué)生表
2.4.3 教師表
教師表包含教師基本信息,字段和格式如表3所示。
表3:教師表
2.4.4 章節(jié)表
章節(jié)表存儲(chǔ)思政資源所屬的課程章節(jié)信息,課程中每個(gè)章節(jié)內(nèi)容不同,所融入的思政元素類型也不相同。章節(jié)表的字段和格式如表4所示。
表4:章節(jié)表
2.4.5 資源表
資源表主要存儲(chǔ)思政資源信息,有文本資源、音頻資源、視頻資源三種類型,每個(gè)資源有相對(duì)應(yīng)的章節(jié)。字段和格式如表5所示。
表5:資源表
2.4.6 評(píng)分表
評(píng)分表主要記錄學(xué)生用戶對(duì)當(dāng)前所學(xué)資源的評(píng)分,學(xué)生根據(jù)自己對(duì)資源的偏好度對(duì)資源進(jìn)行打分。評(píng)分表字段和格式如表6所示。
表6:評(píng)分表
系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)使用IDEA作為開(kāi)發(fā)工具,由于IDEA對(duì)Spring框架有了完善的整合,便于項(xiàng)目開(kāi)發(fā)。前端采用Vue框架,后端采用Springboot框架,數(shù)據(jù)庫(kù)使用MySQL,Navicat作為數(shù)據(jù)庫(kù)管理工具,服務(wù)器采用Tomcat8.5。
3.2.1 用戶注冊(cè)
用戶模塊的基本功能包括用戶注冊(cè)、用戶登錄、用戶個(gè)人中心。用戶注冊(cè)首先輸入用戶名、手機(jī)號(hào)、密碼等個(gè)人信息,由于新用戶對(duì)系統(tǒng)內(nèi)的資源沒(méi)有行為記錄,存在冷啟動(dòng)的問(wèn)題,所以新用戶在注冊(cè)時(shí)系統(tǒng)會(huì)提供思政資源的標(biāo)簽供用戶選擇,這樣用戶在剛進(jìn)入系統(tǒng)沒(méi)有行為記錄的情況下,系統(tǒng)會(huì)根據(jù)用戶選擇的感興趣的標(biāo)簽優(yōu)先給用戶推薦相關(guān)資源,在新用戶對(duì)資源有過(guò)瀏覽、評(píng)分后會(huì)重新計(jì)算用戶和資源之間的相似度,更新用戶畫(huà)像,再重新推薦資源。
用戶完成個(gè)人信息填寫(xiě)和標(biāo)簽選擇后,點(diǎn)擊立即注冊(cè),JS腳本會(huì)首先驗(yàn)證用戶信息的規(guī)范性,例如用戶名、密碼和手機(jī)號(hào)不能為空,兩次密碼輸入必須一致,當(dāng)有信息為空或者兩次密碼輸入不一致時(shí),系統(tǒng)會(huì)提示用戶需要重新輸入。如果用戶信息輸入規(guī)范,系統(tǒng)會(huì)將用戶表單中的數(shù)據(jù)傳到后臺(tái),進(jìn)入下一步驗(yàn)證。
后端收到前端傳來(lái)的數(shù)據(jù)后,通過(guò)調(diào)用findUserByName方法訪問(wèn)系統(tǒng)數(shù)據(jù)庫(kù)檢測(cè)是否存在重復(fù)的用戶名,如果存在,提示用戶重新輸入用戶名,如果不存在,則用戶注冊(cè)成功,進(jìn)入登錄界面。
3.2.2 用戶登錄
用戶登錄功能主要是驗(yàn)證能否在數(shù)據(jù)庫(kù)中找到用戶名、手機(jī)號(hào)和密碼,從而判斷用戶信息的正確性。用戶填寫(xiě)完個(gè)人信息后,點(diǎn)擊登錄按鈕,前端將登錄請(qǐng)求傳到后端,收到請(qǐng)求后首先使用MD5加密工具類將用戶密碼加密成字符串形式,隨后將用戶名和加密后的密碼交給UserController類中的login方法處理,login方法以用戶名為參數(shù)調(diào)用UserService的findUserByName方法從數(shù)據(jù)庫(kù)中查找用戶信息,若用戶名或密碼與數(shù)據(jù)庫(kù)中的信息不匹配,則登錄失敗并返回錯(cuò)誤碼,提示用戶名或密碼錯(cuò)誤,若信息一樣,則提示登錄成功,并且服務(wù)端根據(jù)用戶信息隨機(jī)生成64位或者128位token,放入Redis數(shù)據(jù)庫(kù)中,然后返回給客戶端并存儲(chǔ)在cookie中,設(shè)置一個(gè)有效期,在有效期內(nèi)用戶每次訪問(wèn)都攜帶此token,服務(wù)端去Redis中校驗(yàn)是否有此用戶即可,無(wú)需再去數(shù)據(jù)庫(kù)中查找,提高了服務(wù)器運(yùn)行效率,同時(shí)避免用戶每次登錄重復(fù)輸入,提升了用戶的體驗(yàn)感。
3.2.3 用戶個(gè)人中心
用戶個(gè)人中心主要是用戶信息維護(hù)功能,包括個(gè)人信息查詢和修改。當(dāng)用戶點(diǎn)擊查看個(gè)人信息時(shí),服務(wù)器收到請(qǐng)求以用戶編號(hào)為參數(shù)調(diào)用getUserList方法進(jìn)入數(shù)據(jù)庫(kù)查詢用戶信息,將得到的用戶信息返回給瀏覽器。當(dāng)用戶點(diǎn)擊編輯個(gè)人信息,完成信息修改并保存后,服務(wù)器同樣以用戶編號(hào)為參數(shù)調(diào)用updateUser方法修改相應(yīng)的信息,將修改后的信息重新保存到數(shù)據(jù)庫(kù)中。
資源模塊主要包括教師用戶上傳資源、學(xué)生用戶瀏覽和下載資源、系統(tǒng)資源個(gè)性化推薦功能。
3.3.1 資源上傳
教師用戶完成注冊(cè)和登錄操作后會(huì)進(jìn)入教師平臺(tái),在這里教師用戶可以瀏覽下載相應(yīng)的資源。資源上傳是教師平臺(tái)的核心功能,教師用戶可以上傳文本、音頻、視頻三種類型的資源,在資源上傳過(guò)程中,首先選擇需要上傳的資源文件并填寫(xiě)資源名稱、關(guān)鍵詞以及資源包含的思政要素所屬的章節(jié)目錄,內(nèi)容填寫(xiě)完畢后點(diǎn)擊資源上傳。服務(wù)器收到請(qǐng)求后會(huì)調(diào)用SourceController的addSource方法將資源添加到數(shù)據(jù)庫(kù)中,并返回添加成功的提示信息。
3.3.2 資源瀏覽
學(xué)生用戶和教師用戶可以在資源展示界面瀏覽資源,資源庫(kù)中的思政資源是以章節(jié)為目錄進(jìn)行展示。該資源庫(kù)以數(shù)據(jù)庫(kù)技術(shù)課程為例,根據(jù)數(shù)據(jù)庫(kù)理論概述、關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)、數(shù)據(jù)庫(kù)表操作、數(shù)據(jù)庫(kù)編程、數(shù)據(jù)庫(kù)安全這五個(gè)章節(jié)中的有關(guān)內(nèi)容融入了相應(yīng)的思政元素,將思政資源以文本、音頻、視頻三種形式分類展示以供學(xué)生更加直觀清晰地瀏覽學(xué)習(xí),點(diǎn)擊視頻資源時(shí),會(huì)進(jìn)入資源詳情頁(yè)面,資源詳情包含資源介紹和關(guān)鍵字,方便學(xué)生在學(xué)習(xí)之前對(duì)資源有一個(gè)大致的了解。資源展示頁(yè)面如圖2所示。
圖2:思政資源展示頁(yè)面
3.3.3 資源個(gè)性化推薦
當(dāng)用戶處于登錄狀態(tài)時(shí),系統(tǒng)可以根據(jù)用戶的行為和資源的屬性進(jìn)行個(gè)性化推薦。該課程資源庫(kù)使用協(xié)同過(guò)濾和基于內(nèi)容推薦的混合推薦算法,具體流程為:針對(duì)沒(méi)有歷史行為記錄的新用戶,系統(tǒng)無(wú)法個(gè)性化推薦,會(huì)在用戶注冊(cè)時(shí)選擇資源標(biāo)簽,從而根據(jù)用戶選擇的標(biāo)簽推薦相應(yīng)的資源,也就是基于內(nèi)容推薦。如果是有行為記錄的老用戶,首先讀取包含用戶編號(hào)、物品編號(hào)、用戶評(píng)分三個(gè)屬性的CSV數(shù)據(jù)集文件。第二步是計(jì)算用戶之間的相似度,這里用的是基于修正的余弦相似度來(lái)計(jì)算,得到與用戶偏好相似的k個(gè)近鄰用戶,若k>50,則選取前50個(gè)用戶作為近鄰。最后讀取這些近鄰用戶所偏好的資源,根據(jù)資源名稱從數(shù)據(jù)庫(kù)中查找是否與目標(biāo)用戶偏好的資源一致,篩選出近鄰用戶喜愛(ài)的資源而目標(biāo)用戶無(wú)偏好的資源作為最終推薦列表,設(shè)置推薦列表數(shù)量為5,選取前5個(gè)資源作為結(jié)果。
綜上所述,本文基于Springboot和Vue框架設(shè)計(jì)一個(gè)數(shù)據(jù)庫(kù)技術(shù)課程思政資源庫(kù),并提出一種基于協(xié)同過(guò)濾和內(nèi)容推薦的個(gè)性化推薦算法作為該資源庫(kù)推薦功能的技術(shù)?;趥€(gè)性化推薦的課程思政資源庫(kù)主要具備用戶登錄、注冊(cè)、個(gè)人信息維護(hù)、資源上傳、資源瀏覽、資源推薦等基本功能模塊,根據(jù)數(shù)據(jù)庫(kù)技術(shù)課程的章節(jié)分別融入相關(guān)內(nèi)容的思政元素,以文本、音頻、視頻形式展現(xiàn)出來(lái),有效解決了思政資源數(shù)量繁雜、內(nèi)容不精的問(wèn)題,對(duì)今后高校的課程思政建設(shè)以及學(xué)生道德素質(zhì)的培養(yǎng)具有重大意義。