肖靈云,劉軍庫,李春紅
(1.湛江科技學(xué)院計(jì)算機(jī)系,湛江 524000;2.湛江科技學(xué)院機(jī)械系,湛江 524000)
隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,在線考試已逐步成為一種普遍的考試方式。應(yīng)用計(jì)算機(jī)自動(dòng)評分不僅效率高、速度快、準(zhǔn)確率高、不會(huì)產(chǎn)生疲勞,而且主觀題自動(dòng)評分可以提高教師的工作效率,為教師分擔(dān)繁重的閱卷工作,同時(shí)也保證了考試評分的公平。對于選擇題、判斷題的自動(dòng)評分,已有較成熟的自動(dòng)評分技術(shù)。由于主觀題的特殊性,目前大部分的主觀題批閱形式仍采用人工評分。不論是有參考答案的主觀題還是開放式答案的主觀題,這兩種類型的主觀題評分均依托自然語言處理技術(shù),有參考答案的主觀題評分的核心工作是計(jì)算考生答案和參考答案之間的語義相似度,開放式答案的主觀題評分方式關(guān)鍵的問題是文本的特征抽取。在國內(nèi),現(xiàn)有的主觀題自動(dòng)評分技術(shù),大部分是基于有參考答案的主觀題,且大多是提取答案中的關(guān)鍵字,并計(jì)算其相似度來進(jìn)行評分。即使有些考慮到了語義分析,其評分結(jié)果也令人不滿意。由于主觀題的答案表現(xiàn)形式很靈活,每個(gè)人的表述方式不同,其給出的答案不可能完全同參考答案一致,因此僅僅利用關(guān)鍵詞來進(jìn)行評分,很難有說服力。針對此問題,本文提出以doc2vec算法計(jì)算文本之間的整體語義的相似度,來實(shí)現(xiàn)有參考答案的主觀題自動(dòng)評分。
目前文本的相似度大多是計(jì)算句子中詞語的相似度,這種計(jì)算方式?jīng)]有考慮到詞語的深層含義,而且僅靠匹配兩文本中的關(guān)鍵詞來計(jì)算相似度,其計(jì)算相似度的結(jié)果有待斟酌。因此,提出基于doc2vec算法的主觀題評分方法,doc2vec算法中包含Distributed Memory(DM)和Distributed Bag of Words(DBOW)兩種模型,DM模型是嘗試預(yù)測某單詞在給定上下文中出現(xiàn)的概率,DM模型中的上下文包含的范圍更廣泛,它不僅僅包含上下文中的單詞而且還包含了相對應(yīng)的段落,所以DM模型可以依據(jù)上下文中的詞向量和段向量來對目標(biāo)詞的概率分布進(jìn)行預(yù)測。基于doc2vec算法的自動(dòng)評分的評分過程:
第一步,對參考答案文本的處理過程:對文本進(jìn)行預(yù)處理,包括去停用詞、分詞等。
對考生答案文本的處理過程:對文本進(jìn)行預(yù)處理,包括去停用詞、分詞等。
第二步,對參考答案文本的處理過程:對預(yù)處理后的參考答案文本,用doc2vec算法對該參考答案文本進(jìn)行文本段向量化。
對考生答案文本的處理過程:對預(yù)處理后的考生答案文本,用doc2vec算法對該考生答案文本進(jìn)行文本段向量化。
第三步,計(jì)算參考答案的文本段向量與考生答案文本段向量之間的相似度,將相似度值代入計(jì)算得分模型中,并計(jì)算得分。
本文采用余弦相似度來計(jì)算考生提交的答案和參考答案之間的相似度,其中以參考答案作為標(biāo)準(zhǔn)。將事先已經(jīng)進(jìn)行段向量化表示的考生答案和參考答案,依據(jù)兩向量之間的夾角大小來評估向量之間的相似性,用夾角的余弦值來度量兩向量的相似度,計(jì)算公式如(1)所示:
其中,表示相似度,、分別為參考答案文本及考生答案文本的語義特征段向量,表示與兩個(gè)向量之間的夾角,A、B分別表示向量及向量的各分向量,表示分向量總數(shù)。
輸入:輸入?yún)⒖即鸢敢约翱忌鸢?txt文本
輸出:輸出考生的考試成績
def text_similarity_doc2vec(sid,v):
model=gensim.models.Doc2Vec.load('zhiwiki_news.doc2vec')//加載模型
w1='p00.txt' //參考答案文本
w2='p01.txt' //考生答案文本
p1_doc2vec=doc2vec(w1,model)//參考 答案 文本向量化
p2_doc2vec=doc2vec(w2,model)//考生答案文本向量化
sim=simlarityCalu(p1_doc2vec,p2_doc2vec)
weight=sim
return weight
def simlarityCalu(vector1,vector2): //計(jì)算文本向量相似度
vector1mod=numpy.sqrt(vector1.dot(vector1))
vector2mod=numpy.sqrt(vector2.dot(vector2))
if vector2mod!=0 and vector1mod!=0:
similarity=(vector1.dot(vector2))/(vector1mod*vector2mod)
else:
similarity=0
return similarity
def main():
new_mark_xlsx=openpyxl.Workbook()
new_sheet= new_mark_xlsx.get_sheet_by_name("Sheet")
temp=data_select()
i=1
for data_list in temp:
print(data_list)
one_hot_id,sid,v,stu_answer,que_ans,question,stu_name=record_temp(data_list)
if stu_answer:
mark_d2c=text_similarity_doc2vec(one_hot_id,v)
else:
mark_d2c=0
print("本題考生未做答,0分")
d2v=mark_d2c*int(v)sql_save(d2v,sid,question,stu_name)
print('d2c=%.2f)
new_sheet.cell(row=i, column=1, value=stu_name)
new_sheet.cell(row=i, column=2, value=one_hot_id)
new_sheet.cell(row=i,column=3,value=sid)
new_sheet.cell(row=i,column=4,value=question)new_sheet.cell(row=i,column=5,value=que_ans)new_sheet.cell(row=i,column=6,value=v)
new_sheet.cell(row=i,column=7,value=stu_an?swer)
new_sheet.cell(row=i,column=8,value=d2v)
print(i)
i=i+1
new_mark_xlsx.save("成績匯總.xlsx")
本文實(shí)驗(yàn)以《管理學(xué)基礎(chǔ)》課程考試的10名考生的10道題目共100份答案作為實(shí)驗(yàn)數(shù)據(jù)集,且每一道題均提供參考答案。
為了驗(yàn)證本文所提出的基于doc2vec的主觀題自動(dòng)評分方法的有效性,在此進(jìn)行了實(shí)驗(yàn)對比。并與基于TextRank算法的主觀題自動(dòng)評分方法的評分結(jié)果及人工評分結(jié)果進(jìn)行對比,本文只展示部分內(nèi)容。兩種自動(dòng)評分方法與人工評分結(jié)果分析表如表1所示,其中TextRank差值是指TextRank算法評分與人工評分差的絕對值,doc2vec差值是指doc2vec算法評分與人工評分差的絕對值。
表1 兩種算法得分結(jié)果比較(部分評分結(jié)果)
以算法評分與人工評分的差距以2分為分界點(diǎn),差距大于等于2分的為不合格評分,小于2分的為合格,根據(jù)評分差距,則可分別得出兩種算法的準(zhǔn)確率,如表2所示。
表2 兩種算法的準(zhǔn)確率
由表2結(jié)果可知,采用doc2vec算法評分的準(zhǔn)確率為96%,比采用TextRank算法評分的準(zhǔn)確率高24%。明顯看出本文提出的基于doc2vec算法評分的準(zhǔn)確率要高于基于TextRank算法評分的準(zhǔn)確率。
上述采用的準(zhǔn)確率是從定量角度來描述表示主觀題評分結(jié)果的優(yōu)劣,但是準(zhǔn)確率只能判斷是否批錯(cuò),不能真正表示出自動(dòng)評判效果優(yōu)劣程度,為了進(jìn)一步驗(yàn)證本文提出的基于doc2vec算法評分結(jié)果的有效性,本文進(jìn)一步引入了偏差率的概念來進(jìn)行評判。偏差率(De?viation)的定義如式(2)、式(3)所示。
式中,代表平均偏差率,是評判的總份數(shù)。實(shí)驗(yàn)結(jié)果如表3所示。
表3 《管理學(xué)基礎(chǔ)》自動(dòng)評分結(jié)果對比
從表3可以看出,經(jīng)過與人工評分結(jié)果的對比,發(fā)現(xiàn)本文提出的基于doc2vec算法的評分結(jié)果較基于TextRank算法的評分結(jié)果的有效性明顯有較大幅度的提高,其中基于doc2vec算法的評分結(jié)果的平均偏差率較基于TextRank算法的評分結(jié)果小0.081,最大偏差率降低了0.321。
為了更直觀地體現(xiàn)出兩種算法的差距,特附有兩道題各10個(gè)考生的成績結(jié)果進(jìn)行比較,圖1展示出兩種評分結(jié)果的偏差率柱狀圖,并隨機(jī)選擇了第二題評分結(jié)果和第九題評分結(jié)果繪制趨勢如圖2、圖3所示。
圖1 兩種算法評分結(jié)果與人工評分偏差率柱狀圖
圖2 第二題兩種算法評分結(jié)果與人工評分趨勢
圖3 第九題兩種算法評分結(jié)果與人工評分趨勢
由圖1—圖3可以看出,基于doc2vec算法評分的整體趨勢與人工評分結(jié)果較吻合,而且其穩(wěn)定性比較好,而基于TextRank算法評分的整體趨勢與人工評分結(jié)果相差較大,且其穩(wěn)定性不好,其自動(dòng)評分成績波動(dòng)較大。
分析造成這種結(jié)果的原因有以下兩個(gè)方面:一是采用TextRank算法沒有考慮到考生答案與參考答案的語序信息,使得采用TextRank算法在關(guān)鍵詞提取方面,其提取的準(zhǔn)確率不高,損失了很多的主要信息,而是僅僅依靠關(guān)鍵詞的匹配來評分,說服力較低。而doc2vec不只是考慮到了詞語的語義信息,并且還將文本上下文中的語序信息進(jìn)行了保留,所以準(zhǔn)確的判斷出采用doc2vec進(jìn)行計(jì)算文本的相似度,并在此相似度的基礎(chǔ)上再計(jì)算考生得分的方法,其效果明顯更好。二是因?yàn)榛赿oc2vec算法的評分方法能夠有效的通過段向量對文本的語義和語序進(jìn)行較好的理解,對于段落級(jí)的文本處理表現(xiàn)很出色,而TextRank算法的評分方法則將關(guān)鍵詞來代表整個(gè)段落的語義表示出來,并沒從更深層次對句子語義及語序進(jìn)行理解和分析。
本文采用的基于doc2vec算法的主觀題自動(dòng)評分方法,不僅提高了評分結(jié)果的準(zhǔn)確性,且可以實(shí)現(xiàn)批量試題評分,在一定程度上提高了教師的工作效率,避免了在評分時(shí)受到的人的主觀因素的影響,節(jié)省了教師大量的批閱時(shí)間及人工成本,達(dá)到了公平公正,為后期的主觀題自動(dòng)評分研究提供了一定的參考價(jià)值。但是由于本文構(gòu)建的數(shù)據(jù)集較小,不能夠完全證明本文所研究的評分方法的有效性及普適性,因此后期將會(huì)擴(kuò)大數(shù)據(jù)集的廣度及科目的廣泛度,作為未來的研究方向。