姚亦飛,于繁華,逯啟榮
(長春師范大學計算機科學與技術學院,吉林長春 130032)
信息技術的高速發展推動了新型教育模式的出現,在線學習形式既豐富了學習內容,也拓展了教育的時空范圍,同時對學習者的自主學習能力提出了挑戰。個性化學習能夠根據學習者特征自適應地構建滿足需求的學習資源列表,是科學技術與教育教學深度融合的典范,也是教學研究的新趨勢[1]。
近年來,推薦系統在深度學習技術進步下取得了突破性的進展,實現了海量多源異構數據的整合,構建了貼合用戶偏好的用戶模型,提高了用戶滿意度[2]。個性化學習資源推送和個性化學習路徑推薦是推薦系統在教育領域的重要應用,其中,學習者的靜態特征和動態行為是個性化學習需求分析的基石[3]。同時,基于興趣偏好的個性化推薦列表被廣泛應用于教育教學、電子商務、信息檢索、社交網絡等諸多領域[4]。蔡宏果團隊針對中小學教師繼續教育設計并實現了基于個性化推薦學習的網絡教學培訓平臺,通過捕捉和識別學習行為,利用數據挖掘技術推薦個性化的學習資源[5]。東北師范大學的張琢教授帶領學生設計了動態學習者模型,并基于此模型設計了個性化學習途徑,提出了個性化推薦方案[6]。華南師范大學的吳正洋博士以建構主義學習理論為基礎,綜合分析學習者的基本屬性、學習風格、學習環境,結合本體論技術和過濾推薦算法,提出了基于社交網絡環境的學習推薦系統架構[7]。而謝振平博士基于建構主義學習理論提出了建構推薦模型,通過引入最近鄰優先候選知識關聯挖掘用戶的知識需求,從而給出最具建構學習價值的新知識資源推薦[8]。基于排序學習推薦算法[9]將學習排序融入推薦算法中,通過整合用戶特征構建貼合用戶偏好需求的模型,以提高推薦算法的性能和用戶滿意度。基于信任擴展和列表級排序學習的服務推薦方法則采用信任擴展模型來解決用戶信任關系的稀疏性問題,基于用戶相似度和可信鄰居集合構建,通過列表級排序學習方法訓練出最優排序模型形成推薦列表[10]。
本文以高校云平臺課程教學體系環境為基礎,以提高學生課程學習成功率與學習效率為目的,利用知識點關聯矩陣和優先級排序提出基于考核目標的學習推薦算法。同時,以具體課程為例闡明學習序列構建過程,并探討和分析了算法實現所需的關鍵數據結構和數據可視化等問題。
基于考核目標的學習推薦算法分為預備階段與學習序列生成階段,預備階段為序列生成階段算法的執行提供數據索引和支撐,序列生成階段基于擇定策略動態生成學習序列,并可以根據學習者的偏好設置進行調整,其默認策略以考核目標權重為排序依據。
基于考核目標的學習推薦算法預備階段為學習序列生成算法提供數據支撐,既可以采用全人工的方式,由命題教師進行設計與指定,也可以采用從考試系統數據庫關系圖中直接導出的方式。數據內容如圖1所示,包括兩個方面:一方面反映考核科目下的章節內容及各章節知識點安排,另一方面涵蓋考題題目與知識點的對應關系。
學習序列生成算法分為四個步驟,依據預備階段的知識點關聯信息遞歸生成學習序列,并可依據擇定策略進行個性化調整。
Step1 構建題目—知識點相關矩陣M,并對題目和知識點的相關度權重進行統計,如表1所示。其中行表示為題目S={s1,s2,…,st},擇定策略下的考核題目數量為t;列表示為知識點K={k1,1,…,k1,m1,k2,1,…,k2,m2,…,kn,1,…,kn,mn},第i章共有ki,mi個知識點。
Step2 生成學習序列樹:
Step2-1 按照擇定學習策略選擇樹根知識點kroot;


Step3 遍歷序列樹生成初始學習序列Q′。
Step4 查找題目—知識點相關矩陣M,將未出現在序列Q′中的知識點按照權重排序依次添加至序列Q′尾端,生成最終的學習序列Q。
3)通過收集現場相關故障信息及波紋表明,110kV那曲變#1、#2兩臺主變并列運行,且#1主變中性點接地運行情況下,故障當時那曲#1主變高壓側基本無3I。故障零序電流流過,那安線上流過的故障零序電流基本與當那線上流過的故障零序電流持平。
學習序列生成算法中Step2-2的學習策略包括頻次優先、分值優先、類型題優先等,可由學習者自行定制,默認策略為頻次優先,即在考核中出現次數較多的應該被優先考慮。Step2-5的序列樹遍歷可以采用深度優先或者廣度優先,深度優先代表學習者期望優先完成具有較高相關度的知識點群,廣度優先代表學習者期望優先完成較為重要的知識點學習。

表1 題目—知識點相關矩陣
以“C語言程序設計”課程為例,按照默認學習策略展示學習序列構建過程,分析算法實現涉及的主要數據結構,并探討其應用與改進。
預備階段知識點由任課教師根據考題知識點分布和題庫信息綜合設計而成,如圖2所示。

表2 “C語言程序設計”題目—知識點相關矩陣

圖2 “C語言程序設計”知識點示意圖
算法Step1 構建題目—知識點相關矩陣如表2所示,其中省略了不在考卷中出現的各知識點。行號A1到A10是填空題,B1至B4是讀程序寫結果題,C1至C3為編程題。列號知識點編號為兩位,第一位代表章節編號,第二位代表本章節內的知識點編號。
算法Step2 根據默認的頻次優先策略選定知識點26(頻次8,表示考卷中有8個題目與之相關)為根節點kroot;生成題目列表{A8,B1,B2,B3,B4,C1,C2,C3},并得到相關知識點集合{(35,62,63,76),(32,35),(31,41),(31,41,43,51),(43,53,55,56)},此處因編程題屬于綜合能力考查題,其相關知識點較多,故此處未計C1至C3的相關知識點。

圖3 “C語言程序設計”知識點序列樹構建過程圖
算法Step3 按照廣度優先遍歷得到初始學習序列{26,35,32,43,31,51,62,63,41,56,76,53,55,27,22,81,82,83,33}。
算法Step4 將未出現的知識點按照頻次從高到低添加至序列,生成最終學習序列{26,35,32,43,31,51,62,63,41,56,76,53,55,27,22,81,82,83,33,21,46,24,28,11,71,45,23,61}。
圖4為采用不同學習策略時生成的學習推薦序列樹,圖中虛線順序所示為最終學習序列。圖4(a)采用分值優先策略,按照各類型題單題分數進行加權后進行排序;圖4(b)采用類型題優先策略,按照填空題優先、讀程序寫結果次之、編程題最后的順序對知識點加權后完成排序。

圖4 學習推薦序列樹舉例
學習序列生成算法涉及的主要數據結構如表3所示。其中,圖的存儲采用二維數組或稀疏矩陣,使用二維數組時查找效率高但存儲代價較大,適合于題目和知識點個數較少的情況。樹的存儲采用鏈表或索引表,由于中間結點的孩子數不定,且不存在反向查找需求,因此更適合使用單向鏈表。順序表可以簡單地由一維數組進行存儲,每生成一層新的樹結點,按照權重排序后填入順序表,并用指針標識隊列的頭和尾。

表3 算法涉及的主要數據結構
基于考核目標的學習推薦算法應用范圍廣泛,既可以用于單一科目階段性考試的考前復習與指導,也可用于綜合型考試的自我測試,只需要給定題目與知識點的關聯圖譜,即可按照學習者擇定策略給出推薦的學習序列。
在特定情況下,學習者若希望重點復習某個類型題或某幾個知識點,可以通過選項設置來個性化地定制自己的學習序列,算法通過更新權值與重新排序構建符合學習者期望的定制序列。同時,學習者可以通過圖5可視化界面更加直觀地了解自己的學習進度及預期學習內容的完成情況。

圖5 可視化界面示例
在線課堂的應用與發展促進了精準教學的實現與推廣,個性化定制學習使學習者獲得了更好的學習體驗和學習效果。本文以提高學習者學習成功率為目的,基于考核目標和學習策略設計了學習推薦算法,根據設定的考題與知識點之間的關聯信息生成序列樹,進而按選定策略的權重排序生成學習序列供學習者使用。該算法能夠靈活地根據學習者擇定策略進行更新和調整,有助于學習者更好地掌握自身學習狀態并提高課程考核成績。