潘理虎 張雷 解丹 陳立潮 趙淑芳
摘? 要:隨著高等教育從知識傳授到能力培養(yǎng)的轉(zhuǎn)型,實踐教學(xué)成為大學(xué)教師普遍重視的人才培養(yǎng)環(huán)節(jié)。實踐教學(xué)的主要難點在于教學(xué)過程的管控和形成性考核的質(zhì)量。作業(yè)查重系統(tǒng)是降低教師負擔,提高過程監(jiān)控質(zhì)量的有效工具。研發(fā)了一種便捷、低成本且無須數(shù)據(jù)庫的作業(yè)查重系統(tǒng),采用k-gram字符串匹配算法,逐字符的對比作業(yè)文檔之間的字符串,當文檔間相同的字符串長度達到閾值時,則計入重復(fù)度中。在軟件工程課程的教學(xué)實踐中的應(yīng)用結(jié)果表明,教師可結(jié)合系統(tǒng)查重結(jié)果,對教學(xué)情況進行分析,從而實現(xiàn)差異化作業(yè)質(zhì)量監(jiān)控,提高課程質(zhì)量、促進學(xué)風(fēng)建設(shè)。
關(guān)鍵詞:作業(yè)查重系統(tǒng);實踐教學(xué);人機結(jié)合;學(xué)風(fēng)建設(shè)
中圖分類號:TP311.5? ? ?文獻標識碼:A
Abstract:With increasingly extensive attention of college teachers,practice teaching has become the key factor for talent cultivation,because the higher education transition from imparting knowledge to cultivating ability.The main difficulty in practice teaching lies in the management of practice teaching process and the quality of formative assessment.Assignment duplicate-checking system is effective in reducing the burden on teachers and improving the quality of process monitoring.Therefore,adopting k-gram matching algorithm to compare the character strings between assignment files,the paper proposes a convenient,low-cost and database-free assignment duplicate-checking system.When certain same character string in two files reaches the threshold value,it is counted into duplicate calculation.Practice has proven that teachers can combine the obtained results and analyze the teaching situation,thus achieving high-efficiency teaching by human-computer cooperation,which is conducive to encouraging students to innovate,improving the quality of course teaching and promoting the construction of study style.
Keywords:assignment duplicate-checking system;practice teaching;human-computer cooperation;construction of study style
1? ?引言(Introduction)
互聯(lián)網(wǎng)的快速發(fā)展使得信息共享的途徑增多,但電子資料的易復(fù)制性和易篡改性,也使得抄襲現(xiàn)象頻有發(fā)生[1]?,F(xiàn)階段,大部分高校仍以人工審查作業(yè)為主要方式,這種方式雖然可以充分發(fā)揮教師豐富的經(jīng)驗優(yōu)勢,但對公平公正的評估學(xué)生作業(yè)仍具有很強的不確定性,且不能做到量化分析。近年來,論文查重已經(jīng)成為高校中強化學(xué)術(shù)規(guī)范的重要舉措,大部分學(xué)校都已購買了論文查重的新服務(wù),但卻很少有學(xué)校進行作業(yè)查重[2]。2018年9月清華發(fā)布《關(guān)于提供作業(yè)查重服務(wù)的通知》[3],標志著清華將采用中國知網(wǎng)檢測系統(tǒng)進行作業(yè)查重。考慮到使用知網(wǎng)檢測系統(tǒng)進行作業(yè)查重不具有針對性,且耗費較高,于是在軟件工程課程的實際教學(xué)過程中,開發(fā)了一種簡便的查重系統(tǒng),既可針對軟件工程課程所提交的作業(yè)進行有針對的查重,又可節(jié)省教師在日常審查作業(yè)中所耗費的大量時間以提高教師的教學(xué)效率和質(zhì)量。
2? ?作業(yè)中存在的問題(Problems in the assignment)
軟件工程課程是計算機及相關(guān)專業(yè)中的一門重要課程,對于培養(yǎng)新工科人才具有重要意義[4]。在軟件工程教學(xué)過程中,實踐教學(xué)占據(jù)著重要的一部分,要充分發(fā)揮學(xué)生對該課程的主觀能動性,就需要布置一些作業(yè),以促進學(xué)生自我學(xué)習(xí),自我思考。目前,軟件工程課程的平時作業(yè)中存在數(shù)量多、難存檔、難細評等問題[5]。一方面,學(xué)生們的作業(yè)大多以紙質(zhì)版保存,不易長期存檔,且學(xué)生們的作業(yè)存在相互抄襲現(xiàn)象,更有甚者,不進行思考,也不進行資料查找,直接將同學(xué)的作業(yè)進行復(fù)制粘貼,或改成自己的文件名便提交給教師。長期維持這種情況,不利于培養(yǎng)學(xué)生正確的學(xué)術(shù)規(guī)范,以至于在畢業(yè)的時候,習(xí)慣抄襲,最終導(dǎo)致難以畢業(yè)。另一方面,一個教師往往教授多門課程或多個班級,在一對多的狀態(tài)下,學(xué)生提交的作業(yè)數(shù)量便成倍增長、增加了教師的工作量。當工作量很大時,教師便很難對學(xué)生的作業(yè)一一細評,尤其是難以對原創(chuàng)作業(yè)給予合理、公正的分數(shù)。
為解決上述問題,在軟件工程實際教學(xué)中,開發(fā)了作業(yè)查重系統(tǒng)。該系統(tǒng)充分利用了現(xiàn)有的教學(xué)資源,可以大幅降低教學(xué)成本,在教師教學(xué)經(jīng)費不充裕的情況下能夠大范圍的應(yīng)用。
3? ?總體方案(Overall scheme)
軟件工程課程中的作業(yè)有許多形式,如課后題、案例分析等。由于軟件工程的實踐性較強,大多數(shù)院校在本課程中都有項目實驗的實踐環(huán)節(jié),而該實踐環(huán)節(jié)的成果一般包括項目的程序代碼和項目的實驗報告。本系統(tǒng)以項目實驗報告為例,對整個查重系統(tǒng)的流程進行介紹。具體的查重流程如圖1所示,包括作業(yè)收集、作業(yè)預(yù)處理、作業(yè)查重、教師審查和結(jié)果分析。
3.1? ?作業(yè)收集
軟件工程課程實際教學(xué)中,為發(fā)揮學(xué)生的團隊協(xié)作能力和培養(yǎng)學(xué)生的溝通交流能力,將所教授的16級計算機科學(xué)與技術(shù)專業(yè)的兩個班級分組進行項目實踐。由于兩個班級均有41名同學(xué),因而將每個班級的學(xué)生分為七個五人組和一個六人組。學(xué)生以小組進行實踐,每個人均要提交一份實驗報告。這樣可以避免同組中一些能力弱的同學(xué)在項目實踐過程中,不參與或很少參與項目實踐,僅依賴能力強的同學(xué)進行項目開發(fā)和文檔書寫,但最終卻能夠憑借他人努力的成果通過課程考核。
傳統(tǒng)的作業(yè)收集方式是由班長或?qū)W習(xí)委員將作業(yè)收齊,之后再統(tǒng)一提交給教師。這種收集作業(yè)的方式便于管理且省時省力。故本課程仍然采用這種收集作業(yè)的方式,但是為了避免因處理不同格式的文件而增加系統(tǒng)的復(fù)雜性,也為了便于教師對作業(yè)的審查,故要求每人的作業(yè)以統(tǒng)一的格式進行命名。實驗報告的命名統(tǒng)一為“學(xué)號姓名”,且文檔的后綴名統(tǒng)一為.docx,如“20160103張三.docx”。所有的學(xué)生將自己電子版的實驗報告提交給學(xué)習(xí)委員后,學(xué)習(xí)委員初步對每個學(xué)生的作業(yè)命名格式進行檢查,檢查無誤后將所有同學(xué)的文檔放入一個文件夾中,并將文件夾命名為“班級作業(yè)名稱”,如“計算機科學(xué)與技術(shù)一班實驗報告”。整個文檔壓縮打包后發(fā)送到教師郵箱提交給教師。這樣既方便教師處理作業(yè),也便于在文檔丟失的情況下進行找回。
3.2? ?文檔預(yù)處理
教師收到提交的作業(yè)后,從郵箱下載到個人的計算機上,進行保存。之后查重系統(tǒng)便對實驗報告文檔進行預(yù)處理,也就是將文檔格式處理為指定的格式,并對文檔內(nèi)容進行處理。預(yù)處理過程中,文檔內(nèi)容由python中.docx模塊的Document類讀取,讀取的結(jié)果是分段的,并且每個段落的內(nèi)容是一個document.paragraphs,之后將所有的document.paragraphs規(guī)格化。實驗報告中的內(nèi)容大體包含文本內(nèi)容和程序代碼兩部分,考慮到學(xué)生的實踐項目是小組共同完成的,同組學(xué)生的程序代碼難免相似,且有些代碼中方法名本身的字符數(shù)就很多。因此,為避免重合度虛高,實驗中把所有的英文字符和標點符號過濾掉,僅保留了所要查重的主體內(nèi)容——中文字符,最后將所有讀取到的中文字符連接成字符串并存入.txt文檔中。
按照上述方式進行預(yù)處理后的文檔包括兩種,一種是每個學(xué)生.docx文檔所對應(yīng)的.txt文檔,此文檔命名為“學(xué)號姓名.txt”;另一種是除每個學(xué)生本人之外的所有文檔所生成的.txt文檔,此文檔命名為“學(xué)號姓名all.txt”。前者是為了對比單個學(xué)生之間的作業(yè)重復(fù)度,后者是為了對比學(xué)生本人和除自己之外的其他所有的學(xué)生之間的重合度。
3.3? ?文檔查重
文檔查重是整個系統(tǒng)的核心部分。我們稱需要查重的文檔為目標文檔(Object Document,OD),其中的字符串為目標字符串;與查重文檔相對比的文檔為模式文檔(Pattern Document,PD),其中的字符串為模式字符串。查重分為兩種方式的查重,一種是學(xué)生作業(yè)之間的查重,稱為一類查重;另一種是學(xué)生與除自己之外的所有文檔的查重,稱為二類查重。整個系統(tǒng)的流程圖如圖2。首先讀取OD名,判斷OD名中是否有“all”,由于只對學(xué)生本人的文檔進行查重,所以O(shè)D文檔中需要去除學(xué)生作業(yè)文檔之外的文檔。去除后,接著判斷模式文檔名中是否含有“all”,如果有就把模式文檔名中截取的除“all”之外的字符串(簡稱PD1)與OD名對比,若相同,則進行一類查重;如果沒有“all”則判斷PD名是否等于OD名,相等則說明是學(xué)生自己的作業(yè)與自己的作業(yè)要對比,故將查重率直接x設(shè)置為一個固定數(shù)值,為了便于最高查重率的查看,故將此數(shù)值設(shè)為0;若不等則進行二類查重。
查重流程中的一個關(guān)鍵點是查重算法。此系統(tǒng)的查重算法基于k-gram[6,7]字符串匹配算法。整個查重算法包括一個循環(huán)(Step2至Step9),四個判斷,分別稱為一判斷(Step4至Step9)、二判斷(Step5至Step9)、三判斷(Step6至Step8),四判斷(Step10至Step12)。其中,循環(huán)是從OD文檔中逐個遍歷單個字符;一判斷是用于判斷所讀K-String的長度是否大于等于窗口大小(窗口大小可根據(jù)實際情況自己定義);二判斷是判斷K-String是否對PD字符串進行切割,沒有切割則結(jié)果等于1,此時證明該K-String是不重復(fù)的,否則的話就表明該K-String是重復(fù)的,當重復(fù)時需要對轉(zhuǎn)換標志flag進行轉(zhuǎn)換將其變?yōu)門rue;當不重復(fù)時,執(zhí)行三判斷,判斷flag是否為真,為真則將證明除最后一位之外的K-String是重復(fù)的內(nèi)容,故將其追加到重復(fù)內(nèi)容的字符串中,反之,表明當前K-String的首位是不重復(fù)內(nèi)容,故將其記入不重復(fù)的內(nèi)容中。循環(huán)結(jié)束后,OD文檔中會剩下長度不夠窗口大小的未讀字符串,此時執(zhí)行四判斷,對剩余字符串進行處理。具體算法如下:
上述步驟中,Step7和Step8是兩個主要步驟,Step7之前的Step5判斷出現(xiàn)了不一樣的字符,而Step6的判斷說明當前K-String是重復(fù)的,所以執(zhí)行了Step7,這表明當前比較的重復(fù)內(nèi)容到這里已經(jīng)結(jié)束,故在Step7中開始執(zhí)行下一輪的新比較。另外,Step7中的重復(fù)內(nèi)容DupText內(nèi)容的前后增加開頭標志和結(jié)尾標志,是為了使得重復(fù)內(nèi)容存入重復(fù)記錄文檔中時,方便教師的查看,更容易找出學(xué)生重復(fù)的內(nèi)容,從而有針對性地評判每個學(xué)生的作業(yè)。Step8之前的Step5判斷出現(xiàn)了不一樣的字符,而Step6的判斷說明當前K-String是不重復(fù)的,所以執(zhí)行了Step8,這表明截至目前K-String的內(nèi)容都不是重復(fù)的,故在Step8中將窗口后移一位。查重完成之后,將計算得到的每個學(xué)生作業(yè)文檔的總字數(shù)、有效字數(shù)、重復(fù)字數(shù),以及兩類查重的重復(fù)率寫入.csv格式的文檔中,并將每次記錄的查重詳情記錄到一個.txt文檔中。
3.4? ?教師審查
教師的審查旨在查看學(xué)生作業(yè)的質(zhì)量,便于進一步分析教學(xué)質(zhì)量。智能查重系統(tǒng)最終得到的是一個.csv格式的文檔和一個查重內(nèi)容記錄的.txt文檔。其中教師可用個人計算機中的Excel軟件打開.csv文檔查看各個學(xué)生之間的重復(fù)率,以及學(xué)生本人與除本人之外的所有學(xué)生的重復(fù)率。
在軟件工程課程中對兩個班級實驗報告的查重結(jié)果如圖3所示。教師可用計算機中的記事本打開.txt文檔,查看學(xué)生重復(fù)的內(nèi)容,實驗結(jié)果如圖4所示。由于數(shù)據(jù)較多,圖3和圖4中僅截取了部分結(jié)果。通過查重結(jié)果,教師重點對那些重復(fù)率小的作業(yè)進行查看,從而篩選出高質(zhì)量的原創(chuàng)性作業(yè)。
4? ?結(jié)果分析(Result analysis)
5? ?結(jié)論(Conclusion)
根據(jù)軟件工程課程實際教學(xué)情況,本文提出了面向?qū)嵺`教學(xué)的作業(yè)查重系統(tǒng)。系統(tǒng)利用現(xiàn)有的計算機進行作業(yè)的查重及分析,通過基于k-gram的字符串匹配算法得到作業(yè)的重復(fù)率。教學(xué)中,系統(tǒng)不僅能夠提高實踐教學(xué)的人力成本、時間成本、教學(xué)效果和評價質(zhì)量,同時可以減少人工審查作業(yè)中的主觀因素。整個系統(tǒng)無須數(shù)據(jù)庫、無須聯(lián)網(wǎng),不僅最小化了軟硬件開發(fā)及安全方面的投入,而且部署較為簡單,易于上手,使用方便,適合大范圍推廣。后期可以將該系統(tǒng)生成可直接運行的程序,并增加可視化界面,使系統(tǒng)更易操作。
參考文獻(References)
[1] Sidik Soleman,Astushi Fujii.Toward plagiarism detection using citation networks[C].Twelfth International Conference on Digital Information Management.IEEE,2017:12-14.
[2] Ullah Farhan,Wang Junfeng,F(xiàn)arhan Muhammad,et al.Plagiarism detection in students' programming assignments basedon semantics:multimedia e-learning based smart assessment methodology[J].Multimedia Tools & Applications,2018(2):1-18.
[3] 劉效仁.清華首推作業(yè)查重旨在鼓勵原創(chuàng)[N].寧波日報,2018-09-20(010).
[4] 沙有闖,袁明磊,李晨誠.新工科背景下移動應(yīng)用開發(fā)人才培養(yǎng)與質(zhì)量保證體系研究[J].軟件工程,2017,20(12):60-62;53.
[5] 陳素琴.遠程開放教育課程實踐性教學(xué)的研究[D].南京師范大學(xué),2007.
[6] 殷丹平.基于CNN的代碼相似度檢測研究與代碼查重系統(tǒng)[D].北京郵電大學(xué),2018.
[7] Saul Schleimer,Daniel S.Wilkerson,Alex Aiken.Winnowing:Local Algorithms for Document Fingerprinting[C].Proceedings of the 2003 ACM SIGMOD International Conference on Management of Data,2003:76-85.