曹夢(mèng)川 歐陽儀 伍丹 杜朋軒
摘? 要:隨著在線教育的不斷發(fā)展,微課作為一種便捷高效的學(xué)習(xí)方式越來越受到廣大學(xué)生的喜愛。為了進(jìn)一步提高學(xué)生利用微課學(xué)習(xí)的效果,文章提出了一種基于圖結(jié)構(gòu)的微課推薦系統(tǒng)。該系統(tǒng)通過構(gòu)建知識(shí)點(diǎn)圖和利用廣度優(yōu)先算法推薦合適的微課視頻給學(xué)生,從而提升學(xué)生的學(xué)習(xí)效果。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)相比于隨機(jī)推薦和基于內(nèi)容的推薦方法,具有更高的召回率和更好的推薦效果,具有一定的實(shí)用價(jià)值和推廣意義。
關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu);圖結(jié)構(gòu);廣度優(yōu)先算法;微課推薦
中圖分類號(hào):TP311? 文獻(xiàn)標(biāo)識(shí)碼:A? 文章編號(hào):2096-4706(2023)20-0140-04
Research on Intelligent Push Method of Micro-course Based on Artificial Intelligence
CAO Mengchuan, OUYANG Yi, WU Dan, DU Pengxuan
(Ningxia Polytechnic, Yinchuan? 750021, China)
Abstract: With the continuous development of online education, micro-course has become a popular learning method among students. In order to further improve the learning effectiveness of students using micro-course, this paper proposes a graph-based micro-course recommendation system. The system recommends suitable micro-course videos to students by constructing knowledge point graphs and using the Breadth-First Search algorithm, thereby improving the learning effectiveness of students. The experimental results show that compared with random recommendation and content-based recommendation methods, the system has higher recall rate and better recommendation effectiveness, and it has certain practical value and promotion significance.
Keywords: data structure; graph structure; Breadth-First Search; micro-course recommendation
0? 引? 言
微課視頻是當(dāng)今一種非常流行的教學(xué)、自學(xué)方式,對(duì)于學(xué)校來說,也是一種需要去重視的學(xué)習(xí)資源,它可以為學(xué)生提供豐富的學(xué)習(xí)內(nèi)容和多樣的學(xué)習(xí)方式。然而因?yàn)槊块T課成所涉及的知識(shí)點(diǎn)繁多、關(guān)聯(lián)的教學(xué)視頻數(shù)量龐大,對(duì)于學(xué)生來說很難在眾多的視頻中找到適合自己學(xué)習(xí)進(jìn)度的學(xué)習(xí)資源,因此需要一種高效的教育教學(xué)視頻推薦方式來為學(xué)習(xí)者提供個(gè)性化的學(xué)習(xí)服務(wù)。
目前,已有很多學(xué)校和企業(yè)對(duì)微課視頻推薦系統(tǒng)進(jìn)行了研究和開發(fā),其中大多數(shù)系統(tǒng)都是以協(xié)同算法為主,根據(jù)學(xué)生歷史記錄推薦相似視頻,或按照一定的學(xué)習(xí)順序推薦。這些方法在使用的過程中有一定的局限性,如推薦精度低、推薦內(nèi)容不符合等問題。因?yàn)槊恳患⒄n的內(nèi)容針對(duì)是一個(gè)知識(shí)點(diǎn),非常利于構(gòu)建圖結(jié)構(gòu),因此,通過基于圖結(jié)構(gòu)的微課推薦功能能很好地解決上述的問題。
1? 圖結(jié)構(gòu)概述
圖結(jié)構(gòu)是一種由節(jié)點(diǎn)和邊構(gòu)成的數(shù)據(jù)結(jié)構(gòu),節(jié)點(diǎn)表示一個(gè)實(shí)體、對(duì)象或者事件。邊則表示節(jié)點(diǎn)之間的關(guān)系或者連接。通常表示為G(V,E),其中G表示一個(gè)圖,V表示節(jié)點(diǎn)的集合,E表示圖中邊的集合。節(jié)點(diǎn)又稱為頂點(diǎn)(vertex),是圖中的基本單元,通常用圓形或者方形表示,每一個(gè)節(jié)點(diǎn)可以有一個(gè)或者多個(gè)屬性邊,又稱為連接(edge),是節(jié)點(diǎn)之間的連線,用來表示兩個(gè)節(jié)點(diǎn)之間的關(guān)系。
本次研究將采用鄰接表(Adjacency List)的方式實(shí)現(xiàn),鄰接表采用的是數(shù)據(jù)和鏈表的方式存儲(chǔ)。每一個(gè)節(jié)點(diǎn)由一條鏈表,所以共有| V |條鏈表的數(shù)組構(gòu)成。對(duì)于每一個(gè)節(jié)點(diǎn)u ∈ V,鏈表代表圖的邊。圖結(jié)構(gòu)又分為有向圖和無向圖,因考慮到知識(shí)點(diǎn)是具有有向性的,所以本次研究采用有向圖的方式實(shí)現(xiàn)。
2? 系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)
2.1? 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)
本系統(tǒng)主要包括兩個(gè)部分,構(gòu)建知識(shí)點(diǎn)圖和推薦算法,如圖1所示。首先,教師需要將課程涉及的所有知識(shí)點(diǎn)及關(guān)聯(lián)關(guān)系導(dǎo)入微課推薦系統(tǒng)中,生成知識(shí)點(diǎn)圖并存儲(chǔ)在數(shù)據(jù)庫中;當(dāng)學(xué)生觀看微課后,前端將其標(biāo)簽發(fā)送到服務(wù)器端。服務(wù)器端接收到知識(shí)點(diǎn)標(biāo)簽后,通過使用廣度優(yōu)先算法查詢?cè)撝R(shí)點(diǎn)標(biāo)簽在知識(shí)點(diǎn)圖中的位置,并將該知識(shí)點(diǎn)所關(guān)聯(lián)的其他知識(shí)點(diǎn)對(duì)應(yīng)的課程視頻信息推薦給學(xué)生,從而實(shí)現(xiàn)微課的推薦。
2.2? 知識(shí)點(diǎn)圖的構(gòu)建
本次研究的是一種基于用戶行為和視頻內(nèi)容之間的關(guān)系建立的結(jié)構(gòu)模型,構(gòu)建的核心思想是將對(duì)應(yīng)課程的所有知識(shí)點(diǎn)構(gòu)建成圖結(jié)構(gòu),以知識(shí)點(diǎn)為節(jié)點(diǎn),節(jié)點(diǎn)之間為關(guān)聯(lián)關(guān)系,將這樣的關(guān)系定義為邊,從而實(shí)現(xiàn)知識(shí)點(diǎn)圖的構(gòu)建。它利用圖結(jié)構(gòu)的屬性和知識(shí)點(diǎn)之間的關(guān)系來進(jìn)行視頻推薦,然后通過圖算法計(jì)算節(jié)點(diǎn)之間的關(guān)系,更好的推薦學(xué)生需要的微課視頻。
這里以“數(shù)據(jù)結(jié)構(gòu)”課程為例構(gòu)建有向的知識(shí)點(diǎn)圖,如圖2所示。在這個(gè)示意圖中,每個(gè)長(zhǎng)方形表示一個(gè)知識(shí)點(diǎn),知識(shí)點(diǎn)之間的箭頭表示它們之間的關(guān)系。例如,Sorting節(jié)點(diǎn)可能會(huì)有一個(gè)箭頭指向Bubble和Merge節(jié)點(diǎn),因?yàn)樗鼈兪桥判蛩惴ǖ囊徊糠?。Stack節(jié)點(diǎn)可能會(huì)有一個(gè)箭頭指向Push節(jié)點(diǎn),因?yàn)镻ush操作是棧數(shù)據(jù)結(jié)構(gòu)的一部分。
實(shí)現(xiàn)代碼如下:
1. # 創(chuàng)建一個(gè)空的圖
2. G = nx.Graph()
3. # 添加節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)代表一個(gè)數(shù)據(jù)結(jié)構(gòu)知識(shí)點(diǎn)
4. G.add_node("Sorting")
5. G.add_node("Stack")
6. G.add_node("Queue")
7. # 添加邊,表示不同知識(shí)點(diǎn)之間的關(guān)系
8. G.add_edge("Sorting", "Bubble", "Marge")
9. G.add_edge("Stack", "Merge" ,"Push")
10. G.add_edge("Queue", "Deqeue")
2.3? 推薦算法的實(shí)現(xiàn)
推薦算法采用廣度優(yōu)先算法,該算法是一種圖形遍歷算法,用于給定的起始節(jié)點(diǎn)開始遍歷一個(gè)圖結(jié)構(gòu)或樹結(jié)構(gòu)。該算法遍歷的順序是按照距離順序,從起始節(jié)點(diǎn)開始,逐層遍歷其鄰居節(jié)點(diǎn),直到遍歷到目標(biāo)節(jié)點(diǎn)或者整張圖形中的所有節(jié)點(diǎn)。當(dāng)遍歷到目標(biāo)節(jié)點(diǎn)時(shí),算法會(huì)立即停止,并返回一條從起始節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)的路徑。如果遍歷完整張圖形后仍未找到目標(biāo)節(jié)點(diǎn),則算法返回null。廣度優(yōu)先算法的時(shí)間復(fù)雜度為O(V + E),其中V是圖形中節(jié)點(diǎn)的數(shù)量,E是邊的數(shù)量。由于需要遍歷整張圖形,因此空間復(fù)雜度為O(V),其中V是節(jié)點(diǎn)的數(shù)量。在實(shí)踐中,由于算法需要使用隊(duì)列,因此空間復(fù)雜度可能會(huì)更高。
使用該推薦算法的優(yōu)點(diǎn)在于能夠很好地利用知識(shí)點(diǎn)之間的依賴關(guān)系進(jìn)行推薦,從而提高推薦的準(zhǔn)確性。同時(shí),該功能也能夠較好地處理冷啟動(dòng)問題,對(duì)于新加入系統(tǒng)的微課視頻,只需要在對(duì)應(yīng)的途中添加節(jié)點(diǎn)位置,即可實(shí)現(xiàn)推薦。
在本次研究中,學(xué)生觀看的微課視頻所攜帶的知識(shí)點(diǎn)標(biāo)簽傳入服務(wù)端后,服務(wù)端從數(shù)據(jù)庫中獲取該知識(shí)點(diǎn)所對(duì)應(yīng)的課程圖譜,并通過廣度優(yōu)先算法查詢?cè)撝R(shí)點(diǎn)在知識(shí)點(diǎn)圖中的位置及關(guān)聯(lián)的所有節(jié)點(diǎn);將這些節(jié)點(diǎn)所對(duì)應(yīng)的視頻信息形成響應(yīng)報(bào)文,返回給前端。實(shí)現(xiàn)流程如圖3所示。
實(shí)現(xiàn)代碼如下:
1. def get_neighbors(graph, node):
2.? ? ?# 創(chuàng)建空隊(duì)列和空集合
3.? ? ?queue = deque()
4.? ? ?visited = set()
5.? ? ?# 將起始節(jié)點(diǎn)添加到隊(duì)列中,并標(biāo)記為visited
6.? ? ?queue.append(node)
7.? ? ?visited.add(node)
8.? ? ?# 遍歷隊(duì)列中的節(jié)點(diǎn),查詢其鄰居節(jié)點(diǎn)
9.? ? ?neighbors = deque()
10.? ? while queue:
11.? ? ? ? ?curr_node = queue.popleft()
12.? ? ? ? ?for neighbor in graph[curr_node]:
13.? ? ? ? ? ? ?if neighbor not in visited:
14.? ? ? ? ? ? ? ? ?queue.append(neighbor)
15.? ? ? ? ? ? ? ? ?visited.add(neighbor)
16.? ? ? ? ? ? ? ? ?neighbors.append(neighbor)
17.? ? ?return neighbors
該函數(shù)接收一個(gè)圖結(jié)構(gòu)的graph和一個(gè)節(jié)點(diǎn)node作為參數(shù),返回一個(gè)包含所有鄰居節(jié)點(diǎn)的隊(duì)列,通過將已經(jīng)生成的知識(shí)點(diǎn)圖和微課視頻所對(duì)應(yīng)的知識(shí)點(diǎn)標(biāo)簽帶入,就可以通過廣度優(yōu)先算法查詢到所有與該知識(shí)點(diǎn)關(guān)聯(lián)的知識(shí)點(diǎn),并將所有關(guān)聯(lián)的知識(shí)點(diǎn)以隊(duì)列的形式返回。系統(tǒng)將列表中知識(shí)點(diǎn)所對(duì)應(yīng)的微課視頻信息以標(biāo)題和URL的形式返回給前端,從而實(shí)現(xiàn)微課的快速推薦。
3? 實(shí)驗(yàn)結(jié)果分析
3.1? 數(shù)據(jù)集介紹
本次實(shí)驗(yàn)的數(shù)據(jù)集來自Khan Academy(KA),KA是一個(gè)在線學(xué)習(xí)平臺(tái),旨在為全球范圍內(nèi)的任何人提供免費(fèi)的教育資源。KA主要提供數(shù)學(xué)、自然科學(xué)、歷史等各種學(xué)科的微課視頻,每個(gè)視頻通常涵蓋一個(gè)知識(shí)點(diǎn)。本次實(shí)驗(yàn)選擇了關(guān)于數(shù)學(xué)學(xué)科的微課視頻,這些視頻一共涵蓋了412個(gè)知識(shí)點(diǎn)。通過調(diào)用KA官方提供的API獲取了它們之間的關(guān)系,并使用知識(shí)點(diǎn)的關(guān)聯(lián)性構(gòu)建一個(gè)有向的知識(shí)點(diǎn)圖結(jié)構(gòu),其中節(jié)點(diǎn)表示對(duì)應(yīng)的知識(shí)點(diǎn),邊表示知識(shí)點(diǎn)之間的相關(guān)性。
3.2? 實(shí)驗(yàn)設(shè)置
本次實(shí)驗(yàn)為了驗(yàn)證系統(tǒng)的有效性,將實(shí)驗(yàn)結(jié)果與隨機(jī)推薦和基于內(nèi)容的推薦進(jìn)行比較。其中,隨機(jī)推薦是指從數(shù)據(jù)集中隨機(jī)選擇微課視頻進(jìn)行推薦,而基于內(nèi)容的推薦是指根據(jù)用戶觀看的微課視頻的標(biāo)簽,推薦與這些標(biāo)簽相關(guān)的微課視頻。在所有實(shí)驗(yàn)中,將數(shù)據(jù)集分成訓(xùn)練集和測(cè)試集,其中訓(xùn)練集占80%,測(cè)試集占20%。
為了評(píng)估算法的性能,將使用召回率(recall)作為評(píng)估指標(biāo)。召回率(recall)是信息檢索和統(tǒng)計(jì)學(xué)中常用的一個(gè)指標(biāo),用于衡量被檢索出來的相關(guān)文檔數(shù)與總相關(guān)文檔數(shù)之間的比例。召回率在機(jī)器學(xué)習(xí)的領(lǐng)域中常用于指預(yù)測(cè)為正的樣本中,真正樣本所占的比例,在本次實(shí)驗(yàn)中假設(shè)對(duì)于用戶u,推薦系統(tǒng)返回的關(guān)于知識(shí)點(diǎn)K的推薦列表為R (K),而該用戶在真實(shí)情況下學(xué)習(xí)過K,記其實(shí)際學(xué)習(xí)的知識(shí)點(diǎn)集合為T (K),那么該推薦系統(tǒng)在知識(shí)點(diǎn)K上的召回率Recall (K)可以用以下公式表示:
其中,| R (K) ∩ T (K) |表示推薦系統(tǒng)推薦的知識(shí)點(diǎn)列表R (K) 與用戶實(shí)際學(xué)習(xí)的知識(shí)點(diǎn)集合T (K)的交集大小,而| T (K) |則表示用戶實(shí)際學(xué)習(xí)的知識(shí)點(diǎn)集合T (K)的大小,即該知識(shí)點(diǎn)的總體覆蓋度。如果該召回率越大,說明該推薦系統(tǒng)對(duì)該用戶的知識(shí)點(diǎn)需求的覆蓋率越高,推薦效果越好。
3.3? 實(shí)驗(yàn)結(jié)果
在實(shí)驗(yàn)中使用了不同數(shù)量的已觀看微課視頻的用戶進(jìn)行測(cè)試,每個(gè)用戶觀看的微課視頻數(shù)量不同。表1是在不同用戶數(shù)量和觀看微課視頻數(shù)量下,三種推薦算法的召回率進(jìn)行了比較。
從表1可以看出,基于圖結(jié)構(gòu)的微課推薦算法相對(duì)于隨機(jī)推薦和基于內(nèi)容的推薦算法,具有更高的召回率。并且廣度優(yōu)先算法時(shí)間復(fù)雜度在最壞情況下,即需要遍歷整個(gè)圖才能找到目標(biāo)節(jié)點(diǎn)的情況下,時(shí)間復(fù)雜度為O(| V | + | E |),在實(shí)際應(yīng)用中,通常情況下圖的邊數(shù)比節(jié)點(diǎn)數(shù)多得多,因此BFS算法的時(shí)間復(fù)雜度可以近似地看作O(| E |),因此用戶在觀看的過程中產(chǎn)生的用戶行為可以非??焖俚剞D(zhuǎn)換成后續(xù)推薦的微課視頻,通過實(shí)驗(yàn)表明,使用本文提出的功能的精準(zhǔn)度、反應(yīng)速度遠(yuǎn)高于常規(guī)的推薦方式。
4? 結(jié)? 論
本文提出的基于圖結(jié)構(gòu)的微課推薦系統(tǒng)利用知識(shí)點(diǎn)圖和廣度優(yōu)先算法實(shí)現(xiàn)了有效的微課視頻推薦。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)的推薦召回率優(yōu)于隨機(jī)推薦和基于內(nèi)容的推薦方法,能夠更好地滿足學(xué)生在微課學(xué)習(xí)過程中的需求。該系統(tǒng)具有實(shí)用價(jià)值和推廣意義。未來的研究方向包括優(yōu)化算法,提高推薦的準(zhǔn)確性和個(gè)性化程度,進(jìn)一步探索微課推薦的可能性。本研究為視頻推薦領(lǐng)域提供了新思路和新方法。
參考文獻(xiàn):
[1] 張萌,紀(jì)佳琪.基于標(biāo)簽的電影推薦算法研究 [J].微型電腦應(yīng)用,2023,39(1):28-31.
[2] 趙晉巍,劉曉鵬,羅威.多匹配器自動(dòng)聚合的知識(shí)圖譜融合系統(tǒng)構(gòu)建 [J].中華醫(yī)學(xué)圖書情報(bào)雜志,2019,28(9):51-57.
[3] 郭理,王嘉岐,張恒旭,等.基于Louvain重疊社區(qū)發(fā)現(xiàn)算法 [J].石河子大學(xué)學(xué)報(bào):自然科學(xué)版,2020,38(3):384-389.
[4] 姜智.面向教學(xué)過程的幾個(gè)度量模型研究 [J].教育探索,2005(9):59-61.
[5] 趙旭,呂鶴軒.個(gè)性化推薦技術(shù)在微課系統(tǒng)中的應(yīng)用 [J].軟件工程,2019,22(12):21-23.
[6] 郝國笑.智能倉儲(chǔ)多AGV的控制策略研究 [D].青島:青島科技大學(xué),2021.
[7] 張利釗.面向移動(dòng)學(xué)習(xí)的土家音樂長(zhǎng)廊導(dǎo)覽系統(tǒng)研究 [D].武漢:華中師范大學(xué),2018.
[8] ZHAO F,SUN J,ZHAO Z. A video recommendation system based on graph theory and semantic analysis [J].Multimedia Tools and Applications,2019,78(4):4363-4383.
[9] 方文. 基于知識(shí)圖譜的個(gè)性化視頻推薦算法研究 [D].廣州:華南理工大學(xué),2021.
[10] 李青,馮梅,申端明,等.一種基于用戶行為的視頻推薦算法 [J].信息系統(tǒng)工程,2020(9):142-144.
作者簡(jiǎn)介:曹夢(mèng)川(1990—),男,漢族,寧夏銀川人,助教,碩士,研究方向:數(shù)據(jù)分析、人工智能。
收稿日期:2023-03-27
基金項(xiàng)目:2020年寧夏回族自治區(qū)科學(xué)技術(shù)學(xué)會(huì)第五批自治區(qū)青年科技人才托舉工程