盛蒙蒙
(浙江警察學(xué)院計(jì)算機(jī)與信息安全系,杭州310051)
Python 語言因其簡(jiǎn)單易學(xué)、功能強(qiáng)大、高效靈活等優(yōu)點(diǎn),成為“復(fù)雜信息系統(tǒng)時(shí)代”利用計(jì)算機(jī)解決問題最直觀的表達(dá)工具,各大院校紛紛開設(shè)Python 語言程序設(shè)計(jì)課程。從多所公安院校的實(shí)際教學(xué)效果看,Py?thon 語言適合的教學(xué)對(duì)象是需要利用計(jì)算機(jī)解決各類實(shí)際問題、甚至是公安實(shí)戰(zhàn)問題的群體,這恰是網(wǎng)絡(luò)安全與執(zhí)法專業(yè)(以下簡(jiǎn)稱網(wǎng)安專業(yè))程序設(shè)計(jì)課程的教學(xué)目的。因此,如何以Python 程序設(shè)計(jì)課程為載體,培養(yǎng)學(xué)生的實(shí)戰(zhàn)應(yīng)用能力和創(chuàng)新能力已成為研究熱點(diǎn)。
國(guó)內(nèi)外專家對(duì)Python 語言程序設(shè)計(jì)課程進(jìn)行多方面的探索和研究。X Kui 等人[1]利用交互式課堂管理系統(tǒng)和在線判斷系統(tǒng)來促進(jìn)學(xué)生自我探索能力。Fangohr等人[2]設(shè)計(jì)自動(dòng)評(píng)估和反饋系統(tǒng),并根據(jù)評(píng)估結(jié)果提供合適的指導(dǎo)。文欣秀等人[3]以軟件工程思想為指導(dǎo),通過模塊化教學(xué),提高學(xué)生的創(chuàng)新實(shí)踐能力和問題分析能力。趙廣輝等人[4]從教學(xué)目標(biāo)、課程內(nèi)容、教學(xué)設(shè)計(jì)和教學(xué)形式方面對(duì)程序設(shè)計(jì)公共課進(jìn)行重構(gòu),實(shí)現(xiàn)賦能目標(biāo)。上述文章從教學(xué)方式、教學(xué)設(shè)計(jì)、評(píng)價(jià)系統(tǒng)、能力建設(shè)等方面對(duì)Python 程序設(shè)計(jì)課程進(jìn)行了研究,然而對(duì)實(shí)驗(yàn)環(huán)節(jié)的討論甚少。我校是公安院校,十分注重實(shí)戰(zhàn)應(yīng)用能力的培養(yǎng)。本文以基于文本內(nèi)容的垃圾短信識(shí)別為例,探討Python 程序設(shè)計(jì)課程綜合實(shí)驗(yàn)案例的設(shè)計(jì),目的是提高學(xué)生的實(shí)踐能力和創(chuàng)新能力,增強(qiáng)職業(yè)認(rèn)同感和學(xué)習(xí)熱情。
首先,實(shí)驗(yàn)內(nèi)容是實(shí)驗(yàn)?zāi)繕?biāo)的主要載體,決定實(shí)驗(yàn)效果。目前單一固定的實(shí)驗(yàn)主題造成Python 知識(shí)與實(shí)戰(zhàn)應(yīng)用嚴(yán)重脫節(jié),學(xué)生對(duì)課程滿意度低,學(xué)完就忘。其次,Python 綜合實(shí)驗(yàn)需要進(jìn)行探究性學(xué)習(xí)來深入理解教學(xué)內(nèi)容,固定的學(xué)習(xí)時(shí)間會(huì)阻礙學(xué)生的探索欲望,造成學(xué)生淺嘗輒止、難以綜合利用所學(xué)知識(shí)去解決實(shí)際問題的現(xiàn)狀。第三,傳統(tǒng)實(shí)驗(yàn)教學(xué)模式是教師講授實(shí)驗(yàn)要求,同學(xué)們按既定的步驟開展實(shí)驗(yàn)并提交報(bào)告,這使得學(xué)生滋生被動(dòng)完成任務(wù)甚至抄襲實(shí)驗(yàn)報(bào)告的心理。
清華大學(xué)副校長(zhǎng)楊斌[5]指出,“對(duì)于‘新工科’建設(shè)要‘授人以欲’。因此,從培養(yǎng)學(xué)生的實(shí)踐能力和創(chuàng)新能力角度出發(fā),在網(wǎng)安工作的實(shí)際需求中提取實(shí)驗(yàn)素材,探索Python 課程實(shí)驗(yàn)教學(xué)改革,具有重要的現(xiàn)實(shí)意義。
實(shí)驗(yàn)教學(xué)對(duì)象是網(wǎng)安專業(yè)大二上學(xué)生,有C 語言和數(shù)據(jù)結(jié)構(gòu)基礎(chǔ),對(duì)網(wǎng)絡(luò)安全業(yè)務(wù)有一定的了解。筆者根據(jù)公安網(wǎng)警偵破網(wǎng)絡(luò)犯罪案件的能力要求,篩選3個(gè)常見的公安應(yīng)用,并結(jié)合Python 教學(xué)要求和教師科研經(jīng)驗(yàn)對(duì)實(shí)驗(yàn)進(jìn)行改編,使其既保持實(shí)驗(yàn)內(nèi)容的真實(shí)性、實(shí)踐性,又通過設(shè)計(jì)加強(qiáng)它的學(xué)科性、創(chuàng)新性。同時(shí),采用基于SPOC 的混合教學(xué)模式進(jìn)行實(shí)驗(yàn)教學(xué),有效提升學(xué)生“自主學(xué)習(xí)、團(tuán)隊(duì)協(xié)作、融合創(chuàng)新”能力。
綜合實(shí)驗(yàn)的內(nèi)容來自公安實(shí)際工作需求,在此基礎(chǔ)上將課程知識(shí)點(diǎn)有效地進(jìn)行融入,能引起學(xué)生強(qiáng)烈的解決問題的內(nèi)生動(dòng)力。同時(shí),實(shí)驗(yàn)的綜合性促使學(xué)生在腦海里將各個(gè)章節(jié)的“知識(shí)孤島”變成整門課的“知識(shí)地圖”,鍛煉綜合應(yīng)用知識(shí)的能力。
SPOC(Small Private Online Course)形式進(jìn)行實(shí)驗(yàn)教學(xué),能以學(xué)生為中心,注重培養(yǎng)學(xué)生的學(xué)習(xí)能力和實(shí)踐能力[6]。課程采用SPOC 混合學(xué)習(xí)模式探討3 個(gè)主題的綜合實(shí)驗(yàn),并予以難度區(qū)分,既讓學(xué)生“吃得飽”,也能“走得遠(yuǎn)”,有效延伸教學(xué)廣度和深度。實(shí)驗(yàn)主題具體如表1 所示。此外,SPOC 教學(xué)為學(xué)生靈活的學(xué)習(xí)時(shí)間創(chuàng)造條件,十分契合公安院校學(xué)生的學(xué)習(xí)實(shí)際。
表1 綜合實(shí)驗(yàn)的主題設(shè)計(jì)
韓紹程等人[7]指出,將課程評(píng)定分?jǐn)?shù)相對(duì)“均勻”和“明確”地分布在學(xué)生參與課程學(xué)習(xí)的各個(gè)環(huán)節(jié),有利于調(diào)動(dòng)學(xué)生學(xué)習(xí)的積極性,提高學(xué)生的學(xué)習(xí)興趣。綜合性實(shí)驗(yàn)成績(jī)包括線上學(xué)習(xí)分、線下討論分、展示評(píng)價(jià)分和提交文檔評(píng)分。其中展示部分是以小組為單位對(duì)實(shí)驗(yàn)進(jìn)行功能介紹、代碼演示和現(xiàn)場(chǎng)答疑。如此小組比賽的形式,即是壓力也是動(dòng)力,為取得更好的成績(jī),每個(gè)小組都用極大的熱情去完成實(shí)驗(yàn)。
近年來,電信詐騙的手段趨于專業(yè)化、多樣化,不法分子利用短信等方式進(jìn)行詐騙,嚴(yán)重影響社會(huì)穩(wěn)定,威脅人民財(cái)產(chǎn)安全[8]。課程以此為背景開發(fā)了垃圾短信識(shí)別程序?qū)嶒?yàn)。
本實(shí)驗(yàn)采用Python 語言進(jìn)行數(shù)據(jù)預(yù)處理、分詞、數(shù)據(jù)建模與模型評(píng)價(jià)工作。具體實(shí)驗(yàn)環(huán)境如表2 所示。
表2 實(shí)驗(yàn)環(huán)境
本實(shí)驗(yàn)首先讀取脫敏的短信數(shù)據(jù)文件,然后通過采樣、數(shù)據(jù)清洗、分詞等步驟為分析做好數(shù)據(jù)準(zhǔn)備,接著采用詞云圖方法進(jìn)行直觀分析,再通過數(shù)據(jù)建模方法進(jìn)行模型構(gòu)建和模型評(píng)估。主要流程如圖1 所示。
圖1 基于文本內(nèi)容的垃圾短信識(shí)別綜合實(shí)驗(yàn)設(shè)計(jì)
(1)讀取數(shù)據(jù)
本實(shí)驗(yàn)提供80 萬條的脫敏短信數(shù)據(jù),以csv 格式保存。其中正常短信72 萬條(類型以0 表示),垃圾短信8 萬條(類型以1 表示)。通過pandas 庫(kù),用read_csv 函數(shù)來讀取短信數(shù)據(jù)。數(shù)據(jù)的屬性為3 列,包括序號(hào)、短信類型、短信內(nèi)容。部分?jǐn)?shù)據(jù)內(nèi)容如表3所示。
表3 短信文件的部分?jǐn)?shù)據(jù)內(nèi)容
(2)對(duì)數(shù)據(jù)進(jìn)行采樣
首先,對(duì)正常短信和垃圾短信進(jìn)行統(tǒng)計(jì)。數(shù)據(jù)顯示,正常短信占了90%,垃圾短信僅占10%,屬于不平衡數(shù)據(jù)。因此,實(shí)驗(yàn)采用欠采樣方式,通過減少正常短信的樣本數(shù)量來提高垃圾短信的分類性能,最后獲取正常短信和垃圾短信各1 萬條的數(shù)據(jù)集形成待分析的樣本。
(3)數(shù)據(jù)清洗
將短信列(message)提取出來,去除文本中的空格和文本脫敏后造成的大量‘x’符號(hào),并刪除重復(fù)短信。然后使用jieba 中文分詞庫(kù),對(duì)短信數(shù)據(jù)進(jìn)行分詞處理。分詞結(jié)果中會(huì)出現(xiàn)很多沒有太大檢索意義的詞語,如“的”、“呢”、“一些”等,這些稱為Stop Words(停用詞)。分詞后的數(shù)據(jù)需要做去除停用詞處理。
(4)基于詞云圖的短信可視化分析
可視化分析是指通過形象地展示數(shù)據(jù)分析結(jié)果來方便用戶理解。本實(shí)驗(yàn)通過詞云圖分析,可以直觀地發(fā)現(xiàn)兩類短信中常見的詞語。通過詞云圖可以看出,垃圾短信經(jīng)常出現(xiàn)的詞語有“活動(dòng)”、“送”、“折”等,與商家促銷廣告相關(guān),符合我們對(duì)垃圾短信的日常認(rèn)知。如圖2 所示。
(5)用樸素貝葉斯進(jìn)行模型訓(xùn)練
實(shí)驗(yàn)選用模型對(duì)已有短信分類進(jìn)行學(xué)習(xí),再通過測(cè)試數(shù)據(jù)計(jì)算模型的精準(zhǔn)度,若符合要求,可以發(fā)布模型,用該模型實(shí)現(xiàn)對(duì)新增短信的類型自動(dòng)識(shí)別。
①短信文本的特征提取。實(shí)驗(yàn)使用逆文檔頻率(TF-IDF)方法進(jìn)行特征提取,其原理是用統(tǒng)計(jì)方法評(píng)估一個(gè)字詞的重要性,某個(gè)詞項(xiàng)在多篇語料庫(kù)文本中出現(xiàn)的次數(shù)越多,該詞項(xiàng)的區(qū)分能力越差[9]。計(jì)算每個(gè)詞項(xiàng)的TF-IDF 值,公式如下所示:
其中,tf(wi)表示詞語的詞頻,idf(wi)表示逆文檔頻率,用于衡量關(guān)鍵詞的權(quán)重,N 表示詞語在某文檔中的頻次,M 表示該文檔的詞語數(shù),D 表示總文檔數(shù),Dw表示包含該詞語的文檔數(shù)。計(jì)算所有詞語的TF-IDF的值,將短信文本表示為文檔-詞條矩陣。
②獲取訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)。隨機(jī)抽取80%的樣本數(shù)據(jù)為訓(xùn)練數(shù)據(jù),剩下的20%為測(cè)試數(shù)據(jù),通過train_test_split 函數(shù)進(jìn)行數(shù)據(jù)拆分。
③分類器選擇與訓(xùn)練。模式識(shí)別分類器種類很多,scikit-learn 提供了常用的分類器,如支持向量機(jī)、最近鄰、神經(jīng)網(wǎng)絡(luò)模型等。本實(shí)驗(yàn)采用的是高斯樸素貝葉斯模型。
④對(duì)模型進(jìn)行評(píng)估。評(píng)估模型通過四種指標(biāo)進(jìn)行評(píng)價(jià),結(jié)果如表4 所示。
圖2
表4 高斯樸素貝葉斯模型評(píng)分結(jié)果表
(6)模型對(duì)比分析
學(xué)有余力的學(xué)生可以進(jìn)行擴(kuò)展學(xué)習(xí),例如使用支持向量機(jī)(SVM)、決策樹(Decision Trees)、最近鄰(NearestNeighbors)等機(jī)器學(xué)習(xí)模型進(jìn)行實(shí)驗(yàn)對(duì)比。另外,學(xué)生們?cè)诩?xì)節(jié)上可以有更多改進(jìn),例如為逃避垃圾短信檢測(cè),部分短信會(huì)采用拼音處理,預(yù)處理的時(shí)候可以加入拼音檢測(cè);例如類似“#$@[]”等干擾字符過多的,可以直接歸類為垃圾短信等。
通過教學(xué)實(shí)踐發(fā)現(xiàn),以SPOC 形式進(jìn)行Python 程序設(shè)計(jì)綜合實(shí)驗(yàn)教學(xué)取得良好效果。首先,實(shí)驗(yàn)的每個(gè)步驟覆蓋多個(gè)知識(shí)點(diǎn),對(duì)一學(xué)期學(xué)習(xí)的各章節(jié)內(nèi)容形成有效連接,讓學(xué)生切身感受到Python 語言的強(qiáng)大性和實(shí)用性。具體如表5 所示。
表5 實(shí)驗(yàn)所覆蓋的知識(shí)點(diǎn)
其次,采取SPOC 實(shí)驗(yàn)教學(xué),學(xué)生以團(tuán)隊(duì)形式選取感興趣的主題進(jìn)行實(shí)踐并舉行同臺(tái)競(jìng)賽,大大激發(fā)學(xué)生的學(xué)習(xí)主動(dòng)性和不斷完善項(xiàng)目的動(dòng)力,鍛煉科研能力,促進(jìn)深度學(xué)習(xí)。
最后,教師以SPOC 形式講解綜合實(shí)驗(yàn),即能將復(fù)雜的問題通過視頻形式講解清楚,又將教師從重復(fù)的勞動(dòng)中解放出來,把更多的精力放在教學(xué)活動(dòng)的組織、評(píng)價(jià)和資源的建設(shè)等方面,從而達(dá)到教學(xué)相長(zhǎng)的效果。
本文基于Python 語言實(shí)驗(yàn)教學(xué)的特點(diǎn)和傳統(tǒng)編程實(shí)驗(yàn)教學(xué)中存在的不足,結(jié)合公安院校的培養(yǎng)要求,以垃圾短信識(shí)別為例,詮釋用綜合實(shí)驗(yàn)串聯(lián)Python 程序設(shè)計(jì)課程知識(shí)點(diǎn)的完整過程,在培養(yǎng)學(xué)生自主學(xué)習(xí)、動(dòng)手實(shí)踐和應(yīng)用創(chuàng)新能力方面取得良好的教學(xué)效果。Python 程序設(shè)計(jì)作為網(wǎng)安專業(yè)的核心課程,教學(xué)團(tuán)隊(duì)需要不斷汲取國(guó)內(nèi)外的優(yōu)秀教學(xué)經(jīng)驗(yàn),不斷改進(jìn)與創(chuàng)新教學(xué)內(nèi)容、教學(xué)方法,以培養(yǎng)學(xué)生的綜合能力和創(chuàng)新能力為目標(biāo),為社會(huì)培養(yǎng)更多的卓越警務(wù)人才。