(北京林業(yè)大學信息學院,北京 100083)
2015年,北京林業(yè)大學信息學院開始實行大類招生。新生入學后通過3個學期的計算機類基礎課程和通識課程的學習,依據(jù)自身的學習情況及未來的職業(yè)規(guī)劃,在大二第一學期結束后,可自主選擇心儀的專業(yè),達到計劃學分后準予畢業(yè)。為確保大類招生專業(yè)分流指標的科學性,充分發(fā)揮大類招生制度的優(yōu)越性,學校依據(jù)學生的成績、志愿、專業(yè)培養(yǎng)要求等要素進行綜合評測后確定專業(yè)分流結果。然而對學生學習等各要素的數(shù)據(jù)收集耗時費力,加之近年來高校的辦學規(guī)模不斷擴大,以往的專業(yè)分流經(jīng)驗已不能適應目前的實際情況。例如,隨著學校辦學規(guī)模的擴大,招生人數(shù)不斷增加,參與專業(yè)分流的學生人數(shù)逐年增多,傳統(tǒng)的紙質化專業(yè)分流工作既耗費人力又浪費資源。同時在專業(yè)分流過程中,參與分流的學生無法全方位獲得志愿填報的整體情況,導致部分分數(shù)中等的學生錯失進入更好專業(yè)的機會。為解決以上問題,筆者提出開發(fā)基于協(xié)同過濾算法的大類專業(yè)分流實時動態(tài)系統(tǒng),以便于教務管理人員、教師與學生之間進行溝通,提高專業(yè)分流的效率,節(jié)省人力資源。此系統(tǒng)可以根據(jù)學生的測試結果進行專業(yè)推薦,學生可自主選擇專業(yè),保證了大類專業(yè)分流工作的公開、公平和公正。
目前計算機領域中適用范圍較廣的推薦算法主要有基于規(guī)則推薦的算法、基于內容推薦的算法、協(xié)同過濾推薦算法和混合推薦算法(又稱組合推薦算法)[1],這4種算法各有優(yōu)缺點。常用于計算機領域的推薦算法及優(yōu)缺點見表1。
表1 計算機領域常用的推薦算法及其優(yōu)缺點
其中協(xié)同過濾算法的基本思想是:找到與當前用戶Ccur相似(比如興趣相似)的其他用戶Cjs,計算對象S對于用戶的效益值u(Cjs,S),利用效益值對所有S進行排序或者加權操作,找到最適合當前用戶Ccur的對象S*[2]。協(xié)同過濾算法的基本思想非常易于理解,就像在日常生活中,人們往往會利用網(wǎng)絡或前輩經(jīng)驗對一些事物作出個人的判斷和選擇?,F(xiàn)有的國內外推薦系統(tǒng)大部分是基于其相似用戶對某一內容的評價向目標用戶進行推薦,而在本系統(tǒng)智能專業(yè)推薦模塊使用的算法中,只需找到最相似的用戶即可。因此,本系統(tǒng)基于此算法構建大類專業(yè)分流實時動態(tài)系統(tǒng)。
根據(jù)協(xié)同過濾算法的基本思想可知,協(xié)同過濾算法需要將基礎用戶作為參考才能進行協(xié)同推薦,基礎用戶對該算法而言是不可或缺的要素。
相似度計算是協(xié)同過濾推薦算法的核心,要尋找最適合當前用戶Ccur的對象S*需要計算用戶之間的相似度。根據(jù)霍蘭德[3]人職匹配理論,人格一共被分為6種不同的類型,每一種類型的人格都有著不一樣的特點。筆者基于霍蘭德人職匹配理論,查閱相關資料提取出15個區(qū)分度明顯的關鍵詞,依據(jù)15個關鍵詞設計了40道具有專業(yè)區(qū)分度的測試題目,并形成調查問卷,面向大類專業(yè)分流的學生開展了調查,共發(fā)放問卷300份,收回有效問卷203份。
通過余弦夾角公式(1)計算出當前用戶Ccur和4個基礎用戶C的余弦相似度(similarity),將余弦相似度(similarity)最小的基礎用戶C作為推薦專業(yè),經(jīng)過測試得出推薦結果的精確度為67.3%。
余弦夾角公式(1)
通過皮爾森相關系數(shù)公式(2)計算當前用戶Ccur和5個基礎用戶C的皮爾森相關系數(shù)r,將皮爾森相關系數(shù)r最小的基礎用戶C作為推薦專業(yè),經(jīng)過測試得到推薦結果的精確度為70.2%:
皮爾森相關系數(shù)公式(2)
由此可見,使用公式(2)得到的推薦結果精確度較高,因此將公式(2)作為大類專業(yè)分流實時動態(tài)系統(tǒng)的協(xié)同過濾推薦算法中用戶間相似度的計算方法。
首先,筆者從數(shù)據(jù)傳遞和加工的角度,以圖形的方式刻畫數(shù)據(jù)流從輸入到輸出的移動變換過程。對于復雜的含有多重功能的系統(tǒng)可以按照層次結構進行逐步分解,并以分層結構流程圖來反映這種結構關系,從而可以清楚地表達和理解整個系統(tǒng)的結構內涵[4]?;趨f(xié)同過濾算法的大類專業(yè)分流實時動態(tài)系統(tǒng)中涉及到的主要數(shù)據(jù)流包括學生基本信息、學生志愿填報信息、學生排名信息等。學生基本信息數(shù)據(jù)流程見圖1。
圖1 學生基本信息的數(shù)據(jù)流程
輸入學生的基本信息后,本系統(tǒng)會將學生的基本信息存入數(shù)據(jù)庫中,并在前端頁面顯示出來。學生填報志愿的數(shù)據(jù)流程見圖2。
圖2 學生填報志愿的數(shù)據(jù)流程
學生填報完志愿后,本系統(tǒng)會將學生的志愿信息存入數(shù)據(jù)庫,并根據(jù)成績顯示排名,專業(yè)分流結束后,學生可以打印最終志愿表。
本系統(tǒng)主要涉及學生、教師和教務管理人員3個角色。
學生通過此系統(tǒng)可以實時查看自己在本專業(yè)的排名、進行專業(yè)傾向測試、推斷出適合自己的專業(yè)、了解更多的專業(yè)信息、查看往屆專業(yè)分流的結果、獲取往屆學生的建議、進行志愿填報、查看專業(yè)分流結果、下載最終志愿表。教師可利用該系統(tǒng)發(fā)布所在專業(yè)相關的資料和資訊,增加學生了解專業(yè)的途徑,并且可以統(tǒng)一解答學生對于專業(yè)的疑問,確定專業(yè)分流名單。教務管理人員使用本系統(tǒng)發(fā)布專業(yè)分流結果的通知,設置專業(yè)分流的起止時間,下載專業(yè)分流的結果。
本系統(tǒng)采用的是B/S 三層架構模式。通常意義上的三層架構就是將整個業(yè)務應用劃分為表現(xiàn)層(UI)、業(yè)務邏輯層(BLL)、數(shù)據(jù)訪問層(DAL)。區(qū)分層次的目的是為了體現(xiàn)“高內聚,低耦合”的思想[5]。
1.表現(xiàn)層
表現(xiàn)層位于三層架構的最上層,與用戶直接接觸,主要是B/S信息系統(tǒng)中的Web瀏覽頁面。
2.業(yè)務邏輯層
業(yè)務邏輯層位于表現(xiàn)層與數(shù)據(jù)訪問層的中間位置,主要功能是對具體問題進行邏輯判斷并執(zhí)行操作。當業(yè)務邏輯層接收到表現(xiàn)層的用戶指令后,會連接數(shù)據(jù)訪問層,實現(xiàn)3層之間的數(shù)據(jù)連接和指令傳達。
3.數(shù)據(jù)訪問層
數(shù)據(jù)訪問層是數(shù)據(jù)庫的主要操作系統(tǒng),具有數(shù)據(jù)的增加、刪除、修改、查詢等操作功能,并將結果反饋到業(yè)務邏輯層。
學生、教師、教務管理人員可以通過標準瀏覽器軟件對系統(tǒng)進行訪問操作,所有的操作通過業(yè)務邏輯層的應用服務管理進行,只有當涉及到數(shù)據(jù)存儲的時候才與數(shù)據(jù)庫服務器發(fā)生聯(lián)系。
本系統(tǒng)主要采用Java web的MVC框架實現(xiàn)的,MVC框架最大的優(yōu)點是將模型(Model)、視圖(View)和控制(Controller)層分離,模塊化的軟件開發(fā)形式使得系統(tǒng)的開發(fā)維護變得更為容易。本系統(tǒng)數(shù)據(jù)庫使用開源的數(shù)據(jù)庫管理系統(tǒng)MYSQL,通過Navicat圖形界面管理工具進行數(shù)據(jù)庫的搭建。B/S三層架構與MVC框架的關系見圖3。
筆者通過對信息學院大類分流工作的分析,對本系統(tǒng)應具備的功能進行了設計。基于協(xié)同過濾算法的大類專業(yè)分流實時動態(tài)系統(tǒng)功能結構見圖4。
圖3 大類專業(yè)分流實時動態(tài)系統(tǒng)的B/S 三層架構與MVC框架的關系
圖4 基于協(xié)同過濾算法的大類專業(yè)分流實時動態(tài)系統(tǒng)的功能結構
學生模塊包括學生登錄、填寫志愿、修改志愿、查看專業(yè)分流結果、下載志愿去向表、智能專業(yè)推薦等功能。其中智能專業(yè)推薦功能是指學生在填報志愿前,要先回答系統(tǒng)提供的40道有關專業(yè)分流的題目,系統(tǒng)根據(jù)學生的答題結果推薦相應的專業(yè)。填寫志愿功能是指學生在特定的時間內,按照自己的意愿填報意向志愿。查看專業(yè)分流結果功能是指填報志愿結束后,學生在系統(tǒng)里可以查看自己當前的專業(yè)排名,也可以查看在全校的排名,從而了解自己的專業(yè)分流結果。
教師模塊包括教師登錄和上傳資料功能,其中上傳資料功能可幫助學生在填報志愿前更好地了解該專業(yè),同時教師還可以將專業(yè)的宣傳資料、視頻等上傳到系統(tǒng)。
教務管理人員模塊包括設置專業(yè)分流時間、教務人員登錄、發(fā)布有關專業(yè)分流的通知、下載專業(yè)分流結果等功能。其中,設置專業(yè)分流時間包括設置專業(yè)分流的起始時間和分流時長;發(fā)布有關專業(yè)分流的通知,包括發(fā)布專業(yè)分流時間通知和分流結果通知等;下載分流結果主要是指在專業(yè)分流工作結束后下載專業(yè)分流結果,作為備份資料。
數(shù)據(jù)庫結構設計的好壞將會對系統(tǒng)的應用效率、功能的擴展與完善以及實現(xiàn)的效果產(chǎn)生直接影響,合理的數(shù)據(jù)庫結構設計可以提高存儲的效率,保證數(shù)據(jù)的完整和一致[6]。本系統(tǒng)的數(shù)據(jù)庫主要由用戶實體、學生實體、教師實體和專業(yè)實體組成。基于協(xié)同過濾算法的大類專業(yè)分流實時動態(tài)系統(tǒng)數(shù)據(jù)庫結構設計見圖5。
圖5 基于協(xié)同過濾算法的大類專業(yè)分流實時動態(tài)系統(tǒng)數(shù)據(jù)庫的結構
1.用戶實體
存儲登錄需要的基本信息,包括用戶名、密碼、用戶類型3個屬性,其中用戶類型決定了用戶登錄成功后進入各自所屬的頁面。
2.學生實體
記錄學生的詳細信息,包括姓名、學號、性別、成績、聯(lián)系方式等屬性,其中學生的成績決定了學生填報志愿的順序。
3.教師實體
記錄教師的詳細信息,包括姓名、教工號、性別、聯(lián)系方式等屬性。
4.專業(yè)實體
記錄專業(yè)的詳細信息,包括專業(yè)號、專業(yè)名稱、專業(yè)介紹等屬性。
學生登錄頁面進入系統(tǒng)后轉向學生主頁,學生主頁會顯示學生的基本信息,學生可以在這里完善修改自己的基本信息。學生用戶在進行志愿填報前應進行智能推薦專業(yè)測試,學生可以參考測試結果進行志愿填報;之后,學生要在規(guī)定的時段內填報志愿并提交,如果需要修改,應在填報志愿規(guī)定的時間內進行;最后專業(yè)分流結束后,學生可以下載最終志愿表,其具體實現(xiàn)過程如下。
1.學生登錄
學生用戶在前端頁面輸入用戶名和密碼,點擊提交后會通過form表單傳到服務連接器(servlet),之后根據(jù)獲得的用戶名和密碼,借助面向對象的數(shù)據(jù)庫接口(data access object)從數(shù)據(jù)庫中查詢用戶名和密碼是否合法,若合法則將學生的基本信息存入會話控制(session)中,會話控制(session)再將學生的基本信息傳到學生的主頁面。
2.智能專業(yè)推薦
學生在進行專業(yè)選擇時存在自我定位不明確的現(xiàn)象,此功能采用基于用戶相似度的協(xié)同過濾算法來實現(xiàn)學生用戶的專業(yè)推薦[7],從專業(yè)的角度為學生提供參考意見。學生首先進入智能專業(yè)推薦的答題頁面進行答題,之后將答題結果提交到后臺。系統(tǒng)依據(jù)皮爾森相關系數(shù)公式進行相似度的計算,匹配得出相似度最高的專業(yè),供學生參考。
3.填報志愿
學生在學校規(guī)定的時間段內進行志愿的填報,志愿填報采用滑動框排序的形式,這種填報形式可以避免學生漏填志愿。
專業(yè)排序的結果以列表的形式傳到服務連接器(servlet),并通過面向對象的數(shù)據(jù)庫接口(data access object)存入數(shù)據(jù)庫。同時后端將最新的專業(yè)排名存入會話控制(session),并在專業(yè)排名頁面顯示。
1.上傳資料
教師模塊的一個主要功能為上傳資料。教師前端頁面提供文件框,教師可在本地文件夾選擇需要上傳的文件,通過form表單提交到服務連接器(servlet),在服務器中的file文件夾下新建文件,服務連接器(servlet)通過文件流的形式將本地的文件復制到服務器新建的文件中。
2.確定專業(yè)分流面試名單
教師管理模塊的另一主要功能為確定專業(yè)分流的學生名單。由于學生在進行志愿填報時可能出現(xiàn)選擇某個專業(yè)的人數(shù)多于預計的人數(shù),此時就需要對學生進行面試,教師可以通過本系統(tǒng)勾選出需要面試的學生。
教務管理人員模塊最主要的功能是設置專業(yè)分流的時間。教務管理人員點擊設置專業(yè)分流時間框后,系統(tǒng)通過前端JS(Java Script)技術展示時間表供教務管理人員用戶選擇,設置專業(yè)分流時間間隔單位為分鐘,默認是60分鐘。專業(yè)分流結束后點擊“提交”按鈕,后臺會將這兩個時間存入數(shù)據(jù)庫,此時通過Java計時器進行計時,保證學生用戶在專業(yè)分流時間開始后才能進行志愿填報。
基于協(xié)同過濾算法的大類專業(yè)分流實時動態(tài)系統(tǒng)實現(xiàn)了學生、教師和教務管理人員3類用戶所需要的志愿填報、下載專業(yè)分流結果、設置專業(yè)分流時間等基礎功能,并在此基礎上實現(xiàn)了基于協(xié)同過濾算法的智能專業(yè)推薦功能,同時還能為學生提供各種專業(yè)參考信息,幫助學生選擇更適合的專業(yè)。
目前基于協(xié)同過濾算法的大類專業(yè)分流實時動態(tài)系統(tǒng)已在信息學院部分學生中進行了試用,系統(tǒng)功能的完整性和穩(wěn)定性都經(jīng)受住了考驗,并得到了良好的反饋和評價。試用結果顯示,使用本系統(tǒng)進行專業(yè)分流,可在一天之內結束專業(yè)分流工作,與利用人工進行專業(yè)分流的方式相比,大大提高了專業(yè)分流的質量和效率。據(jù)試用此系統(tǒng)的學生反映,本系統(tǒng)的界面簡潔,交互性好,有良好的體驗度,所以本系統(tǒng)也具有良好的推廣性,可建議其他專業(yè)進行試用。
資助項目:北京林業(yè)大學2018年度大學生創(chuàng)新創(chuàng)業(yè)項目“基于協(xié)同過濾的大類專業(yè)分流實時動態(tài)系統(tǒng)的研建”,項目編號S201810022089。