■張海霞
(廣州華南商貿(mào)職業(yè)學(xué)院,廣東 廣州 510000)
教學(xué)資源指的是在教學(xué)過程中,可被教學(xué)者利用的全部資源,包括教材、案例、影視材料以及課件、教學(xué)設(shè)施等[1]。當(dāng)下網(wǎng)絡(luò)教育逐漸普及,與此同時,網(wǎng)絡(luò)教育的資源的種類和形式也越來越多,在進(jìn)行教學(xué)過程中,如何高效、精準(zhǔn)從網(wǎng)頁中獲取所需的教育資源[2],是教學(xué)過程中重點關(guān)注問題之一。
為更好的獲取海量教學(xué)資源,劉孝保等人以多元神經(jīng)網(wǎng)絡(luò)融合為依據(jù),提出相關(guān)的分布式資源分類方法。該方法依據(jù)多元神經(jīng)網(wǎng)絡(luò)對定性資源進(jìn)行分類,為資源需求提供依據(jù),但是該方法在應(yīng)用過程中,當(dāng)資源搜索頁面比例較大時,資源獲取不夠全面[3]。網(wǎng)路爬蟲技術(shù)是以某種規(guī)則為依據(jù),自動實現(xiàn)網(wǎng)絡(luò)中信息抓取的一種技術(shù),該技術(shù)能夠在網(wǎng)絡(luò)大量信息載體中,可靠獲取所需信息。Python 屬于一種編程語言,其可提供高級的數(shù)據(jù)結(jié)構(gòu),并且,該語言在應(yīng)用過程中,具有可擴(kuò)展特點以及具有豐富的標(biāo)準(zhǔn)庫[4],能夠提供不同平臺使用的源碼和機(jī)器碼,在軟件擴(kuò)展中,具有良好的應(yīng)用效果。因此,本文以Python 網(wǎng)絡(luò)爬蟲技術(shù)為主,實現(xiàn)海量教學(xué)資源更好的獲取。
本文在進(jìn)行海量教學(xué)資源獲取研究時,對于海量資源的分布特性進(jìn)行充分分析后,結(jié)合海量教育資源需求,研究基于Python 網(wǎng)絡(luò)爬蟲技術(shù)的海量教學(xué)資源獲取方法,該方法整體框架由4 個端共同實現(xiàn),分別為Wed端、服務(wù)端、Python 爬取端、存儲端,通過Wed 端下達(dá)海量教學(xué)資源獲取任務(wù)指令,服務(wù)端依據(jù)該指令完成教學(xué)資源獲取任務(wù)的調(diào)度,同時對教學(xué)資源進(jìn)行定位;Python爬取端依據(jù)定位結(jié)果,對海量教學(xué)資源進(jìn)行爬取后,將爬取的海量教學(xué)資源輸入存儲端;存儲端對爬取的海量教學(xué)資源進(jìn)行聚類后,存儲在不同的數(shù)據(jù)庫中,實現(xiàn)海量教學(xué)資源獲取。
1.基于Python 的爬蟲程序維護(hù)
Python 爬取端是海量教學(xué)資源獲取的核心,該端主要依據(jù)基于聚焦爬蟲技術(shù)實現(xiàn)海量教學(xué)資源的爬取,聚焦爬蟲在運(yùn)行過程中,其運(yùn)行程序結(jié)構(gòu)相對較為復(fù)雜,在執(zhí)行海量教學(xué)資源爬取任務(wù)時,會發(fā)生運(yùn)行程序錯誤的現(xiàn)象,導(dǎo)致爬蟲的爬取效率和爬取結(jié)果的可靠性存在一定不足[5]。為了保證教學(xué)資源可靠爬取,本文基于Python語言維護(hù)爬蟲程序。該維護(hù)整體包含兩個部分,一是爬取程序異常數(shù)據(jù)獲取;二是爬取程序維護(hù),以此保證程序的穩(wěn)定運(yùn)行,在海量資源爬取時不會發(fā)生程序錯誤現(xiàn)象。
(1)爬取程序異常數(shù)據(jù)獲取
獲取聚焦爬蟲技術(shù)在海量教學(xué)資源爬取時的異常數(shù)據(jù),將該數(shù)據(jù)作為爬取程序維護(hù)的依據(jù)。如果爬蟲爬取的一串完整、最長的教學(xué)資源信息字符中,n 表示該字符數(shù)量,此時,可利用Python 語言直接運(yùn)行正向最大匹配,按照爬取順序依次輸出教學(xué)資源信息字符結(jié)果,其數(shù)量用m 表示。將這些字符看作是一個字符,將其和對應(yīng)的爬取程序的爬取信息進(jìn)行對比;如果兩者之間匹配,表示聚焦爬蟲技術(shù)爬取程序運(yùn)行穩(wěn)定,能夠可靠完成海量教學(xué)資源爬取;如果兩者不匹配,則表示爬蟲程序在爬取過程中存在異常數(shù)據(jù)。上述爬取程序公式為:
式中:ip 表示聚焦爬蟲爬取的教學(xué)資源所在的域名位置;if 表示Python 語言判別條件;i 表示爬蟲的爬取次數(shù);T表示教學(xué)資源網(wǎng)頁更新時間;λ 表示資源爬取任務(wù)隊列。
以聚焦爬蟲的爬取順序為參照,依據(jù)公式(1)可進(jìn)行聚焦爬蟲技術(shù)和爬取網(wǎng)頁之間的匹配,如果匹配成功,進(jìn)行下一個域名的匹配;如果匹配不成功,則獲取異常數(shù)據(jù),通過Python 語言實現(xiàn)網(wǎng)頁的編譯。重復(fù)上述步驟,實現(xiàn)全部網(wǎng)頁的匹配。
(2)爬取程序維護(hù)
獲取異常數(shù)據(jù)后,以此為依據(jù)構(gòu)建目標(biāo)函數(shù),將獲取的異常數(shù)據(jù)代入目標(biāo)函數(shù)中,實現(xiàn)爬取程序的維護(hù)。在候選的教學(xué)資源頁面網(wǎng)址(URL)中進(jìn)行糾錯,以資源分類標(biāo)準(zhǔn)、整個網(wǎng)頁爬取資源為基礎(chǔ),對網(wǎng)頁主體和爬蟲爬取的資源之間的關(guān)聯(lián)度進(jìn)行判斷。如果機(jī)器學(xué)習(xí)用o 表示,教育資源的有效性參數(shù)用μ 表示,爬蟲程序中的任意數(shù)據(jù)用X 表示,對其實行關(guān)聯(lián)度判斷的公式為:
式中:S 表示爬取程序模型;C 本表示X 在隨機(jī)情況下發(fā)生的變化概率;Z 表示數(shù)據(jù)有效性參數(shù);P 表示教育資源的所屬域名,且該域名位于爬取的網(wǎng)頁中。PX(S│O)表示與爬蟲爬取的資源之間的關(guān)聯(lián)度,將關(guān)聯(lián)度小于設(shè)定閾值的爬蟲程序數(shù)據(jù)作為異常數(shù)據(jù),表示為X′。
獲取所有的異常數(shù)據(jù)X′后,結(jié)合教育資源網(wǎng)站域名的識別結(jié)果,校驗異常數(shù)據(jù)的有效性,在該過程中目標(biāo)函數(shù)的計算公式為:
結(jié)合上述內(nèi)容,依據(jù)公式(3)目標(biāo)函數(shù)校驗異常數(shù)據(jù)有效性,獲取定位的數(shù)據(jù)目標(biāo),實現(xiàn)爬蟲爬取程序維護(hù)[6]。
2.海量教學(xué)資源流爬取方法
本文在進(jìn)行教學(xué)資源獲取時,教學(xué)資源也存在不同的類別體系,因此,在進(jìn)行海量教學(xué)資源獲取時,在上述小節(jié)維護(hù)爬取程序的基礎(chǔ)上,完成網(wǎng)頁中海量教學(xué)資源的爬取。由于Web 網(wǎng)頁空間內(nèi)的教學(xué)資源呈分散式分布情況,所以,爬蟲在實現(xiàn)網(wǎng)頁中海量教學(xué)資源爬取過程中,爬蟲的爬取過程呈現(xiàn)未知狀態(tài),無法有效預(yù)測爬蟲的爬取方向。基于此,本文引入蟻群算法對聚焦爬蟲進(jìn)行啟發(fā)式指導(dǎo),并以分類器體系結(jié)構(gòu)為基礎(chǔ),形成基于蟻群算法的聚焦爬蟲爬取模型。該模型是結(jié)合聚焦爬蟲和分類器功能形成,聚焦爬蟲的主要作用是爬取網(wǎng)頁中的海量教學(xué)資源,分類器的主要作用是對網(wǎng)頁進(jìn)行分類,同時計算網(wǎng)頁的關(guān)聯(lián)度。該爬取方法結(jié)構(gòu)見圖1。

圖1 基于蟻群算法的聚焦爬蟲爬取模型結(jié)構(gòu)
整個模型是由多個模塊組成,分別為爬行子模塊、資源定位評估子模塊以及分類器子模塊。爬行子模塊的主要作用是連接其他兩個模塊,其可獲取資源定位評估子模塊中,資源定位鏈接子集中得分最高的教學(xué)資源定位結(jié)果,同時確定該定位結(jié)果對應(yīng)的網(wǎng)頁,并完成網(wǎng)頁的劃分;判斷該網(wǎng)頁是否為教學(xué)資源內(nèi)容網(wǎng)頁,如果是,則將該網(wǎng)頁進(jìn)行下載并輸入分類器子模塊中。分類器子模塊則對該網(wǎng)頁和教育資源主題之間的相關(guān)性進(jìn)行判斷,將其作為聚焦爬蟲在網(wǎng)頁空間內(nèi)對教學(xué)資源爬取的指導(dǎo)依據(jù)。資源定位評估子模塊依據(jù)獲取的關(guān)聯(lián)度結(jié)果,通過蟻群算法對聚焦爬蟲的爬行過程中進(jìn)行指導(dǎo),實現(xiàn)海量教學(xué)資源爬取;獲取海量教學(xué)資源樣本集。
完成網(wǎng)頁中海量教學(xué)資源的爬取后,需對爬取的海量教學(xué)資源進(jìn)行聚類,以此實現(xiàn)該資源的自動整理,提升資源的利用率。本文為保證海量教學(xué)資源的聚類效果,存儲端采用最大最小距離加權(quán)密度的K-means 算法,聚類聚焦爬蟲爬取的海量教育資源[7]。
該算法通過最大最小距離準(zhǔn)則確定聚類中心,且在過程中,選取距離較遠(yuǎn)的教學(xué)資源樣本點完成,并通過加權(quán)密度對該聚類中心進(jìn)行選取,依據(jù)簇內(nèi)和簇間資源樣本距離的比值,確定聚類中心數(shù)量,進(jìn)而完成爬取的海量教學(xué)資源聚類。該方法的聚類步驟如下。
輸入:爬取到的海量教學(xué)資源樣本集Y。
輸出:海量教學(xué)資源聚類結(jié)果。
(1)將爬取獲取的海量教學(xué)資源Y 輸入結(jié)合最大最小距離加權(quán)密度的K-means 算法中,對Y 中所有樣本點的平均距離w(yi,yj)進(jìn)行計算,其計算公式為:
式中:dw(yi,yj)表示加權(quán)歐式距離,對應(yīng)教學(xué)資源樣本yi和yj之間,且在維度為m 的空間內(nèi);其計算公式為:
式中:l 表示l 第維空間;在該空間內(nèi)的教學(xué)資源樣本分別用yil和yjl表示;表示Y 中資源樣本分布特征。
(2)y 表示Y 中的將任意資源樣本點,將y 作為中心畫圓,且圓的半徑用R 表示;圓畫成后,對其內(nèi)存在的全部y 的數(shù)量進(jìn)行確定,并將該數(shù)量結(jié)果作為y 的密度,用T 表示。
(3)計算所有樣本點密度結(jié)果,并按照降序?qū)τ嬎憬Y(jié)果進(jìn)行排列,選擇前個樣本數(shù)據(jù)將其加入資源集合U 中;確定其中密度最大的資源樣本點y1,定義其為第一個聚類中心,并將其劃分值中心點集合C 中。
(4)獲取U 中和y1之間距離最遠(yuǎn)的點y2,將其作為第二個中心點,同時劃分至C 中。
(5)以最大最小距離準(zhǔn)則為依據(jù),計算剩余樣本中的中心點,該點的數(shù)量用表示,將其結(jié)果同樣劃分至C 中。
(7)依據(jù)初始聚類中心點,依據(jù)歐氏距離將Y 中的其他資源樣本點劃分至距離最近的簇中,并計算此次聚類數(shù)量H(k)。
(8)對比所有K 的H(k)結(jié)果,H(k)值最小時,K 的取值即為最佳聚類數(shù)量。
(9)輸出最佳聚類數(shù)量以及其對應(yīng)的初始聚類中心點,并對其進(jìn)行聚類,則實現(xiàn)聚焦爬蟲爬取的海量教學(xué)資源聚類。
為驗證本文方法對于海量教學(xué)資源的獲取效果,以某網(wǎng)絡(luò)中的教學(xué)資源為例,進(jìn)行海量教學(xué)資源獲取,該網(wǎng)站中包含的教學(xué)資源有課件、圖片素材、題庫、音頻文件、試卷素材共5 大類。
為驗證本文方法對網(wǎng)頁中海量教學(xué)資源的獲取性能,采用相對回報率R 作為評價指標(biāo),該指標(biāo)能夠衡量本文方法在進(jìn)行教學(xué)資源爬取時的爬取性能,應(yīng)用標(biāo)準(zhǔn)高于0.47;該指標(biāo)的計算公式為:
式中:在t 時刻下,爬蟲已經(jīng)發(fā)現(xiàn)的相關(guān)教學(xué)資源主體頁面比例用ψt表示、已搜索的頁面比例用ξt表示。
依據(jù)公式(6)獲取本文方法在不同的搜索頁面比例下,對于5 大類教學(xué)資源爬取的相對回報率R 指標(biāo)結(jié)果均在0.47 以上,是由于本文方法在進(jìn)行教學(xué)資源爬取時,為保證資源爬取性能,采用Python 語言維護(hù)爬蟲程序,避免爬取程序在爬取過程中發(fā)生程序錯誤現(xiàn)象,以此提升海量教學(xué)資源的爬取性能。
為進(jìn)一步驗證本文方法對于海量教學(xué)資源的聚類效果,采用聚類純度作為評價指標(biāo),該指標(biāo)計算公式為:
式中:N 表示資源樣本數(shù)量;Ω 表示實際聚類結(jié)果;wk表示第k 個聚類簇;C 表示資源實際類別;Cj表示第j類別。該指標(biāo)取值范圍在0~1 之間,其值越大,表示其聚類效果越佳。
依據(jù)公式(7)獲取本文方法在指定資源類別和不指定資源類別兩種情況下,聚類指標(biāo)Pu=(Ω,C) 的測試結(jié)果,如圖2 所示。由圖2 測試結(jié)果可知:本文方法應(yīng)用后,在指定資源類別和不指定資源類別兩種情況下,隨著聚類資源數(shù)量的不斷增加,本文方法的聚類指標(biāo)Pu=(Ω,C)結(jié)果均在0.92 以上,其中,在不指定資源類別時的指標(biāo)值最高依據(jù)達(dá)到0.988 左右,聚類效果良好。

圖2 聚類純度測試結(jié)果
為驗證本文方法對于海量教學(xué)資源獲取的應(yīng)用性,在指定教學(xué)資源和沒有指定教學(xué)資源兩種情況下,通過本文方法獲取教學(xué)資源,其中,指定的教學(xué)資源為課件教學(xué)資源,測試結(jié)果可知:在指定教學(xué)資源類別的情況下,本文方法能夠精準(zhǔn)獲取網(wǎng)頁中的資源內(nèi)容,在沒有教學(xué)資源類別指定的情況下,本文依舊可完成網(wǎng)頁內(nèi)全部教學(xué)資源的獲取,并完成獲取資源的聚類,為資源利用提供可靠保障。因此,本文方法具有良好的應(yīng)用性,滿足海量教學(xué)資源獲取應(yīng)用需求。
信息化教育的快速發(fā)展,教育資源庫的建設(shè)基于教育資源的利用,已經(jīng)成為核心問題。本文針對海量教學(xué)資源的獲取展開研究后,提出基于Python 網(wǎng)絡(luò)爬蟲技術(shù)的海量教學(xué)資源獲取方法,用于實現(xiàn)指定教學(xué)資源以及非指定教學(xué)資源的獲取。對該方法的應(yīng)用效果進(jìn)行測試得出:該方法能夠保證海量教學(xué)資源的可靠爬取,并完成不同類別教學(xué)資源的聚類,在非指定教學(xué)資源類別的情況下,依舊可完成海量教學(xué)資源獲取。