Hi:歡迎來到中國論文網     

所有論文科目分類

中國論文網 > 免費論文 > 計算機論文 > 計算機軟件 >

基于Java反射機制的習題自動評分模型構建

作者:2018-12-07 01:01文章來源:未知

  摘    要: 目前大部分的考試自動評分系統針對的主要還是客觀題的自動評測, 而對于一些主觀題則仍然不夠完善, 這些技術的實現是大部分在線考試和自動化閱卷系統的關鍵所在。大部分的研究人員主要通過開發一個中間表示形式來對數據源進行分析和匹配, 然后根據既定的算法進行評分, 但這類方法實現技術復雜, 計算機系統的負載比較大, 而且靈活性也不夠。以計算機語言編程題為例, 研究和探討了一種基于Java反射機制的自動評分模型, 通過反射機制對源代碼的執行結果進行分析, 融合程序的查錯糾錯技術以及正則表達式來實現匹配評分, 實現了Java程序主觀編程題的自動評分技術和原型系統。

  關鍵詞: 自動評分; Java反射機制; XML技術; 程序查錯; 局部糾錯;

基于Java反射機制的習題自動評分模型構建

  1、 概述

  在當前的很多計算機類型考試中, 很多都應用了自動評分系統, 既減輕了改卷老師的負擔, 也大幅度提高了工作效率。但在一些編程類的課程考試中, 由于存在了非常多的主觀編程題目, 這些主觀題由于現階段沒有一個比較成熟的技術可以依賴, 大部分還是采用的人工批改手段[1]。這些技術的實現是大部分在線考試和自動化閱卷系統的關鍵所在, 因此大部分的研究人員主要通過開發一個中間表示形式來對數據源進行分析和匹配, 將整個程序作為整體來進行靜態代碼分析, 然后根據既定的算法進行評分, 但這類方法實現技術復雜, 計算機系統的負載比較大, 而且靈活性也不夠。如何通過現有的計算機技術來實現編程主觀題自動評分, 既兼顧評分結果, 又兼顧靈活評分, 既易實現, 又能夠最大化兼顧通用, 是研究的難點。以計算機語言編程題為例, 研究和探討一種基于Java反射機制的自動評分模型, 通過反射機制對源代碼的執行結果進行分析, 融合程序的查錯糾錯技術以及正則表達式來實現匹配評分, 實現了Java程序主觀編程題的自動評分技術和原型系統, 具備一定的理論和現實意義。

  2、 Java反射機制

  Java反射機制主要是通過調用程序中已知的類來進行編譯, 然后根據編譯結果來判斷程序的執行情況, 然后根據執行情況來與后續的評分標準進行匹配后進行打分。反射機制通過調用Java中的java.lang.reglect包, 由這個包里面的4個類來實現, 基本思想就是編譯學生的程序, 通過獲取類名, 類的成員變量, 構造方法及普通的方法, Java的反射包中包含了要獲取的相關參數和方法, 可以比較容易獲取需要的信息[2]。

  要實現反射的首要條件是獲取入口類, 反射機制首先調用Class類來創建一個類的對象, 然后通過前面所提到的其他幾個類以及反射APIs動態處理來獲取這個類的相關內部信息, 包括該類的變量、方法以及屬性等[3]。具體一點來說就是, 程序中的任意一個通過程序編譯的Java類, 加載到虛擬機后, 都被表示為Class類的對象。該對象提供了比較常用的訪問器來獲取Class類所表示的對象, 如為了獲取構造方法, 可使用getDec laredConstructor () 。再利用這些對象來反射獲取相關的類成員的具體信息。比如可以通過Method對象來調用getModifiers () 方法與getReturnType () 方法就可以獲取方法的修飾符和返回類型。同樣, 也可以通過Field對象調用get (Object boj) 與set (Object obj1, Object obj2) , 來訪問變量或者修改變量值。

  3、 正則表達式

  由于程序編程題目屬于偏主觀的題目, 實現的方法可以多種多樣, 也就是說沒有所謂的標準答案。但是在出題過程中, 教師一般會指定成員變量、方法名、構造方法參數等基本信息, 對實現方法的功能進行要求, 不會限定具體實現方式, 這時正則表達式則可以通過表達式來對考生程序和相關標準答案進行復雜運算匹配, 然后根據運算結果來進行打分, 靈活而且高效。

  Java中的正則表達式分為Pattern和Match而兩個類來實現, 他們都封裝在java.util.regex包中, Pattern類是對正則表達式進行編譯的, Match類則是對正則表達式進行匹配的, 也就是用來檢索結果的[4]。主要步驟如下:

  (1) 構造一個可以實現字符串編譯的正則表達式模式對象, 通過調用Pattern類的compile (string string) 來實現, 其中string參數為代表正則表達式的字符串。

  (2) 調用Matcher類中的matcher (CharSequence mstring) 方法來對上一個步驟的Pattern對象進行匹配對象創建, 參數表示待匹配字符。

  (3) 假設上一個步驟所產生的Matcher對象為mMatcher, 則使用mMatcher對象進行結果的搜索匹配。Matcher對象提供了以下幾個常用的方法:

  1) boolean find () :任意目標的匹配。

  2) boolean find (int begin) :用來對指定的位置開始進行字符串匹配查找。

  3) int begin:返回匹配目標字符串的開始位置。

  4) int end () :返回匹配目標字符串的結束位置。

  5) String string () :返回當前匹配的字符串內容。

  4、 XML技術

  在自動化評分系統中, 通過Java反射機制來調用源程序進行編譯后再將結果通過正則表達式來與標準答案進行匹配。因此, 標準答案的存儲和表達方式不僅要準確, 還要靈活多樣, 符合各種不同類型的參考答案。這就需要一種可以描述各種復雜關系的通用數據格式。選擇了XML文檔作為標準答案的存儲格式, 簡單、方便、通用, 內容和格式分離。

  4.1、 XML驗證

  為了保證XML文件的有效性, 需要對XML文件的數據結構進行約束, 通過調用約束格式來對XML文檔進行驗證來確保有效性。主要通過DTD和XML Schema文件來保存XML格式結構。前者有獨立的語法結構, 后者則是特殊的XML文件, 也是通過XML語法來描述約束條件。

  4.1.1、 DTD

  主要用于對XML內容的格式進行驗證, 以確保XML內容的嚴謹性和正確性。但由于缺少對數據類型和命名空間的支持, 對XML格式的限定有限[5]。

  4.1.2、 XML Schem

  XML Schema是用來描述XML文檔結構的, 本身也是使用XML文檔結構, 所以不需要重新學習一門語言, 與DTD出于同樣的目的產生, 但是功能更為強大[6]。

  4.2、 XML解析

  由于采用XML文檔保存答案, 在進行答案匹配的時候需要從XML文檔中獲取答案內容。這里往往會用到XML的解析技術, 主要包括了DOM和SAX兩種。

  (1) DOM:XML DOM (XML Document Object Model) 定義了訪問和操作XML文檔的標準方法。通過該方法可以將XML中的數據以樹形的結構放入到內存中, 然后通過程序對該樹進行訪問以方便獲取所需要的數據。由于該技術需要把所有內容先放到樹里面, 如果XML文件內容較多時會占用較多內存空間, 影響計算機系統的工作效率[7]。

  (2) SAX:全稱Simple API for XML, 是一個軟件包, 提供了外部的API接口, 允許程序調用后對XML文件進行讀取[8]。SAX不需要對整個XML文檔進行整體讀取, 實行的是逐行掃描, 在掃描的同時進行數據解析。這種方法相對于DOM來說更加方便, 特別是對于大數據量的XML文檔, 由于不需要把所有數據導入內存, SAX的效率更高一籌。

  4.3、 XML查詢

  XML解析技術是對XML文檔進行整體的讀取, 如果需要對XML內的數據進行查詢匹配的話則會用到相對應的查詢技術, 主要包含兩種:XPath和XQuery。

  (1) XPath:確定文檔中某部分的具體位置, 主要通過它來實現, 它的返回值可能是節點, 節點集合, 原子值, 以及節點和原子值的混合等[9]。XPath的核心是XML文檔的路徑表達式。通過XPath所建立的節點路徑, 應用可以沿著這些路徑節點逐一進行比較查找, 以獲取所需的數據內容。

  (2) XQuery:是在Xpath技術的基礎上面發展出來的用來, 是對XPath的擴展, 其功能比較全[10]。XPath查詢返回的是一個經過排序的節點序列, 如果需要獲取節點內容還需要通過遍歷來獲取節點數據。而XQuery返回的則是完整的節點集合, 數據就包含在集合本身, 通過程序可以非常方便地獲取。同時, XQuery提供了更加豐富的表達式類型和數據類型, 還有模式驗證機制等。

  5、 原型設計

  通過對以上幾種技術的描述, 為了驗證自動評分技術的可行性和準確性, 設計并實現了一個系統原型, 該原型在Eclipse平臺進行開發, 采用了Java程序語言進行編寫。系統設計采用了MVC三層結構。評分方式采用了靜態分析以及動態模擬執行代碼分析兩種, 客觀題主要通過靜態方式判分, 主觀編程題則通過Java的反射機制來進行執行驗證。原型系統主要核心功能就在于自動評分, 采用了上文所述的Java反射機制, 程序查錯糾錯技術、XML文檔存儲技術以及正則表達式匹配評分技術結合來實現。系統首先讀取考試題中考生所寫的程序源代碼, 調用Java反射機制實現對程序的編譯執行, 并將執行結果讀取出來放入內存, 題目參考答案保存到XML文檔中, 不同答案的組合分數不同, 事先需要確定組合類型和對應分數, 然后將規則寫成正則表達式。然后執行結果與XML中參考答案進行匹配組合, 獲取到最終表達式后通過正則表達式給出最終的分數。通過多次測試, 該方式在準確性方面比較高, 只要結果的XML文件考慮周全, 與人工評分的誤差可忽略不計, 但在通用性方面還有待提高, 也就是針對不同類型的題目, 參考答案的XML文件編寫通用性不足, 基本達到最初的驗證目標, 如果題庫建設比較成熟之后, 采用此種評分方式, 其效率還是遠超手動評分的。

  6、 結語

  通過對幾個關鍵性技術的分析和研究, 可以推斷可實現基于Java的主觀編程題的自動評分, 并通過組建原型系統進行了實現驗證。系統的評分方法采用了Java語言本身獨特的反射機制結合其他相關技術可以針對Java編程題目實現執行編譯后通過對答案的組合匹配實現自動化評分, 設計思路相對比較新穎, 可為自動評分系統提供一個具備參考意義的案例。由于只適用于Java語言, 也為其他編程語言提供了一個思路, 未來在通用性上還有待繼續提高。

  參考文獻:

  [1]牛永潔, 張曉光.關于程序設計題自動評分方法的研究.信息技術, 2010, (11) :64-67.
  [2]段漢周, 凌捷, 鄭衍衡. Visual Basic程序設計考核自動評閱系統中若干問題的研究.計算機工程, 2001, 27 (4) :167-168.
  [3]喬善平.基于智能移動Agent的C語言考試系統.計算機工程與科學, 2004, (4) :29-31.
  [4]王甜甜.基于語義相似度的編程題自動評分方法的研究:[碩士論文].黑龍江:計算機科學與技術系, 2005.
  [5]馬培軍, 王甜甜, 蘇小紅.基于程序理解的編程題自動評分方法.計算機研究與發展, 2009, 46 (7) :63-65.
  [6]王倩, 蘇小紅, 馬培軍.有語法錯誤的編程題自動評分方法研究——用局部語法分析和采分點匹配實現, 計算機工程與應用, 2010, 46 (17) :58-60.
  [7]婁不夜. Java編程題自動判分軟件框架的設計.計算機工程與設計, 2010, 31 (24) :74-76.
  [8]佘石泉, 周肆清.正則表達式在編程題自動閱卷中的應用.計算機技術與發展, 2007, 17 (7) :244-246.
  [9]于淑香. C語言程序設計題自動評分系統的設計與實現.沙洲職業工學院學報, 2008, 11 (2) :10-13.
  [10]李海華.基于Java的XML加解密系統的設計與實現.計算機技術與發展, 2011, (8) :45-47.

最近相關

中國論文網

最新更新

熱門推薦

[人文社科]英語廣告語的特點與翻譯原則
這是一篇關于英語廣告語的特點與翻譯原則的文章,掌握廣告語的語言特點和翻譯原則將有助于目標語讀者了解產品功能,詮釋...[全文]
[人文社科]基于跨文化的旅游英語翻譯原則
這是一篇關于基于跨文化的旅游英語翻譯原則的文章,跨文化視角下的旅游英語翻譯,我們應嘗試從讀者的主觀性理解以及本地...[全文]
[人文社科]中國傳統節日中秋節的英譯
這是一篇關于中國傳統節日中秋節的英譯的文章,中國傳統文化的翻譯,是隨著時代變化而隨之變化的。傳統節日的中英翻譯...[全文]
[人文社科]高職英語翻譯教學中的問題與提升措施
這是一篇關于高職英語翻譯教學中的問題與提升措施的文章,為了提升英語翻譯教學的有效性,教師要不斷地提升自身的綜合素...[全文]
[理工論文]在現代城市建設中測繪工程中的作用
這是一篇關于在現代城市建設中測繪工程中的作用的文章,要需不斷對測繪技術、測繪設備進行研究開發,不斷革新,只有這樣...[全文]
[理工論文]農業綜合水利項目建設管理問題與解決措施
這是一篇關于農業綜合水利項目建設管理問題與解決措施的文章,一定要提高設計人員對水利工程項目建設規劃設計的重視度...[全文]

熱門標簽

成上人色爱