付鵬斌,楊廣越,楊惠榮
(北京工業大學 信息學部,北京 100124)
目前,主觀題自動評分技術理論上取得了一些成果[1-4],Sultan等[5]基于傳統機器學習方法,使用語義相似度、詞項權重等特征構建了隨機森林分類器,預測考生分數;Yang等[6]提出了一種基于深度自動編碼器的短答案評分算法,可以在不明確定義目標答案的情況下構建評分模型;Riordan等[7]使用深度學習方法,利用CNN與LSTM構成的神經網絡進行自動評分。雖然這些方法評分效果較好,但需要大量專家標注數據,在高考、中考等大型考試中,考題第一次出現,沒有教師評分數據,難以進行自動評分,具有一定局限性。陳賢武等[8]為了實現網絡考試的自動化,提出了基于多特征語句相似度的主觀題自動閱卷模型,這種基于匹配的主觀題自動評分方法,需要對詞形、語義、句法等復雜特征進行人工設計與計算,匹配準確度較低,并且沒有融入學科知識信息,評分準確度與機器學習、深度學習的自動評分結果相差較大,效果不理想。本文通過構建地理同義詞詞庫保證學科同義詞計算的準確性,并將地理知識信息融入到語料庫中,使詞語在向量空間的表示更符合地理學科背景,結合學科同義詞與詞向量實現了相似度評分算法,并通過北京市和陜西省兩地區的真實考生數據進行實驗,取得了較理想的效果,驗證了本文算法的有效性。
本文收集了《高中地理知識清單》和《五年高考三年模擬·高考地理》中的全部文本及部分中考試題,作為地理知識語料,通過語言技術平臺(language technology platform,LTP)[9]進行分詞并標注詞性,共計18 140個詞語,樣本數據如圖1所示,其中有些詞語存在錯誤,如形容詞中的“正西”、“正南”應標注為方向名詞;名詞中的“地表”、“經線”等詞應標注為地理專有名詞。

圖1 LTP對地理知識語料部分處理結果
針對以上問題,本文分析了現代漢語詞性類別及含義,并結合LTP詞性標注集,對地理知識語料處理結果中分詞或詞性標注錯誤的詞語進行了人工校正,完成后將詞語與對應詞性按空格分開,寫入地理詞典中,共計13 955個詞語。
本文采用中文維基百科作為初始語料,基于Word2vec[10]的CBOW(continuous bag-of-word)模型訓練詞向量,構建地理語料庫,具體流程如圖2所示。

圖2 地理語料庫構建流程
由于LTP融入了詞典策略,在分詞時引入地理詞典可以更準確識別地理學科中的詞語,引入地理詞典前后詞向量關系對比如圖3所示,其中,“冷鋒”屬于地理學科詞語,“促進”屬于自然語言,非地理學科詞語,可以看出,訓練詞向量過程中引入地理詞典,使中文維基百科每條文本的詞語上下文發生了變化,導致詞語在高維向量空間的位置發生了改變,對地理學科詞語之間的相似關系影響較大,并增加了大量地理學科相關詞語,使構建的語料庫更趨向于地理學科領域的語料庫,因此將其作為承載地理知識的基礎資源。

圖3 引入地理詞典后詞向量關系對比
利用Word2vec訓練的詞向量模型,只能提供詞語之間的相關性,語義相似度計算的準確度不高,針對這一問題,通常采用《同義詞詞林》提高詞語語義相似度計算的準確性[11],但并不適用于識別學科中的同義詞。例如,在《同義詞詞林》中“脆弱”的同義詞有“軟弱”、“懦弱”、“嬌生慣養”等,這些在人們日常表達中是同義詞,但在地理學科中,通常有“生態脆弱”這種表達,而替換為“生態軟弱”、“生態嬌生慣養”,語義不清晰,表達不明確,而造成評分錯誤。針對學科同義詞識別不準確的問題,本文構建了地理同義詞詞庫,具體步驟如下:
(1)讀取地理詞典中的全部詞語,寫入地理同義詞詞庫中,每個詞語占一行。
(2)查詢地理詞典中每個詞語在《同義詞詞林》中的所有同義詞,并寫入地理同義詞詞庫中該詞語的后面,以空格分開。
(3)查詢地理詞典中每個詞語在地理語料庫中的所有相似詞,把相似度在0.6以上的詞語寫入地理同義詞詞庫中該詞語的后面,以空格分開。
(4)以地理同義詞詞庫中每行第一個詞語為目標詞,后面詞語為候選詞,基于百度百科等知識文庫,對每行的候選詞進行人工篩選及補充。
目前,地理同義詞詞庫中共整理了1843組學科同義詞,由于人工構建時,未完全具備地理學科專家知識背景,并存在一定的主觀性,導致一些學科同義詞語可能不夠精確,但是對比《同義詞詞林》,地理同義詞詞庫可以更準確識別學科同義詞語。
目前,關鍵詞提取算法包括TF-IDF[12]、TextRank[13]、LDA[14]等。TF-IDF和TextRank算法通過計算詞頻來判斷詞語重要程度,但答案文本中詞語分布較均勻,并不能通過詞頻來提取關鍵詞。LDA算法可以提取文檔中隱含的主題信息,但答案文本主題單一,表達明確,不完全適用于自動評分過程中的關鍵詞提取。本文通過分析高考地理試卷和部分中學試題及答案特征,提出了一種基于詞性的關鍵詞提取及權重分配方法,即將關鍵詞按照詞性分類,每類關鍵詞賦予權重,見表1。

表1 基于詞性的關鍵詞及權重表示
答案文本通過LTP及地理詞典進行分詞并標注詞性,設該文本中A類詞數為a,每個詞語權重為wa,B類詞數為b,每個詞語權重為wb,C類詞數為c,每個詞語權重為wc,以B類關鍵詞權重為基準x,得到關鍵詞權重計算方程如式(1)所示
(1)
對方程式(1)進行推導可得,A類關鍵詞權重計算如式(2)所示
(2)
B類關鍵詞權重計算如式(3)所示
(3)
C類關鍵詞權重計算如式(4)所示
(4)
關鍵詞提取及權重分配算法如下:
(1)算法輸入:目標文本S。
(2)基于地理詞典,利用LTP將文本S進行分詞并標注詞性,參照表1,按詞性提取關鍵詞,得到序列Seq(x,t)={(x1,t1),(x2,t2),(x3,t3),…,(xn,tn)},其中x表示詞語,t表示對詞語x標注的詞性;
(3)遍歷Seq(x,t),參照表1統計A類詞數a,B類詞數b,C類詞數c;
(4)通過式(2)計算A類詞性權重wa,通過式(3)計算B類詞性權重wb,通過式(4)計算C類詞性權重wc;
(5)遍歷Seq(x,t),參照表1確定詞性t所屬類別,根據類別對詞語x賦予相應的權重w,得到序列Seq(x,t,w)={(x1,t1,w1),(x2,t2,w2),(x3,t3,w3),…,(xn,tn,wn)};
(6)輸出:Seq(x,t,w)。
本文為實現評分過程中關鍵詞語的語義相似度計算,引入了學科同義詞概念,依據地理同義詞詞庫中提供的學科同義詞、《同義詞詞林》中提供的同義詞和地理語料庫中提供的相似詞綜合計算詞語相似度,具體算法如下:
(1)算法輸入:詞語W1和W2;
(2)初始化:地理同義詞詞庫dlSym,《同義詞詞林》中編碼為“=”的列表sym,地理語料庫dlmodel;
(3)遍歷dlSym,查詢W1的列表dlSymList,如果dlSymList長度大于0,到(4),否則,到(5);
(4)遍歷dlSymList,查詢W2是否存在,如果存在,則wordSim(W1,W2)=1,到(9),否則,到(5);
(5)遍歷sym,查詢W1的列表symList,如果symList長度大于0,到(6),否則,到(7);
(6)遍歷symList,查詢W2是否存在,如果存在,則wordSim(W1,W2)=0.8,到(9),否則,到(7);
(7)查詢dlmodel中是否存在W1,如果存在,到(8),否則,wordSim(W1,W2)=0,到(9);
(8)查詢dlmodel中是否存在W2,如果存在,通過dlmodel計算W1與W2相似度dlmodelSym(W1,W2),則wordSim(W1,W2)=dlmodelSym(W1,W2)×0.6,到(9),否則wordSim(W1,W2)=0,到(9);
(9)輸出詞語相似度:wordSim(W1,W2)。
語句是由一個詞或句法上有關聯的一組詞構成,其中包含詞形、詞序、句長、語義等復雜特征[15],句子中任一信息發生變化,都可能改變句子語義,導致計算機對語句理解難度較大。本文借鑒文獻[16]提出的語句相似度計算方法,利用地理語料庫中提供的詞向量,通過2.1節的關鍵詞提取及權重分配算法對詞向量進行加權構造句向量,利用余弦相似度算法計算兩個句向量的相似度,得出語句相似度,具體算法如下:
(1)算法輸入:語句S1和S2;
(2)初始化:地理語料庫dlmodel;
(3)將S1和S2通過2.1節的方法進行關鍵詞提取及權重分配,得到序列Seq1和Seq2。
(4)遍歷Seq1和Seq2中的每個詞語,查找dlmodel是否存在該詞語,如果存在,利用dlmodel將該詞語轉為詞向量,否則,將詞語記為0向量;
(5)記序列Seq中第i個詞語的詞向量為wvi、權重為wi,通過式(5)分別計算Seq1和Seq2得到句向量V1和V2
(5)
(6)利用余弦相似度算法,通過式(6)計算V1和V2的余弦相似度cosSim(V1,V2),使S1和S2的語句相似度sentenceSim(S1,S2)等于cosSim(V1,V2)
(6)
(7)輸出語句相似度:sententceSim(S1,S2)。
本文通過構建地理同義詞詞庫保證了詞語相似度計算的準確性,但目前語句相似度計算的準確度不高,尤其兩個無關聯語句也會計算出一定的相似值,導致評分不準確,針對這一問題,以詞語相似度計算為標準,對語句相似度建立可信值α,見表2。

表2 語句相似度可信值α與詞語相似度對應關系
依據考生答案與標準答案的詞語相似度和語句相似度可以計算出綜合相似度,進行自動評分,為符合教師評閱方式,依據綜合相似度制定了評分系數λ,見表3,該系數可由出題專家人工制定,以便針對不同難度系數的考題制定更準確的評分方式。

表3 相似度與評分系數λ對應關系
結合學科同義詞與詞向量的相似度評分算法,具體步驟如下:
(1)算法輸入:標準答案文本B,對應分數score,考生答案文本S;
(2)將B和S通過2.1節的方法進行關鍵詞提取及權重分配,得到序列
SeqB(bx,bt,bw)={(bx1,bt1,
bw1),(bx2,bt2,bw2),…,(bxn,btn,bwn)},
SeqS(sx,st,sw)={(sx1,st1,sw1),(sx2,
st2,sw2),…,(sxn,stn,swn)};
(3)遍歷SeqB(bx,bt,bw),查找SeqS(sx,st,sw)中與SeqB(bx,bt,bw)中第i個詞語詞性bti相同的詞語集合SWList(sx)={sx1,sx2,…,sxn};
(4)通過2.2節的算法將bxi依次與SWList(sx)中的詞語進行相似度計算,將計算結果的最大值乘以權重bwi得到詞語加權相似度si,則B與S的詞語相似度wordSim(B,S)=∑si;
(5)將B與S通過2.3節的語句相似度算法進行計算,得到B與S的語句相似度sentenceSim(B,S);
(6)參照表2,通過wordSim(B,S)計算語句相似度可信值α,利用式(7)計算B與S的綜合相似度similarity(B,S)
similarity(B,S)=wordSim(B,S)+sentenceSim(B,S)×α
(7)
(7)參照表3,通過similarity(B,S)計算對應的評分系數λ,利用式(8)計算考生得分studentScore
studentScore=score×λ
(8)
(8)輸出考生得分:studentScore。
目前國內并沒有用于主觀題自動評分的數據集,本文通過采集北京市和陜西省兩地區高中考試數據,進行人工整理,構建自動評分測試數據集,驗證本文算法的有效性。
采用北京市某重點高中地理期中考試中的一道主觀題,如圖4所示,該試題包含3個問題,共12分,選取高分段的10名同學答題情況,通過本文算法進行自動評分,并與教師評分對比,驗證本文算法對高分段考生答案評分的準確性。

圖4 北京市某重點高中期中考試試題
從圖5可以看出,教師對這10名考生的評分分布在10分-12分,本文算法評分分布在8.6分-10.8分,與教師評分相差最多1.5分,最少0.2分,評分趨勢基本一致。

圖5 實驗一評分效果對比
采用陜西省某重點中學2019屆高二年級第二學期地理期末考試試題,考試形式與高考相同,考生需將答案寫在答題卡上,教師網上閱卷進行評分,該試題包含兩個問題,每問6分,共12分,本文將考生數據進行了人工整理,共采集了347條數據,如圖6所示。

圖6 實驗二測試數據集
從圖7、圖8可以看出,26(1)題考生得分較高,大多數分布在4分-6分,26(2)題考生得分較低,大多數分布在2分-4分,本文算法評分與教師評閱結果分差較小,高分到低分趨勢基本一致,為了進一步分析評分效果,本文通過式(9)計算評分準確率

圖7 實驗二26(1)評分效果

圖8 實驗二26(2)評分效果

(9)
從圖9、圖10可以看出,本文算法評分準確率都在60%以上,并集中分布在85%左右的區域,從表4可以看出,評分準確率在90%以上的數據量占總數據量的50%以上,在80%以上的數據量占總數據量的85%以上,結合26(1)與26(2)的評分結果,計算得出該算法在當前測試數據的平均評分準確率為88.82%,非常接近教師評分。

圖9 實驗二26(1)評分準確率

圖10 實驗二26(2)評分準確率

表4 評分準確率
本文通過分析地理試題及答案特征,設計了一種結合學科同義詞與詞向量的相似度評分算法,并通過高中地理考試真實考生數據進行實驗驗證,結果表明該方法與教師評分趨勢基本一致,評分準確率較高,效果較理想。但是,本文方法雖然對于所有學科都能使用,由于學科間的差異性,需根據不同學科對算法稍作調整或進一步研究,否則會造成準確度計算不高的問題。所以,可以借鑒本文評分方法,針對其它學科難點問題進行深入研究,實現適用于不同學科的評分算法,將對教育的智能化發展起到巨大的推動作用。