王文豪 彭倩 陳力凱 石開(kāi)洪 吳云
摘要:針對(duì)目前大多數(shù)的高校學(xué)習(xí)系統(tǒng)不能滿足不同師生群體的在線學(xué)習(xí)需求,該文運(yùn)用了Python語(yǔ)言、Flask框架、SQLAlchemy、協(xié)同過(guò)濾算法等相關(guān)技術(shù)對(duì)系統(tǒng)的總體架構(gòu)、功能模塊、數(shù)據(jù)庫(kù)以及API進(jìn)行設(shè)計(jì),實(shí)現(xiàn)了班級(jí)管理、作業(yè)管理、資料搜索、在線考試、學(xué)習(xí)資源推薦等主要功能。系統(tǒng)經(jīng)過(guò)實(shí)際測(cè)試后,系統(tǒng)運(yùn)行穩(wěn)定,能夠較好地滿足不同師生群體的個(gè)性化需求。
關(guān)鍵詞:高校學(xué)習(xí)系統(tǒng);個(gè)性化推薦;Python;協(xié)同過(guò)濾
中圖分類號(hào):TP311.5
文獻(xiàn)標(biāo)識(shí)媽:A
1 概述
目前許多高校已經(jīng)研發(fā)岀了本學(xué)校的“高校學(xué)習(xí)系統(tǒng)”,由,于高校學(xué)習(xí)系統(tǒng)的出現(xiàn),讓學(xué)生更容易獲取自己感興趣的專業(yè),知識(shí)以及在線完成老師分配的教學(xué)作業(yè)。然而當(dāng)前大部分地,區(qū)的高校學(xué)習(xí)系統(tǒng)并不能滿足不同高校師生的教學(xué)需求,各類,學(xué)習(xí)系統(tǒng)為學(xué)生提供的學(xué)習(xí)資源和反饋信息基本上都是千篇,一律,然而不同用戶群體對(duì)不同學(xué)習(xí)資源的需求是存在差異,的。本文基于以上需求,擬開(kāi)發(fā)一款針對(duì)不同師生群體的個(gè)性,化推薦的“高校學(xué)習(xí)系統(tǒng)”,通過(guò)數(shù)據(jù)挖掘、日志分析等技術(shù),釆,集學(xué)生用戶的學(xué)習(xí)需求、學(xué)習(xí)習(xí)慣、學(xué)習(xí)成績(jī)等個(gè)性化的數(shù)據(jù),通過(guò)基于物品的協(xié)同過(guò)濾算法為不同學(xué)生的學(xué)習(xí)需求進(jìn)行個(gè),性化、有針對(duì)地推薦相關(guān)學(xué)習(xí)資料和課程。
2 系統(tǒng)設(shè)計(jì)
本系統(tǒng)運(yùn)用RESTful,API設(shè)計(jì)理念進(jìn)行API設(shè)計(jì),同時(shí)使用了SQLAlchemy、Flask,框架[1]、Pandas、Xpath、Bootstrap、Vue等技術(shù),實(shí)現(xiàn)了系統(tǒng)功能。
2.1 功能模塊設(shè)計(jì)
根據(jù)系統(tǒng)需求,系統(tǒng)分為教師端和學(xué)生端,教師端的功能,模塊主要有創(chuàng)建班級(jí)、管理班級(jí)、發(fā)布作業(yè)、批改作業(yè)、發(fā)布資,料等;學(xué)生端的主要功能模塊有加入班級(jí)、查看作業(yè)及狀態(tài)、在,線考試、個(gè)性化課程推薦等功能詳細(xì)功能如圖1所示。
2.2 數(shù)據(jù)庫(kù)設(shè)計(jì)
本文根據(jù)系統(tǒng)需求共設(shè)計(jì)了,20個(gè)數(shù)據(jù)庫(kù)表分別為用戶表,(user)教師表(teacher)學(xué)生表(student)用戶認(rèn)證表(usertoken),作業(yè)表(work),資料表(data),搜索資料表(search),題目表(peoblem),帖子表(post)班級(jí)表(class)等。在這里選取用戶表、作業(yè),表講述其中的邏輯結(jié)構(gòu)設(shè)計(jì)。
1)用戶表(用戶編號(hào)用戶名,用戶學(xué)號(hào)/工號(hào),用戶密碼,用,戶手機(jī)號(hào)碼用戶權(quán)限編號(hào),用戶出生年月,手機(jī)驗(yàn)證碼id)其,中用戶編號(hào)為主鍵,用戶學(xué)號(hào)/工號(hào)具有唯一性用戶密碼和用,戶手機(jī)號(hào)碼不為空,手機(jī)驗(yàn)證碼id為外鍵。
2)作業(yè)表(作業(yè)編號(hào),班級(jí)編號(hào),作業(yè)名稱,作業(yè)發(fā)布人,作,業(yè)發(fā)布人編號(hào),作業(yè)發(fā)布時(shí)間作業(yè)截止時(shí)間作業(yè)狀態(tài)),其中,作業(yè)編號(hào)為主鍵班級(jí)編號(hào)、作業(yè)發(fā)布人編號(hào)和作業(yè)發(fā)布人為,外鍵。
3 技術(shù)實(shí)現(xiàn)
3.1 ORM技術(shù)的實(shí)現(xiàn)
系統(tǒng)后端在數(shù)據(jù)訪問(wèn)層與數(shù)據(jù)庫(kù)交互時(shí),使用session,=Session()創(chuàng)建會(huì)話類通過(guò)會(huì)話類的實(shí)例對(duì)象session調(diào)用方法,add()、delete()、update()和query()實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的增刪改查操,作。以“創(chuàng)建作業(yè)”功能為例系統(tǒng)后端運(yùn)用session的add。方法,向作業(yè)表中添加數(shù)據(jù)。用戶在創(chuàng)建作業(yè)頁(yè)面輸入的,“work_classid”,為,“13”,;“work_name”,為“數(shù)學(xué)作業(yè),4”,;“work_deadtime”為截止時(shí)間;“work_statement”為作業(yè)狀態(tài),此,外“work_issueid”為當(dāng)前創(chuàng)建者用戶編號(hào),“work_issuer”為,“test"。
3.2 RESTful?API的實(shí)現(xiàn)
本文以“創(chuàng)建作業(yè)”,API[2]為例當(dāng)用戶觸發(fā)“創(chuàng)建作業(yè)”功能,時(shí),系統(tǒng)調(diào)用對(duì)應(yīng)的API前端從頁(yè)面獲取請(qǐng)求參數(shù)。在后端獲取到參數(shù)后,運(yùn)用封裝好的。pen方法新建Http請(qǐng)求,并指定此,請(qǐng)求的方法、URL以及驗(yàn)證信息,最后調(diào)用send方法將請(qǐng)求參,數(shù)發(fā)送到后端服務(wù)。此API的請(qǐng)求方式是POST路徑是“/sys-,tem/class/create/work/”狀態(tài)碼200表示前后端數(shù)據(jù)交互成功。
3.3 推薦算法的實(shí)現(xiàn)
基于物品的協(xié)同過(guò)濾算法⑶是當(dāng)前最主流、最基礎(chǔ)、應(yīng)用最,多的推薦算法,該算法主要是通過(guò)分析用戶的行為信息并計(jì)算,與該物品之間的相似度的物品最終推薦給用戶。例如用戶A,為一個(gè)數(shù)據(jù)結(jié)構(gòu)的視頻點(diǎn)過(guò)贊而用戶B對(duì)一個(gè)數(shù)據(jù)結(jié)構(gòu)的視,頻以及一個(gè)機(jī)器學(xué)習(xí)的視頻點(diǎn)了贊ItemCF算法則會(huì)將機(jī)器學(xué),習(xí)的學(xué)習(xí)資源推薦給用戶A?;谖锲返膮f(xié)同過(guò)濾算法在本,系統(tǒng)中的運(yùn)用流程如下:
Stepl:系統(tǒng)后端服務(wù)器調(diào)用學(xué)習(xí)資料的API接口,并通過(guò),AJAX接收前端的請(qǐng)求參數(shù);
Step2:通過(guò)前端傳回的usertoken獲取該用戶的user_id和,該用戶所在班級(jí)的所有同學(xué)的user_id并獲取該用戶已下載的,學(xué)習(xí)資源編號(hào)和該班級(jí)所有用戶下載的學(xué)習(xí)資源編號(hào)建立用,戶-學(xué)習(xí)資源的倒排表train;
Step3:根據(jù)用戶-學(xué)習(xí)資源倒排表train得到每個(gè)學(xué)習(xí)資源,集合將集合里的學(xué)習(xí)資源兩兩加一得到一個(gè)矩陣再將這些,矩陣相加得到矩陣C最后將矩陣C歸一化得到學(xué)習(xí)資源之間,的余弦相似度矩陣W;
Step4:得到相似度矩陣W之后通過(guò)ItemCF的計(jì)算公式計(jì),算用戶A對(duì)學(xué)習(xí)資源的興趣字典rank,并根據(jù)用戶興趣度由高,向低排序取10個(gè)學(xué)習(xí)資料編號(hào);
Step5:根據(jù)10個(gè)學(xué)習(xí)資料的編號(hào)獲取對(duì)應(yīng)學(xué)習(xí)資料的相,關(guān)信息封裝成推薦列表返回到前端。
4 系統(tǒng)實(shí)現(xiàn)
本文最終設(shè)計(jì)并實(shí)現(xiàn)了基于個(gè)性化推薦的高校學(xué)習(xí)系統(tǒng),系統(tǒng)功能界面如圖2所示。
本系統(tǒng)于2019年3月部署到貴州大學(xué)校園網(wǎng)上開(kāi)始在貴,州大學(xué)東校區(qū)測(cè)試運(yùn)行用戶總數(shù)量統(tǒng)計(jì)結(jié)果如圖3所示。從,圖中可以得出,由于2019年3月至4月系統(tǒng)還在調(diào)試和推廣,期,用戶數(shù)量相對(duì)較少。在2019年4月至6月,處于大學(xué)生剛,剛開(kāi)學(xué)在校學(xué)習(xí)的時(shí)間在學(xué)院的大力推廣之下,教師和學(xué)生,通過(guò)該系統(tǒng)進(jìn)行線上學(xué)習(xí),使得用戶總數(shù)量急速上升;在2019,年7月至8月期間因暑假原因,用戶數(shù)增量不大,但在9月份,用戶數(shù)量得到提高已達(dá)450人次。
5 結(jié)束語(yǔ)
目前,該系統(tǒng)在貴州大學(xué)花溪東校區(qū)的運(yùn)營(yíng)情況良好學(xué),校師生使用該系統(tǒng)作為日常教學(xué)工具的頻率不斷增加,系統(tǒng)訪,問(wèn)量日均達(dá)到100次左右,充分說(shuō)明此系統(tǒng)能夠滿足不同師生,群體的需求對(duì)學(xué)生的個(gè)性化學(xué)習(xí)有著重要意義,體現(xiàn)了該系,統(tǒng)具有高實(shí)用和推廣的價(jià)值。
參考文獻(xiàn):
[1]李超,徐云龍華中偉,等.一種基于Python,F(xiàn)lask的Web服務(wù)器端設(shè)計(jì)[J].信息與電腦:理論版2019(8):87-88.
[2]張前進(jìn).基于REST的泛在網(wǎng)絡(luò)資源服務(wù)架構(gòu)設(shè)計(jì)[J].陜西理工學(xué)院學(xué)報(bào):自然科學(xué)版201733⑵:60-6368.
[3]林麗金,李文翔楊俊賢,等.基于協(xié)同過(guò)濾在高校學(xué)習(xí)資源個(gè)性化推薦系統(tǒng)中應(yīng)用研究[J].價(jià)值工程201635(4):191-193.
[4]李曉瑜.協(xié)同過(guò)濾推薦算法研究[J].計(jì)算機(jī)與數(shù)字工程2019,47(9):2118-21222136.
[通聯(lián)編輯:代影]