楊永瑞 溫志萍 孫雅 吳泳
摘 要: 自動閱卷算法一直以來都是各個在線考試系統(tǒng)的重點和難點。這里設(shè)計的自動閱卷算法通過解析學(xué)生答案中關(guān)鍵字,并計算這些關(guān)鍵字的排布與答案關(guān)鍵字的排布的相似度,給出一個相對合理的分值。經(jīng)過反復(fù)測試調(diào)優(yōu),該算法提供的分值已經(jīng)具有相當(dāng)好的可參考性。
關(guān)鍵詞: 自動閱卷; 關(guān)鍵字; 相似度; 可參考性
中圖分類號:TP311.52 文獻(xiàn)標(biāo)志碼:A 文章編號:1006-8228(2015)06-45-03
Abstract: Automatic scoring algorithm is always the emphases and difficulties of various online examination systems. The automatic scoring algorithm we designed gives a reasonable score through the keywords analysis of student answer, the similarity calculation between the arrangement of these keywords and the arrangement of answer keywords. After repeated testing and optimizing, the scores provided by the algorithm have been a very good reference.
Key words: automatic marking; key words analysis; similarity; reference
0 引言
實現(xiàn)自動閱卷需要解決以下幾個問題。
首先,計算機(jī)應(yīng)該能夠像人一樣讀懂參考答案和學(xué)生答案,這需要計算機(jī)具有一定的常識和領(lǐng)域知識。而計算機(jī)并沒有主動掌握這些常識和領(lǐng)域知識的能力,這需要人類把這些知識錄入到計算機(jī)中去。而知識的錄入又涉及到知識的表示問題。
其次,人在閱讀語句的時候,由于其自身所擁有的背景知識,能夠知道語句中哪些是詞哪些不是詞,而計算機(jī)并沒有自動識別句子中的詞的功能,這就需要人工構(gòu)建相應(yīng)的詞庫,將有可能用到的單詞錄入到計算機(jī)中。這樣,計算機(jī)在處理自然語言語句的時候,可以將語句中若干個字符組成的字符串在詞典中進(jìn)行查詢,如果詞典中有這個字符串,則表明它在自然語言中指的是一個詞,計算機(jī)就將其認(rèn)為是一個詞。所以,計算機(jī)還應(yīng)該具有識別句子中單詞的能力,也就是分詞的能力。
接著,人在閱卷主觀題的時候,給分的過程包括識別出答案語句中的各個成分的過程,也就是在一個語句中哪些成分是必須的,哪些成分是可有可無的。對于句子中必須的成分,把它提取出來作為該句的關(guān)鍵詞匯,對于那些可有可無的成分,則可以將其忽略不計。計算機(jī)若要具有這樣的能力,就需要具有對句子拆分分析的能力,能夠自動分析出句子中的重要成分。
最后,主觀題最終分值的確定依托于學(xué)生答案跟參考答案之間的相似程度,學(xué)生答案越接近參考答案,得分越高;反之,則越低。而且人在閱卷的時候可以容許學(xué)生答案具有一定的隨意性,所以學(xué)生答案不一定非要跟參考答案完全一致,只要意義相近或相同,表達(dá)上沒有錯誤,也可以得到高分。這就需要計算機(jī)能夠處理同義近義現(xiàn)象,當(dāng)學(xué)生答案中的文字跟參考答案不一致時,計算機(jī)可以查看學(xué)生答案中的文字跟參考答案是否相似或相近,然后給出相應(yīng)的分?jǐn)?shù)。
1 自動閱卷算法的思想
本文的主觀題自動閱卷的思想就是模擬上述教師閱卷主觀題的過程。首先我們對考生答案進(jìn)行分句分詞處理,然后對學(xué)生答案進(jìn)行語句分析,識別出答案中重要的成分,之后,將其進(jìn)行關(guān)鍵詞提取,將其中的實詞、動詞抽取出來與標(biāo)準(zhǔn)答案進(jìn)行相似度計算,按照各標(biāo)準(zhǔn)答案關(guān)鍵字在整個試題得分中所占的比例,評定其小分,最后累加答案中各關(guān)鍵字的得分,并適當(dāng)考慮考生答題時的文字組織情況,得到本試題的最終成績。
2 自動閱卷算法的實現(xiàn)流程
主觀題自動閱卷系統(tǒng)的具體流程為:先對學(xué)生答案進(jìn)行分句處理,將由段落組成的答案分成各個子句;接著對答案的各個子句進(jìn)行分詞處理,將各個子句變成詞的序列并對分詞標(biāo)記詞性;再對各個子句進(jìn)行語句分析,分析出語義樹。然后根據(jù)一定的抽取規(guī)則抽取出各個語義樹中的關(guān)鍵詞匯;再按照模糊數(shù)學(xué)中貼近度思想把學(xué)生答案和參考答案進(jìn)行嚴(yán)格貼近度計算,并輔助以一定的評分規(guī)則計算出整個子句的相似程度,最后根據(jù)各項分值得出學(xué)生的得分。
2.1 分句處理
分句處理是把答案以某些特定標(biāo)點符號為分隔標(biāo)志分成若干子句。在這里,根據(jù)關(guān)于語句、句群和篇章的定義,除了把通常所說的句號、感嘆號、問號等傳統(tǒng)句末標(biāo)點符號作為子句分隔符號外,還把逗號、分號等也作為子句分隔符。人們在閱讀某個自然語言語句的時候,由于自身擁有的一些知識或常識,能夠知道語句中哪些是詞哪些不是詞,但計算機(jī)卻并不具有像人類一樣的知識或常識。當(dāng)計算機(jī)面對一段文本或一句文本時,并不知道文本中哪些是詞,哪些不是詞。且漢語不像歐式語言,詞與詞之間有空格隔開,不需要計算機(jī)進(jìn)行詞的識別。所以對于漢語,在對語句進(jìn)行成分分析之前,先要讓計算機(jī)知道輸入的文本中有哪些詞匯,因而需要對中文文本進(jìn)行分詞處理。分詞處理是后續(xù)句法分析以及關(guān)鍵詞抽取階段的前期基礎(chǔ)工作。
2.2 分詞處理
分詞階段也可以叫做詞法分析階段,分詞標(biāo)準(zhǔn)的問題實際上是漢語詞與語素、詞與詞組的界定問題。
假定平均每句話有10個漢語詞,那么10句話中會錯切2個詞,含有切分錯誤的2句就不可能被正確處理。因此僅僅由于分詞階段的準(zhǔn)確度不夠,語言理解的準(zhǔn)確率就會減少20%??梢娺x擇合適的分詞算法對句法分析相當(dāng)重要。
2.3 句法分析
句法分析就是應(yīng)用句法規(guī)則和其他知識,將輸入句子中的詞之間的線性次序變換成語法樹那樣的數(shù)據(jù)結(jié)構(gòu)。句法分析一般都依賴于某種語法體系。語法體系的形式豐富多彩,各種語法形式都有各自的特點,不同的語法體系產(chǎn)生的句法結(jié)構(gòu)形式不盡相同。這也需要我們事先將語法規(guī)則存儲到文件中,讓系統(tǒng)讀取,然后用來分析語句。
2.4 相似度計算
基于字符串匹配的分詞算法是按照一定策略將待分析的漢字串與一個“充分大的”機(jī)器詞典中的詞條進(jìn)行配,若在詞典中找到某個字符串,則匹配成功(識別出一個詞)。按照掃描方向的不同,串匹配分詞方法可以分為正向匹配和逆向匹配;按照不同長度優(yōu)先匹配的情況,可以分為最大(最長)匹配和最?。ㄗ疃蹋┢ヅ?。實際使用的分詞系統(tǒng),都是把機(jī)械分詞作為一種初分手段,還需通過利用各種其他的語言信息來進(jìn)一步提高切分的精度,力圖在分詞階段消除所有歧義準(zhǔn)確率。
抽取完學(xué)生答案和參考答案的關(guān)鍵詞之后,要對學(xué)生答案和參考答案的相應(yīng)關(guān)鍵詞集進(jìn)行比較,依據(jù)相應(yīng)的評分規(guī)則計算它們的相似程度,從而可以得出學(xué)生答案的正確程度,然后我們的評分規(guī)則是,根據(jù)各個關(guān)鍵字出現(xiàn)的頻率賦予權(quán)重,即出現(xiàn)頻率高的關(guān)鍵字權(quán)重高,這樣就可以將所有關(guān)鍵字賦予一個權(quán)值,然后對學(xué)生答案的關(guān)鍵詞分析結(jié)果進(jìn)行分析計算,得出學(xué)生的最終得分。
3 自動閱卷算法的具體算法實現(xiàn)
一般參考答案和學(xué)生答案都以一段或幾段文本的方式呈現(xiàn),每段包括若干語句。為方便后續(xù)語義塊識別以及關(guān)鍵詞的抽取,首先需要對參考答案和學(xué)生答案分別進(jìn)行分句和分詞處理。
3.1 分句算法
分句算法設(shè)計,傳統(tǒng)意義上,一個完整的句子以句號、感嘆號、問號、省略號等句末標(biāo)點符號作為該句結(jié)束的標(biāo)志。但傳統(tǒng)意義上的一個句子往往包含著若干個語句,這些語句稱為“半句”,而這些半句往往以逗號、分號作為間隔;這些半句往往也表達(dá)了完整的語義信息。在本系統(tǒng)中,所有的可以作為分割符的內(nèi)容都存放進(jìn)了stop.txt中了。
本文對學(xué)生答案和參考答案進(jìn)行分句處理的基本思路是,首先對答案進(jìn)行分句預(yù)處理,去除答案前面和后面的空行;然后對經(jīng)過預(yù)處理的答案進(jìn)行分句處理,掃描整個答案,遇到分句標(biāo)點符號就表示前一子句結(jié)束,后一子句開始,保存當(dāng)前子句的內(nèi)容到答案子句數(shù)組的相應(yīng)元素中。在分句處理過程中,同時也去除了答案中間無用的回車換行。
⑴ 分句預(yù)處理算法
為簡化后續(xù)的分句處理,本文專門設(shè)計了分句預(yù)處理算法來實現(xiàn)對答案分句前的預(yù)處理,去除答案前面和后面無用的回車換行。在本系統(tǒng)中,上述分句預(yù)處理算法具體體現(xiàn)在IDFCal的getTermList方法中,它就是用于消除語句中的回車符和換行符,把去掉這些無用符號的字符串保存在數(shù)組中。
3.2 分詞算法
分詞算法設(shè)計,漢語自動分詞是自然語言處理過程的第一步。分詞體現(xiàn)了漢語與英語的顯著不同。英語文本是小字符集上的已分隔開的詞串,而漢語文本是大字符集上的連續(xù)字串。把字串分隔成詞串,就是自動分詞系統(tǒng)需要做的工作。下面描述本系統(tǒng)所采納的最大匹配算法。
⑴ 原子分詞
原子分詞,即找出所有的原子詞素,可以理解為單個字符。
⑵ 分詞調(diào)整
隨后,還要對初次分詞結(jié)果進(jìn)行調(diào)整,主要是對時間、日期、數(shù)字等進(jìn)行合并或拆分,找出所有可能的詞組并發(fā)現(xiàn)詞組間可能的關(guān)系,生成二叉圖表,每個節(jié)點表示相鄰兩個詞組的耦合關(guān)系。
3.3 成分分析
句子成分分析相關(guān)算法設(shè)計,句法分析的目標(biāo)是分析合理的句法結(jié)構(gòu)樹。句法分析的輸入是一個詞串(含詞性屬性),通過對句子成分分析,得到一個由學(xué)生答案生成的語法樹,之后就對該語法樹進(jìn)行關(guān)鍵詞抽取。關(guān)鍵詞抽取時只抽取出對句子意義表達(dá)關(guān)系重要的詞匯,具體抽取時,可以判斷它是否實詞,若是,則抽取之,否則,不抽取。
3.4 相似度計算
依次遍歷語義樹中的各詞語,抽出該詞保留在數(shù)組中。開始在學(xué)生答案中查找是否有得分點,將標(biāo)準(zhǔn)答案關(guān)鍵字與學(xué)生答案相匹配,查看標(biāo)準(zhǔn)答案的關(guān)鍵字是漢字還是非漢字,是漢字則按照雙字節(jié)處理,非漢字則按照單字節(jié)處理,求出標(biāo)準(zhǔn)關(guān)鍵字在學(xué)生答案中所占的比例,按照比例劃分分值,這也就是本系統(tǒng)的評分規(guī)則。最后計算出學(xué)生答案與標(biāo)準(zhǔn)答案的相似度,得出學(xué)生答案的分值。
4 結(jié)束語
本文雖然在某種程度上實現(xiàn)了主觀題的自動閱卷系統(tǒng),但由于自然語言中知識的博大精深以及本人能力有限,有許多地方都有不足之處,致使系統(tǒng)打分跟教師的實際打分還是存在很大的偏差。如何用更好的分詞方法來支持句法分析過程;怎樣讓知識庫具備可擴(kuò)充性,把人工智能和機(jī)器學(xué)習(xí)引入到漢語句法分析中來提高分析的準(zhǔn)確率和效率;如何對語法樹更好的進(jìn)行關(guān)鍵詞提取,是否有更好的方法對學(xué)生答案和正確答案進(jìn)行相似度計算等等,這些問題都有待進(jìn)一步研究。
參考文獻(xiàn):
[1] 金博,史彥軍,滕弘飛.基于語義理解的文本相似度算法[J].大連理工
大學(xué)學(xué)報,2005.45(2):291-297
[2] 況姍蕓.網(wǎng)絡(luò)課程中主觀題在線評閱系統(tǒng)的設(shè)計與實現(xiàn)[J].中國電化
教育,2004.3.
[3] Nghi Truong,Paul Roe. Static Analysis of Students' Java Programs[J].
Australian Computer Society,2004.
[4] 秦學(xué)勇.基于相似度計算的主觀題閱卷系統(tǒng)設(shè)計[J].安徽建筑工業(yè)學(xué)
院學(xué)報,2010.4.
[5] 唐朝霞.一種基于特征提取的簡答題閱卷算法[J].湖南工程學(xué)院學(xué)
報,2010.1.