潘理虎 張雷 解丹 陳立潮 趙淑芳
摘? 要:隨著高等教育從知識(shí)傳授到能力培養(yǎng)的轉(zhuǎn)型,實(shí)踐教學(xué)成為大學(xué)教師普遍重視的人才培養(yǎng)環(huán)節(jié)。實(shí)踐教學(xué)的主要難點(diǎn)在于教學(xué)過(guò)程的管控和形成性考核的質(zhì)量。作業(yè)查重系統(tǒng)是降低教師負(fù)擔(dān),提高過(guò)程監(jiān)控質(zhì)量的有效工具。研發(fā)了一種便捷、低成本且無(wú)須數(shù)據(jù)庫(kù)的作業(yè)查重系統(tǒng),采用k-gram字符串匹配算法,逐字符的對(duì)比作業(yè)文檔之間的字符串,當(dāng)文檔間相同的字符串長(zhǎng)度達(dá)到閾值時(shí),則計(jì)入重復(fù)度中。在軟件工程課程的教學(xué)實(shí)踐中的應(yīng)用結(jié)果表明,教師可結(jié)合系統(tǒng)查重結(jié)果,對(duì)教學(xué)情況進(jìn)行分析,從而實(shí)現(xiàn)差異化作業(yè)質(zhì)量監(jiān)控,提高課程質(zhì)量、促進(jìn)學(xué)風(fēng)建設(shè)。
關(guān)鍵詞:作業(yè)查重系統(tǒng);實(shí)踐教學(xué);人機(jī)結(jié)合;學(xué)風(fēng)建設(shè)
中圖分類號(hào):TP311.5? ? ?文獻(xiàn)標(biāo)識(shí)碼: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àn)優(yōu)勢(shì),但對(duì)公平公正的評(píng)估學(xué)生作業(yè)仍具有很強(qiáng)的不確定性,且不能做到量化分析。近年來(lái),論文查重已經(jīng)成為高校中強(qiáng)化學(xué)術(shù)規(guī)范的重要舉措,大部分學(xué)校都已購(gòu)買了論文查重的新服務(wù),但卻很少有學(xué)校進(jìn)行作業(yè)查重[2]。2018年9月清華發(fā)布《關(guān)于提供作業(yè)查重服務(wù)的通知》[3],標(biāo)志著清華將采用中國(guó)知網(wǎng)檢測(cè)系統(tǒng)進(jìn)行作業(yè)查重??紤]到使用知網(wǎng)檢測(cè)系統(tǒng)進(jìn)行作業(yè)查重不具有針對(duì)性,且耗費(fèi)較高,于是在軟件工程課程的實(shí)際教學(xué)過(guò)程中,開(kāi)發(fā)了一種簡(jiǎn)便的查重系統(tǒng),既可針對(duì)軟件工程課程所提交的作業(yè)進(jìn)行有針對(duì)的查重,又可節(jié)省教師在日常審查作業(yè)中所耗費(fèi)的大量時(shí)間以提高教師的教學(xué)效率和質(zhì)量。
2? ?作業(yè)中存在的問(wèn)題(Problems in the assignment)
軟件工程課程是計(jì)算機(jī)及相關(guān)專業(yè)中的一門重要課程,對(duì)于培養(yǎng)新工科人才具有重要意義[4]。在軟件工程教學(xué)過(guò)程中,實(shí)踐教學(xué)占據(jù)著重要的一部分,要充分發(fā)揮學(xué)生對(duì)該課程的主觀能動(dòng)性,就需要布置一些作業(yè),以促進(jìn)學(xué)生自我學(xué)習(xí),自我思考。目前,軟件工程課程的平時(shí)作業(yè)中存在數(shù)量多、難存檔、難細(xì)評(píng)等問(wèn)題[5]。一方面,學(xué)生們的作業(yè)大多以紙質(zhì)版保存,不易長(zhǎng)期存檔,且學(xué)生們的作業(yè)存在相互抄襲現(xiàn)象,更有甚者,不進(jìn)行思考,也不進(jìn)行資料查找,直接將同學(xué)的作業(yè)進(jìn)行復(fù)制粘貼,或改成自己的文件名便提交給教師。長(zhǎng)期維持這種情況,不利于培養(yǎng)學(xué)生正確的學(xué)術(shù)規(guī)范,以至于在畢業(yè)的時(shí)候,習(xí)慣抄襲,最終導(dǎo)致難以畢業(yè)。另一方面,一個(gè)教師往往教授多門課程或多個(gè)班級(jí),在一對(duì)多的狀態(tài)下,學(xué)生提交的作業(yè)數(shù)量便成倍增長(zhǎng)、增加了教師的工作量。當(dāng)工作量很大時(shí),教師便很難對(duì)學(xué)生的作業(yè)一一細(xì)評(píng),尤其是難以對(duì)原創(chuàng)作業(yè)給予合理、公正的分?jǐn)?shù)。
為解決上述問(wèn)題,在軟件工程實(shí)際教學(xué)中,開(kāi)發(fā)了作業(yè)查重系統(tǒng)。該系統(tǒng)充分利用了現(xiàn)有的教學(xué)資源,可以大幅降低教學(xué)成本,在教師教學(xué)經(jīng)費(fèi)不充裕的情況下能夠大范圍的應(yīng)用。
3? ?總體方案(Overall scheme)
軟件工程課程中的作業(yè)有許多形式,如課后題、案例分析等。由于軟件工程的實(shí)踐性較強(qiáng),大多數(shù)院校在本課程中都有項(xiàng)目實(shí)驗(yàn)的實(shí)踐環(huán)節(jié),而該實(shí)踐環(huán)節(jié)的成果一般包括項(xiàng)目的程序代碼和項(xiàng)目的實(shí)驗(yàn)報(bào)告。本系統(tǒng)以項(xiàng)目實(shí)驗(yàn)報(bào)告為例,對(duì)整個(gè)查重系統(tǒng)的流程進(jìn)行介紹。具體的查重流程如圖1所示,包括作業(yè)收集、作業(yè)預(yù)處理、作業(yè)查重、教師審查和結(jié)果分析。
3.1? ?作業(yè)收集
軟件工程課程實(shí)際教學(xué)中,為發(fā)揮學(xué)生的團(tuán)隊(duì)協(xié)作能力和培養(yǎng)學(xué)生的溝通交流能力,將所教授的16級(jí)計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的兩個(gè)班級(jí)分組進(jìn)行項(xiàng)目實(shí)踐。由于兩個(gè)班級(jí)均有41名同學(xué),因而將每個(gè)班級(jí)的學(xué)生分為七個(gè)五人組和一個(gè)六人組。學(xué)生以小組進(jìn)行實(shí)踐,每個(gè)人均要提交一份實(shí)驗(yàn)報(bào)告。這樣可以避免同組中一些能力弱的同學(xué)在項(xiàng)目實(shí)踐過(guò)程中,不參與或很少參與項(xiàng)目實(shí)踐,僅依賴能力強(qiáng)的同學(xué)進(jìn)行項(xiàng)目開(kāi)發(fā)和文檔書寫,但最終卻能夠憑借他人努力的成果通過(guò)課程考核。
傳統(tǒng)的作業(yè)收集方式是由班長(zhǎng)或?qū)W習(xí)委員將作業(yè)收齊,之后再統(tǒng)一提交給教師。這種收集作業(yè)的方式便于管理且省時(shí)省力。故本課程仍然采用這種收集作業(yè)的方式,但是為了避免因處理不同格式的文件而增加系統(tǒng)的復(fù)雜性,也為了便于教師對(duì)作業(yè)的審查,故要求每人的作業(yè)以統(tǒng)一的格式進(jìn)行命名。實(shí)驗(yàn)報(bào)告的命名統(tǒng)一為“學(xué)號(hào)姓名”,且文檔的后綴名統(tǒng)一為.docx,如“20160103張三.docx”。所有的學(xué)生將自己電子版的實(shí)驗(yàn)報(bào)告提交給學(xué)習(xí)委員后,學(xué)習(xí)委員初步對(duì)每個(gè)學(xué)生的作業(yè)命名格式進(jìn)行檢查,檢查無(wú)誤后將所有同學(xué)的文檔放入一個(gè)文件夾中,并將文件夾命名為“班級(jí)作業(yè)名稱”,如“計(jì)算機(jī)科學(xué)與技術(shù)一班實(shí)驗(yàn)報(bào)告”。整個(gè)文檔壓縮打包后發(fā)送到教師郵箱提交給教師。這樣既方便教師處理作業(yè),也便于在文檔丟失的情況下進(jìn)行找回。
3.2? ?文檔預(yù)處理
教師收到提交的作業(yè)后,從郵箱下載到個(gè)人的計(jì)算機(jī)上,進(jìn)行保存。之后查重系統(tǒng)便對(duì)實(shí)驗(yàn)報(bào)告文檔進(jìn)行預(yù)處理,也就是將文檔格式處理為指定的格式,并對(duì)文檔內(nèi)容進(jìn)行處理。預(yù)處理過(guò)程中,文檔內(nèi)容由python中.docx模塊的Document類讀取,讀取的結(jié)果是分段的,并且每個(gè)段落的內(nèi)容是一個(gè)document.paragraphs,之后將所有的document.paragraphs規(guī)格化。實(shí)驗(yàn)報(bào)告中的內(nèi)容大體包含文本內(nèi)容和程序代碼兩部分,考慮到學(xué)生的實(shí)踐項(xiàng)目是小組共同完成的,同組學(xué)生的程序代碼難免相似,且有些代碼中方法名本身的字符數(shù)就很多。因此,為避免重合度虛高,實(shí)驗(yàn)中把所有的英文字符和標(biāo)點(diǎn)符號(hào)過(guò)濾掉,僅保留了所要查重的主體內(nèi)容——中文字符,最后將所有讀取到的中文字符連接成字符串并存入.txt文檔中。
按照上述方式進(jìn)行預(yù)處理后的文檔包括兩種,一種是每個(gè)學(xué)生.docx文檔所對(duì)應(yīng)的.txt文檔,此文檔命名為“學(xué)號(hào)姓名.txt”;另一種是除每個(gè)學(xué)生本人之外的所有文檔所生成的.txt文檔,此文檔命名為“學(xué)號(hào)姓名all.txt”。前者是為了對(duì)比單個(gè)學(xué)生之間的作業(yè)重復(fù)度,后者是為了對(duì)比學(xué)生本人和除自己之外的其他所有的學(xué)生之間的重合度。
3.3? ?文檔查重
文檔查重是整個(gè)系統(tǒng)的核心部分。我們稱需要查重的文檔為目標(biāo)文檔(Object Document,OD),其中的字符串為目標(biāo)字符串;與查重文檔相對(duì)比的文檔為模式文檔(Pattern Document,PD),其中的字符串為模式字符串。查重分為兩種方式的查重,一種是學(xué)生作業(yè)之間的查重,稱為一類查重;另一種是學(xué)生與除自己之外的所有文檔的查重,稱為二類查重。整個(gè)系統(tǒng)的流程圖如圖2。首先讀取OD名,判斷OD名中是否有“all”,由于只對(duì)學(xué)生本人的文檔進(jìn)行查重,所以O(shè)D文檔中需要去除學(xué)生作業(yè)文檔之外的文檔。去除后,接著判斷模式文檔名中是否含有“all”,如果有就把模式文檔名中截取的除“all”之外的字符串(簡(jiǎn)稱PD1)與OD名對(duì)比,若相同,則進(jìn)行一類查重;如果沒(méi)有“all”則判斷PD名是否等于OD名,相等則說(shuō)明是學(xué)生自己的作業(yè)與自己的作業(yè)要對(duì)比,故將查重率直接x設(shè)置為一個(gè)固定數(shù)值,為了便于最高查重率的查看,故將此數(shù)值設(shè)為0;若不等則進(jìn)行二類查重。
查重流程中的一個(gè)關(guān)鍵點(diǎn)是查重算法。此系統(tǒng)的查重算法基于k-gram[6,7]字符串匹配算法。整個(gè)查重算法包括一個(gè)循環(huán)(Step2至Step9),四個(gè)判斷,分別稱為一判斷(Step4至Step9)、二判斷(Step5至Step9)、三判斷(Step6至Step8),四判斷(Step10至Step12)。其中,循環(huán)是從OD文檔中逐個(gè)遍歷單個(gè)字符;一判斷是用于判斷所讀K-String的長(zhǎng)度是否大于等于窗口大?。ù翱诖笮】筛鶕?jù)實(shí)際情況自己定義);二判斷是判斷K-String是否對(duì)PD字符串進(jìn)行切割,沒(méi)有切割則結(jié)果等于1,此時(shí)證明該K-String是不重復(fù)的,否則的話就表明該K-String是重復(fù)的,當(dāng)重復(fù)時(shí)需要對(duì)轉(zhuǎn)換標(biāo)志flag進(jìn)行轉(zhuǎn)換將其變?yōu)門rue;當(dāng)不重復(fù)時(shí),執(zhí)行三判斷,判斷flag是否為真,為真則將證明除最后一位之外的K-String是重復(fù)的內(nèi)容,故將其追加到重復(fù)內(nèi)容的字符串中,反之,表明當(dāng)前K-String的首位是不重復(fù)內(nèi)容,故將其記入不重復(fù)的內(nèi)容中。循環(huán)結(jié)束后,OD文檔中會(huì)剩下長(zhǎng)度不夠窗口大小的未讀字符串,此時(shí)執(zhí)行四判斷,對(duì)剩余字符串進(jìn)行處理。具體算法如下:
上述步驟中,Step7和Step8是兩個(gè)主要步驟,Step7之前的Step5判斷出現(xiàn)了不一樣的字符,而Step6的判斷說(shuō)明當(dāng)前K-String是重復(fù)的,所以執(zhí)行了Step7,這表明當(dāng)前比較的重復(fù)內(nèi)容到這里已經(jīng)結(jié)束,故在Step7中開(kāi)始執(zhí)行下一輪的新比較。另外,Step7中的重復(fù)內(nèi)容DupText內(nèi)容的前后增加開(kāi)頭標(biāo)志和結(jié)尾標(biāo)志,是為了使得重復(fù)內(nèi)容存入重復(fù)記錄文檔中時(shí),方便教師的查看,更容易找出學(xué)生重復(fù)的內(nèi)容,從而有針對(duì)性地評(píng)判每個(gè)學(xué)生的作業(yè)。Step8之前的Step5判斷出現(xiàn)了不一樣的字符,而Step6的判斷說(shuō)明當(dāng)前K-String是不重復(fù)的,所以執(zhí)行了Step8,這表明截至目前K-String的內(nèi)容都不是重復(fù)的,故在Step8中將窗口后移一位。查重完成之后,將計(jì)算得到的每個(gè)學(xué)生作業(yè)文檔的總字?jǐn)?shù)、有效字?jǐn)?shù)、重復(fù)字?jǐn)?shù),以及兩類查重的重復(fù)率寫入.csv格式的文檔中,并將每次記錄的查重詳情記錄到一個(gè).txt文檔中。
3.4? ?教師審查
教師的審查旨在查看學(xué)生作業(yè)的質(zhì)量,便于進(jìn)一步分析教學(xué)質(zhì)量。智能查重系統(tǒng)最終得到的是一個(gè).csv格式的文檔和一個(gè)查重內(nèi)容記錄的.txt文檔。其中教師可用個(gè)人計(jì)算機(jī)中的Excel軟件打開(kāi).csv文檔查看各個(gè)學(xué)生之間的重復(fù)率,以及學(xué)生本人與除本人之外的所有學(xué)生的重復(fù)率。
在軟件工程課程中對(duì)兩個(gè)班級(jí)實(shí)驗(yàn)報(bào)告的查重結(jié)果如圖3所示。教師可用計(jì)算機(jī)中的記事本打開(kāi).txt文檔,查看學(xué)生重復(fù)的內(nèi)容,實(shí)驗(yàn)結(jié)果如圖4所示。由于數(shù)據(jù)較多,圖3和圖4中僅截取了部分結(jié)果。通過(guò)查重結(jié)果,教師重點(diǎn)對(duì)那些重復(fù)率小的作業(yè)進(jìn)行查看,從而篩選出高質(zhì)量的原創(chuàng)性作業(yè)。
4? ?結(jié)果分析(Result analysis)
5? ?結(jié)論(Conclusion)
根據(jù)軟件工程課程實(shí)際教學(xué)情況,本文提出了面向?qū)嵺`教學(xué)的作業(yè)查重系統(tǒng)。系統(tǒng)利用現(xiàn)有的計(jì)算機(jī)進(jìn)行作業(yè)的查重及分析,通過(guò)基于k-gram的字符串匹配算法得到作業(yè)的重復(fù)率。教學(xué)中,系統(tǒng)不僅能夠提高實(shí)踐教學(xué)的人力成本、時(shí)間成本、教學(xué)效果和評(píng)價(jià)質(zhì)量,同時(shí)可以減少人工審查作業(yè)中的主觀因素。整個(gè)系統(tǒng)無(wú)須數(shù)據(jù)庫(kù)、無(wú)須聯(lián)網(wǎng),不僅最小化了軟硬件開(kāi)發(fā)及安全方面的投入,而且部署較為簡(jiǎn)單,易于上手,使用方便,適合大范圍推廣。后期可以將該系統(tǒng)生成可直接運(yùn)行的程序,并增加可視化界面,使系統(tǒng)更易操作。
參考文獻(xiàn)(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è)查重旨在鼓勵(lì)原創(chuàng)[N].寧波日?qǐng)?bào),2018-09-20(010).
[4] 沙有闖,袁明磊,李晨誠(chéng).新工科背景下移動(dòng)應(yīng)用開(kāi)發(fā)人才培養(yǎng)與質(zhì)量保證體系研究[J].軟件工程,2017,20(12):60-62;53.
[5] 陳素琴.遠(yuǎn)程開(kāi)放教育課程實(shí)踐性教學(xué)的研究[D].南京師范大學(xué),2007.
[6] 殷丹平.基于CNN的代碼相似度檢測(cè)研究與代碼查重系統(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.