陳濤 陳志遠
(安徽大學互聯(lián)網(wǎng)學院 安徽省合肥市 230000)
據(jù)中國互聯(lián)網(wǎng)絡信息中心(CNNIC)2021 年8 月27 日在京公布的第48 次《中國互聯(lián)網(wǎng)絡發(fā)展狀況統(tǒng)計報告》統(tǒng)計,我國在線教育用戶規(guī)模截至2021 年6 月已達3.25 億。在線教育用戶規(guī)模在2020 年迎來爆發(fā)式的增長,眾多機構及資本進入在線教育領域,各種在線教育平臺層出不窮,然而由于資本的介入,虛假宣傳,低價獲客等現(xiàn)象尤為明顯。
在當下的在線教育平臺模式下用戶難以在眾多平臺中的同類課程中做出選擇,部分平臺的課程信息對用戶的透明度較低,使得用戶不能夠直觀的了解課程質量。如何在快速發(fā)展在線教育的同時對在線教育平臺和網(wǎng)絡課程進行監(jiān)管,是維護在線教育環(huán)境不可忽視的問題。
隨著大數(shù)據(jù)技術的發(fā)展,使得收集并應用零散的互聯(lián)網(wǎng)在線課程信息變成了可能。使用大數(shù)據(jù)技術對互聯(lián)網(wǎng)上分散在各個在線教育平臺的課程基本信息進行數(shù)據(jù)采集,對采集結果進行數(shù)據(jù)分析與可視化,并以此為基礎構建一個第三方評價平臺,以便于用戶快速獲取感興趣的課程以及真實的學習體驗與評價信息[1]。本文詳細介紹了如何基于Scrapy 爬蟲框架+數(shù)據(jù)可視化構建一個第三方網(wǎng)課評價平臺。
目前,在線教育資源大多分布在各個在線教育平臺上,對于普通用戶來說很難去收集大量的課程信息進行對比,而作為第三方的網(wǎng)課評價平臺,首先要做到的就是將互聯(lián)網(wǎng)上零散分布的大量在線課程信息收集,清洗,并經(jīng)過一定的數(shù)據(jù)分析后提供給用戶。對于大量的網(wǎng)絡數(shù)據(jù)采集問題,使用爬蟲技術無疑是最好的選擇。
Scrapy 框架是一個基于Python 實現(xiàn)的為了爬取Web 站點、提取結構化的數(shù)據(jù)而開發(fā)的應用框架。作為一個框架,其使用起來非常簡單,只需要定制幾個模塊就可以輕松的實現(xiàn)一個爬蟲程序,除此之外,該框架的優(yōu)點還有:
(1)易于構建大規(guī)模網(wǎng)絡爬蟲項目;
(2)異步處理請求提高爬蟲效率;
(3)具有高度可擴展性和魯棒性[2]。
考慮到Scrapy 框架的種種特點與第三方網(wǎng)課評價平臺的需求非常契合,本文確立了基于Scrapy 爬蟲框架和數(shù)據(jù)可視化技術打造一個第三方的網(wǎng)課評價平臺,供用戶參考與交流的設計思路。
平臺要實現(xiàn)課程基本信息的搜索和展示功能,建立用戶系統(tǒng)、搭建交流社區(qū),做好同類課程的數(shù)據(jù)可視化,實現(xiàn)智能推薦功能。同時作為一個第三方點評網(wǎng)站,其評價系統(tǒng)也至關重要。本文將采用星級評價,短評,長評的模式來構建評價系統(tǒng),并且使用自然語言處理技術對采集的評論信息進行情感分析進而轉化為數(shù)字評價指標來作為評分的一部分。
基于上述設計思路,整個平臺架構主要分為三個部分,首先是數(shù)據(jù)采集系統(tǒng),在該環(huán)節(jié)要完成大量的課程基本信息的采集、清洗、存儲等工作。本文選擇RDBMS 來存儲采集的數(shù)據(jù),主要是考慮平臺前期業(yè)務并不復雜,傳統(tǒng)的關系型數(shù)據(jù)庫實現(xiàn)起來也較為簡單,隨著平臺訪問量增大,業(yè)務不斷升級,可以考慮使用分布式數(shù)據(jù)存儲系統(tǒng)Hbase[3]。
第二部分是服務器端,也即后端。這一環(huán)節(jié)的任務是完成與數(shù)據(jù)庫的數(shù)據(jù)交換,以及對客戶端的服務提供和信息交互。
第三部分是客戶端,主要由課程基礎信息模塊、評價系統(tǒng)模塊、用戶模塊和智能推薦模塊組成:
2.2.1 課程基礎信息模塊
利用爬蟲對各大在線教育網(wǎng)站進行數(shù)據(jù)采集,將獲取數(shù)據(jù)的以下幾個方面展現(xiàn)給用戶。
課程縮略圖:課程縮略圖以圖片的形式展示課程的一些基本信息。
課程簡介:簡明扼要的介紹該課程的學習內容,學習目標,課程亮點等內容。
課程評分:來自其他已學習用戶的星級評分、短評、長評,很大程度上能反應一個課程的好壞。
章節(jié)目錄:課程具體的章節(jié)。
講師介紹:授課老師的相關信息展示。
價格:用戶做出選擇的重要參考指標。
學習人數(shù):從課程發(fā)布至今的所有學習人數(shù),能夠體現(xiàn)出課程的火熱程度。
2.2.2 評價系統(tǒng)模塊
基于用戶打造的評價系統(tǒng),有星級評價,短評,長評功能等選擇。
星級評價:評價的結果采用星級區(qū)分,星級分為9 個等級,即:1 星、1 星半、2 星、2 星半、3 星、3 星半、4 星、4 星半、5 星。 通過用戶的打分,用量化的方式體現(xiàn)結果,這種等級與分數(shù)的體現(xiàn)方式給用戶對課程好壞的分辨提供了直觀的參考。
短評:用戶結合自己實際學習過程中對課程的感受,針對課程難易程度、課程質量、課程定位是否精準等問題發(fā)表的簡短精煉的看法。
長評:對課程全方位的分析,對于質量較高,影響力大,給用戶了解課程提供很大幫助的長評可以采用現(xiàn)金獎勵制度。
在該系統(tǒng)下,用戶不僅是信息的提供者,也是信息的受益者,作為一個對用戶友好、透明、公開的評價系統(tǒng),無論是否學習過該課程,用戶都可以通過該系統(tǒng)自由的發(fā)表自己的看法,并且可以與同樣對此課程感興趣的其他用戶交流。
2.2.3 用戶模塊
收藏功能,關注功能:對感興趣的課程點擊收藏按鈕,方便日后在收藏夾中查找。對喜歡的評論者可以點擊關注按鈕,關注后會在社區(qū)服務中推送所關注用戶發(fā)布的信息。
瀏覽記錄:用戶瀏覽過某些課程后覺得很感興趣,但關閉窗口后會遇到找不到原來的課程的窘境,平臺可以提供瀏覽記錄功能,方便用戶快速找到曾經(jīng)瀏覽過的課程。
歷史評論:用戶對于任何課程的評論都將在用戶模塊的歷史評論中展示,用戶可以對自己寫過的評論進行修改、刪除等操作。
消息:根據(jù)平臺所提供的多種功能,用戶可能會有多種信息來源,如收藏課程的最新短評、長評,社區(qū)服務回復或相關信息、平臺的官方通知等等。
我的空間:用戶的個人空間將展示用戶的歷史評論,收藏的課程,在學的課程,學過的課程,個人空間還可以提供成就系統(tǒng),記錄用戶的學習里程碑。
2.2.4 智能推送模塊
基于課程標簽分類的智能推薦系統(tǒng),通過識別和預測用戶的各種興趣或偏好,從而有針對性地、及時地向用戶主動推送所需信息,以滿足不同用戶的個性化需求。
本文實現(xiàn)的爬蟲將以“CSDN 學院”為爬取目標,爬取網(wǎng)站課程的基本信息,包括課程名稱、課程分類、平臺名稱、課程標簽、課程宣傳圖片、課程鏈接、課程簡介、發(fā)布時間、學習人數(shù)、價格、時長和講師信息,還將爬取用戶所發(fā)表的評論內容,包括用戶名稱、用戶頭像、發(fā)布時間、用戶評價。
該爬蟲有三個主要模塊,分別是規(guī)則預設模塊、網(wǎng)頁抓取模塊和存儲模塊。
3.1.1 規(guī)則預設模塊
規(guī)則預設模塊包括USER_AGENT(用戶代理)、ROBOTSTXT_OBEY(Robot 協(xié)議遵守)、LOG_LEVEL(日志等級)等設定,為了后續(xù)的數(shù)據(jù)存儲,還需要在item.py規(guī)定相應的數(shù)據(jù)格式。部分處理代碼如下:
3.1.2 網(wǎng)頁抓取模塊
網(wǎng)頁抓取模塊負責對初始網(wǎng)頁url 發(fā)起請求,使用lxml對請求數(shù)據(jù)進行解析,從初始網(wǎng)頁數(shù)據(jù)中抽取出課程詳情頁url,再對詳情頁url 發(fā)起請求并解析,然后使用xpath 定位獲取相關的課程基本信息。整個網(wǎng)頁抓取流程如圖1 所示。
圖1:網(wǎng)頁抓取流程
在抓取用戶評論信息時發(fā)現(xiàn)CSDN 學院采用了動態(tài)加載的方式,對于動態(tài)加載的數(shù)據(jù)請求,可以通過Scrapy 的下載中間件(Downloader Middlewares)來發(fā)送Ajax 請求或者調用Selenium 瀏覽器自動化。
網(wǎng)頁抓取的核心代碼如下:
(1)該類會對start_urls 自動發(fā)起請求,響應數(shù)據(jù)將返回給該類下的parse 方法。
(3)通過yield 語句對課程詳情頁url 發(fā)起請求,并通過 callback 參數(shù)為這個請求添加回調函數(shù),在請求完成之后會將響應數(shù)據(jù)作為參數(shù)傳遞給回調函數(shù),而meta 參數(shù)則是封裝了當前函數(shù)中的一些數(shù)據(jù),可以在回調函數(shù)中使用response.meta 調用。
(4)最后將抓取的數(shù)據(jù)通過yield item 語句提交給Item Pipeline(管道):它負責處理Spider 中獲取到的Item,并進行后期處理(詳細分析、過濾、存儲等)。
3.1.3 存儲模塊
Scrapy 爬蟲框架進行持久化存儲的方式有很多種,例如CSV 文件,Excel 文件,MySql 數(shù)據(jù)庫,SqlServer 數(shù)據(jù)庫等。本文將使用SqlServer 進行數(shù)據(jù)存儲。(實際開發(fā)中建議使用開源的MySql 數(shù)據(jù)庫來降低成本。)
(1)首先創(chuàng)建數(shù)據(jù)庫表Course 用于存儲數(shù)據(jù)。如表1所示:
表1:數(shù)據(jù)庫表Course 部分內容
(2)創(chuàng)建數(shù)據(jù)庫連接,在pipelines.py 文件中編寫類CsdnPipeline,并在類的__init__方法中建立和數(shù)據(jù)庫的連接。相關代碼如下:
(3)接下來將封裝在item 字典中的數(shù)據(jù)插入數(shù)據(jù)庫。相關代碼如下:
本文中數(shù)據(jù)可視化用到的是ECharts 開源可視化圖表庫,基于JavaScript。
下面對采集和處理后的部分數(shù)據(jù)進行可視化展示。
3.2.1 平臺課程分布
在線教育平臺課程包含的種類數(shù)量,往往也會影響人們的選擇,本文對CSDN 學院的課程分布情況進行了詞云可視化展示。
利用詞云清晰的展現(xiàn)了CSDN 學院中各個課程類型所出現(xiàn)的頻率,編程語言相關課程在該平臺中占比較大,這也符合CSDN 學院本身IT 行業(yè)的定位。
3.2.2 同類課程比較
點贊數(shù)、播放量、好差評等指標很大程度上決定了用戶對于課程的選擇,本文對同類課程各類指標進行了分析比較。
用戶可以根據(jù)該圖對比‘自然語言處理’類課程的相關指標,參考具體的評論內容,然后結合自己的學習狀態(tài),選擇最合適的課程進行學習和研究。
3.2.3 推薦平臺組成
使用餅圖展示本平臺上近一個月訪問次數(shù)靠前的幾大在線教育平臺??梢詭椭脩艨焖俣ㄎ划斍盁衢T訪問的在線教育平臺,從而在優(yōu)秀平臺上獲取資源。
(1)課程基礎信息模塊。平臺前端采用了Vue 進行開發(fā),其能夠自動追蹤依賴的模板表達式和計算屬性,提供MVVM(Model-View-ViewModel) 數(shù)據(jù)綁定和一個可組合的組件系統(tǒng),具有簡單、靈活的 API,通過獲取指定課程的內容,從后臺的接口中獲取信息,并且渲染到頁面上對用戶進行展示。
(2)評價模塊。驗證用戶的cookie 后,用戶可以在課程或者平臺下方發(fā)表相關的評價。評價內容在傳入數(shù)據(jù)庫之前,使用自然語言處理技術進行判斷,區(qū)分好評和差評,然后進行提交和展示。
(3)用戶模塊。用戶在首頁進行登錄后,即可進入自己的個人中心,可以修改自己的信息和頭像,也可以查看自己的課程瀏覽記錄。
(4)后臺管理?;赩ue 開發(fā)后臺管理系統(tǒng),在平臺的后期運作中,將后端的一些接口封裝到后臺管理系統(tǒng)中,例如在線教育平臺和在線課程相關內容的增刪改查操作,使管理者可以更好的進行數(shù)據(jù)的整理和修改操作。
平臺后端采用SprintBoot 框架[4]進行開發(fā),Spring 框架是Java 平臺上的一種開源應用框架,SpringBoot 基于Spring4.0 設計,不僅繼承了Spring 框架原有的優(yōu)秀特性,而且還通過簡化配置來進一步優(yōu)化了Spring 應用的整個搭建和開發(fā)過程。除此之外,本文還運用Python 實現(xiàn)了基于課程標簽分類的智能推薦系統(tǒng)以及用于評論情感分析的自然語言處理技術。下面將詳細介紹后端開發(fā)內容。
3.4.1 平臺各模塊數(shù)據(jù)交互
(1)用戶模塊(User)。前端用戶模塊更多的是實現(xiàn)用戶相關信息如何展示問題,與前端的用戶模塊不同,后端的用戶模塊需要處理的問題更偏向于用戶數(shù)據(jù)的交互和存儲。具體要解決的問題有用戶登錄注冊、驗證碼校驗、密碼加密存儲、用戶權限管理以及用戶信息存儲等。
與用戶相關的認證、授權、加密及權限管理將使用Shiro 框架整合JWT 來實現(xiàn),Apache Shiro 是Java 的一個安全框架,主要由四大功能構成,分別是1、Authentication:身份認證/ 登錄,2、Authorization:授權,3、Session Manager:會話管理,4、Cryptography:加密。而JSON Web Tokens (JWT)是目前最流行的跨域身份驗證解決方案,相比于Session,JWT 具有可擴展性好,無狀態(tài)等優(yōu)點,適用于分布式架構,并且可以在JWT 的載荷中存儲一些常用信息,能夠有效降低服務器訪問數(shù)據(jù)庫的次數(shù)。
(2)平臺模塊(Platform)。平臺模塊主要是存儲各個在線教育平臺的相關信息并且實現(xiàn)與前端交互的接口。存儲平臺信息的數(shù)據(jù)庫表結構如表2 所示:
MyBatis 是一款優(yōu)秀的持久層框架,它支持自定義SQL、存儲過程以及高級映射。本文使用Mybatis 實現(xiàn)與數(shù)據(jù)庫的連接與交互。根據(jù)平臺id 從數(shù)據(jù)庫中查找平臺詳細信息如下所示:
平臺模塊中與前端交互的接口將在Controller 層實現(xiàn),Controller 層是MVC 模型中的控制器層,Controller 層負責將用戶提交來的請求通過對URL 的匹配,分配不同的接收器進行處理,然后向用戶返回結果。平臺模塊中主要有以下四個控制類,分別是PlatformScoreController(平臺評分控制類)、PlatformController(平臺控制類)、PlatformComment Controller(平臺評論控制類)、CategorysController(平臺類別控制類)。各控制類中主要實現(xiàn)的是對應服務的增刪改查功能,根據(jù)url 來區(qū)分不同的接口,便于前端根據(jù)業(yè)務需求來請求響應數(shù)據(jù)。
(3)課程模塊(Course)。課程模塊是平臺架構中第三部分的核心內容,也是后端開發(fā)中最復雜的內容。其不僅包含了課程基礎信息的數(shù)據(jù)交互接口,還承擔了整個評價系統(tǒng)的運行以及智能推薦系統(tǒng)中規(guī)則庫的數(shù)據(jù)傳輸。
該模塊實現(xiàn)的功能有緩存管理、跨域配置、控制層(Controller)、模型層(Model)、服務層(Service 層)、異常處理機制、接口返回數(shù)據(jù)格式管理、Mybatis 通用mapper(負責和數(shù)據(jù)庫建立連接)、身份驗證以及權限管理。
3.4.2 智能推薦系統(tǒng)
本文實現(xiàn)的是基于課程標簽分類的智能推薦系統(tǒng),該系統(tǒng)的核心是規(guī)則庫的構建和推理引擎的優(yōu)化。
(1)規(guī)則庫的構建。規(guī)則庫由兩部分組成,分別是Conclusion(結論)和Fact(前提或事實)。Fact 在規(guī)則庫中稱作前提,在用戶輸入的關鍵詞或者用戶行為數(shù)據(jù)中Fact稱為事實。Conclusion 可以是課程標簽,也可以是課程唯一索引(課程id 號),當Conclusion 是課程標簽時,會加入事實列表繼續(xù)推理,當Conclusion 是課程id 時,將會作為推理結果保存下來,推理結束時,根據(jù)這些id 號從數(shù)據(jù)庫中獲取對應的課程信息。
在規(guī)則庫的構建中使用自然語言處理對課程標題和簡介進行分析,提取關鍵詞作為推理的前提加入規(guī)則庫。并且將規(guī)則庫和課程信息存儲在云端,增加系統(tǒng)的可移植性和數(shù)據(jù)的安全性。同時引入匹配度的概念,能夠更好的匹配直接相關和間接相關的課程。假設一次匹配過程中某規(guī)則的匹配度為D,匹配的事實數(shù)量為F,該規(guī)則的前提數(shù)量為P,則D= (F/P) * 100%。
(2)推理引擎的優(yōu)化。當規(guī)則庫和課程量逐漸增大時,系統(tǒng)推理所需要的時間也會隨之增大,且是指數(shù)型增長??紤]使用神經(jīng)網(wǎng)絡來訓練推理系統(tǒng),將前提作為神經(jīng)網(wǎng)絡的輸入,結論作為神經(jīng)網(wǎng)絡的輸出,現(xiàn)有的規(guī)則庫作為訓練集對該網(wǎng)絡進行訓練,以實現(xiàn)對于特定的輸入,系統(tǒng)能做出精準的課程推薦。具體步驟如下:
(1)使用Word2vec 進行詞嵌入,完成語言到數(shù)值的轉換。
(2)使用現(xiàn)有的推薦引擎進行批量的推理,將推理的前提和記錄存儲下來,做為訓練集。
(3)根據(jù)上一步獲得的訓練集來訓練神經(jīng)網(wǎng)絡。
3.4.3 自然語言處理
使用深度學習中的LSTM 模型來對爬取的課程評價做情感分析,使用Embedding + LSTM + Softmax 訓練模型,將獲取的數(shù)據(jù)集作為訓練集,然后把訓練得到的模型放入服務器中運行,從而在用戶進行評價提交的過程中,能夠準確的為用戶的評語分類,高效的進行評價內容的情感分析。
(1)建立情感詞典,將原始數(shù)據(jù)進行分詞,存入詞典中。相關代碼如下:
(2)進行模型訓練,使用訓練集建立模型。相關代碼如下:
(3)進行結果的測試和驗證。自然語言處理的結果如下所示:
隨著互聯(lián)網(wǎng)的發(fā)展,新興的課程形態(tài)層出不窮,以中國大學MOOC(慕課)為代表的國家精品課程在線學習平臺和以B 站為代表的綜合性視頻學習平臺,都廣受年輕人喜愛。為了使用戶可以快速獲取感興趣的課程以及真實的學習體驗與評價信息,本文設計并實現(xiàn)了一種面向有在線學習需求用戶的第三方網(wǎng)課評價平臺。該平臺提供一個對用戶友好、透明、公開的評價系統(tǒng),無論是否學習過該課程,用戶都可以自由的發(fā)表自己的看法,并且可以與同樣對此課程感興趣的其他用戶交流。依托于數(shù)據(jù)采集(基于Scrapy 爬蟲框架)和數(shù)據(jù)可視化技術,平臺對網(wǎng)絡上現(xiàn)有的不同學習網(wǎng)站的同類課程進行分析比較,并以圖表的形式反饋給用戶,便于用戶更加直觀的了解這些課程的優(yōu)缺點從而做出選擇。人性化的智能推薦算法將通過用戶的使用習慣推薦用戶可能喜歡的課程,從而提升用戶使用體驗。
點評網(wǎng)站的模式在餐飲業(yè)和電影行業(yè)早有應用,人們熟知的平臺有大眾點評,豆瓣網(wǎng)等。隨著社會競爭壓力的逐漸增大,人們對知識和學歷的獲取也越來越感到焦慮,無論是在線職業(yè)教育還是在線考研考公教育等相關平臺仍然在蓬勃發(fā)展中。在此背景下,一個第三方的網(wǎng)課評價平臺能夠讓消費者在知識付費前通過該渠道了解到真實的網(wǎng)課信息,從而做出性價比更高的選擇。