王家輝, 文欣秀, 趙 敏, 范貴生, 唐佳誠, 張嘉寅
(華東理工大學 a.信息科學與工程學院;b.理學院,上海 200237)
隨著智能手機和4G網絡的普及,海量教學資源觸手可及,各類輔助教學工具也得到了廣泛的發展。手機智能做題軟件(例如猿題庫,扇貝單詞,粉筆公考等),發揮移動端的優勢,打破時間空間的束縛,幫助用戶利用一切碎片化的時間進行學習,因此受到了用戶的廣泛青睞。大數據已經成為當下的一個研究熱點,各類輔助教學軟件也正朝著智能化方向不斷前行,例如利用推薦算法對每個用戶進行個性化推薦,致力于幫助學生尋找到學習的最佳路徑等。
目前推薦算法已廣泛應用于電商行業、視頻網站等,作為推薦算法的鼻祖亞馬遜,其35%的收入來源于推薦,Netflix宣稱60%的用戶是通過其推薦系統找到自己感興趣的電影和視頻的[1]。在電商、電影等領域,主要利用用戶在網站中的行為數據,根據用戶或者物品相似度,給特定用戶推薦對應的商品,吸引用戶點擊并發生點擊行為;在教育領域中,雖然用戶的答題數據背后依然隱含著題目之間的關聯信息,但是追溯根源還是歸因于學生沒有掌握相應的知識點,因此需要構建出題目與知識點之間的強關聯關系。
尤其是對于《C程序設計》這類需要深入理解的課程,單純地利用行為數據和協同過濾算法來推薦相似的題目和相似用戶做錯的題目效果一般,因為做錯題目還是由于相應的知識點沒有掌握,在這種情況下做再多相似的題目也是徒勞的[2,3]。因此本文將在協同過濾思想的基礎上融合Google在2012年提出的知識圖譜的概念[4],將用戶-題目-知識點作為圖的節點,用戶和題目之間的相似度作為邊的權重,將知識與用戶行為結合起來進行個性化推薦。
隨著互聯網的興起,海量的教學資源觸手可及,借鑒在電商行業中對于商品資源的推薦,在教學領域也興起了大量關于教學資源推薦的研究,幫助用戶快速的從海量資源中找到與自己相關的內容,提升學習的效率。
協同過濾算法的思想是通過用戶的行為數據來計算出用戶、物品之間的相似度,然后推薦相似用戶所感興趣的內容,目前已廣泛應用于各類教學資源的推薦,并且取得了較好的效果。例如文獻[5-6]中利用協同過濾算法對于課程進行了推薦,文獻[7-8]中對于學習資源進行了推薦。協同過濾算法在資源推薦領域受到了廣泛的應用,并且取得了較好的效果。雖然教學資源的推薦非常重要,在信息化教學系統中對于習題的推薦同樣非常重要,可以幫助學生快速地掌握所學的知識。然而習題的推薦與資源推薦存在著一定的差異,用戶做錯題的本質是因為知識的欠缺,如果不停地推薦相似用戶的錯題并未從根源上解決問題,目前對于這方面的研究目前較少。
吳云峰等[9]把電子商務中的用戶對商品的評分方式加以修改應用到中學教學中學生對習題的評分,并利用協同過濾算法進行習題推薦。徐琳等[10]設計了一個基于Prim改進用戶聚類的推薦算法。郭紅霞[11]利用Apriori算法針對學生錯題挖掘出學生薄弱知識點的關聯關系, 并利用K-Means算法將推薦試題與原錯誤試題進行聚類,結合學生自身對錯題的評分,預測學生對推薦試題的評分進行推薦。
目前對于習題的推薦也主要還是利用用戶行為數據來隱式地反映出題目的內在關聯進而進行推薦,隨著Google知識圖譜概念的提出,知識圖譜越來越多的被用于知識表示,基于圖的搜索與推薦也逐漸興起[12-13]。文獻[14-15]中分別利用知識圖譜進行了標簽和學習資源的推薦。陸星兒等[16]通過分析所構建的教學知識圖譜,幫助教師反思教學設計與學生認知過程中產生的問題。刷題系統與傳統的資源推薦不同,所關注的并不是用戶是否對所推薦的內容感興趣,誘導用戶產生點擊行為,提高轉換率,而是如何幫助提升復習的效率。除了行為數據外,知識同樣占據著重要的地位,因此本文融合知識圖譜和協同過濾算法,構建了一套智能刷題系統,旨在幫助用戶尋找到復習的捷徑。
智能刷題系統中,用戶U、題目Q、知識點K之間形成了一個三元關系,其中:用戶集用U={u1,u2…um}表示;題目集用Q={q1,q2,…,qn}表示;知識點集用K={k1,k2,…,ko}表示。
(1) 題目-知識點M(Q,K):權重表示知識點對于該題目的重要程度,分別用0.1,0.3,0.5, 0.7,0.9表示。
(2) 用戶-題目M(U,Q):權重表示用戶對題目的掌握程度,M(U,Q)=∑αq1+βq2(其中q1、q2分別表示用戶答對、答錯該題的次數,α,β為權重系數。
(3) 用戶-知識點M(U,K):權重表示用戶對知識點的掌握程度,M(U,K)=∑αq1+βq2(其中q1,q2表示用戶答對、答錯該知識點的次數,α,β為權重系數。


其中:①手工標定了題目-知識點之間的聯系,②、③根據用戶的做題記錄定義了用戶對于題目和知識點的掌握程度,④、⑤參考協同過濾的思想,計算出了題目和用戶之間的相似度,并且通過閾值設定的方法來計算出用戶之間的相似度。
圖1所示通過Echarts可視化地呈現了知識圖譜中的子圖-題目與知識點之間的關系,包括了題目-知識點,題目-題目之間的關系。

圖1 題目-知識點知識圖譜
針對每個獨立的用戶在Redis中創建一個題目隊列,當用戶做錯一道題目的時候,去知識圖譜中查詢與該題目所相關的知識點和關聯題,并加入該用戶的刷題隊列中,來進行推薦。
例子:用戶做錯了題目7004,
5(int)((double)9/2)-9%2 A.0 B.3 C.4 D.5
步驟1查詢相關概念知識點。利用cypher語句去知識圖譜中查詢該題目所涉及的知識點,即match p=(question)-[r]-(knowledgePoint) where question.name = “7004,5” and r.name = “qk_1” return p。結果將返回該題目所涉及的概念知識點(求余運算和強制轉換)
C語言的基本運算符有加、減、乘(*)、除(/)、求余__________
類型的強制轉換表示形式:__________ (表達式)
步驟2查詢相關基礎題知識點
由于知識點過于抽象,因此又針對概念設置了基礎題知識點,查詢結果如下:
9%2的值是
取一定量的粉煤灰提取氧化鋁后的白泥,水洗3~5次用于去除其吸附的氯離子,于120 ℃烘箱中烘干。準確稱量60 g白泥固體加入三頸燒瓶中,加入4.0 mol/L的NaOH溶液240 mL,采用加熱套加熱,溫度為80 ℃,磁力攪拌時間為2.5 h,過濾后獲得濾液通過ICP測定成分。
(double)9/2的值是
(int)(4.5)
步驟3查詢相似題。在知識圖譜中定義了題目與題目之間的關系M(I_1,I_2),該關系表示兩道題目同時做錯的概率達到了某個特定的閾值。利用語句match p=(q1)-[r]-(q2) where q1.name=“7004,5” return q2即可獲取相似題的數據,結果如下:
表達式3.6-5/2+1.2+5%2的值是
A 4.3 B 4.8 C 3.3 D 3.8
若有以下程序段
double x=5.168 94;
(int)(x*1 000+0.5)/(double)1 000);
則程序段的輸出結果是
A 5.170 000 B 5.175 000 C 5.169 000
D 5.168 000
步驟4推薦過程。在Redis中針對每個用戶設置了一個刷題隊列,將上述所有的關聯題目lpush進隊列(見圖2)。并且從隊列中rpop出一道題目作為下一道推薦的題目。

圖2 推薦過程示意圖
利用知識圖譜中存儲的用戶-用戶的M(U1,U2)關系,從圖譜中尋找出與當前用戶所相似的用戶集合U={u1,u2,…,un},同時利用M(U,Q)關系,遍歷用戶集合查詢出每個用戶ui未掌握的題目集合Qi并且將該題目加入用戶隊列中。
知識圖譜中M(U,K)關系存儲了用戶對于知識點的掌握程度,造成用戶做錯題的主要原因還是因為知識點沒有掌握,因此根據該用戶未掌握的知識點可以反向推薦出所涉及該知識點的題目。
上述3種方法分別從用戶-題目(基于知識),用戶-用戶(基于用戶),用戶-知識點(基于物品屬性)3個角度對于每個用戶進行了個性化推薦。由于用戶的刷題數據是實時更新的,后兩種方式中所依托的M(U1,U2)以及M(U,K)計算復雜度較高,無法做到實時的推薦,因此最終選擇以基于知識的推薦為主要推薦方式,并且每天定時對圖譜進行更新并將后兩種方法的計算結果加入隊列進行推薦。
利用第2節中所構建的知識圖譜和第3節中提到的基于知識圖譜的推薦方案,在我校進行了小規模的測試來對模型進行驗證,通過分析用戶使用情況、考試成績等數據論證了該模型的有效性。
表1統計了我校2016、2017兩年《C程序設計》課程的刷題情況,在2017年我們邀請了2位教師所任教的5個班級參與智能模式的測試。從表1數據可以看出,隨著系統的不斷測試與完善,微信刷題受到了全校師生的廣泛認可,在1年時間內,刷題總數從5.6萬題提升到12.1萬題,總計提升了2.16倍。此外基于知識圖譜的推薦方式較之傳統的順序、隨機等模式,用戶忠誠度更高,使用智能模式比傳統模式的人均刷題數提升了41道。

表1 用戶總體使用情況統計
進一步分析每位學生的刷題數目,圖3所示為刷題數目與占比的關系圖,普通模式下刷題數目在30題以下占比約為40%而在智能模式下約為15%,當刷題數超過60題時,智能模式明顯高于普通模式,說明智能刷題的用戶忠誠度更加高,也從側面體現出該學生對該模式的認可。

圖3 刷題數目分布情況
表2為我校某位老師《C程序設計》課程的成績分布數據,總計186名學生使用了刷題系統,其中35名學生使用了智能刷題模式。從表中數據可以看出使用智能刷題的同學均分高了3.97分,此外統計每個分數段學生占比情況可見智能模式占比遠高于普通模式,說明使用智能刷題模式對成績提高有一定的幫助。
進一步分析刷題數目與成績的關系,如圖4所示,可以看出刷題數目與成績大致呈正比關系,并且除60分以下外,相同分數段智能刷題的刷題數目低于整體的刷題平均數和普通模式平均數,說明該方法復習的效果更加好。

表2 成績分布情況

圖4 刷題數與成績關系圖
為了幫助每個學生更好地了解自身的情況,系統提供了各類分析報表如圖5所示,包括每個章節的刷題數目,掌握情況以及所有未掌握的知識點,另外支持個人錯題集的導出,幫助學生提高復習效率。


本文討論了教學領域中對題目的推薦與傳統電商等領域對于資源推薦的差異。闡述了在信息化教學系統中單純地利用行為數據存在一定的問題,應當融合進題目與知識點的強關聯規則。利用知識圖譜構建出用戶、題目、知識點三者之間的關系,通過計算用戶、題目之間的相似度來設定的圖權重。融合了傳統的基于用戶行為和基于知識的推薦方法,搭建了一套微信智能刷題系統。通過對我校近2年刷題數據的分析,發現該方法受到了學生的廣泛信賴,人均刷題數提升了41道,此外智能模式較傳統模式平均分高了3.97分,80分以上所占比也有了顯著提升。通過一系列實驗論證了該方法的有效性,可以更好地幫助學生提升復習效率。下一步將結合算法實現知識點的自動標注,使得系統更加智能化。