涂錦宇 朱 敏
(華東師范大學(xué)計(jì)算機(jī)科學(xué)與軟件工程學(xué)院計(jì)算中心 上海 200062)
在人機(jī)交互過(guò)程中,系統(tǒng)的第一步就需要理解人類(lèi)自然語(yǔ)言傳達(dá)的含義。人類(lèi)向機(jī)器傳達(dá)的自然語(yǔ)言存在著多種句式。針對(duì)漢語(yǔ)問(wèn)句這一句式,研究者們利用問(wèn)句依存語(yǔ)法分析[1],在智能問(wèn)答系統(tǒng)的模型中如何進(jìn)行特征提取和分類(lèi)進(jìn)行了研究。而在智能駕駛、智能家居等其他領(lǐng)域中,祈使句這一特殊的自然語(yǔ)言類(lèi)型,在常規(guī)的人機(jī)交互的自然語(yǔ)言中也占著較大的比重。人類(lèi)向特定系統(tǒng)傳達(dá)自然語(yǔ)言指令,需要被不同的功能模塊接收,例如“把電飯煲切換成保溫模式”這句指令,在經(jīng)過(guò)初步的信息分揀后,應(yīng)被分入廚房模塊進(jìn)行繼續(xù)加工,臥室、客廳等其他模塊就無(wú)需對(duì)這句話(huà)進(jìn)行處理。如何將收集的命令式的自然語(yǔ)言信息進(jìn)行分揀,成了一個(gè)亟待解決的問(wèn)題,而以祈使句為對(duì)象的自然語(yǔ)言處理研究卻很少。因此本文提出了一種基于核心詞語(yǔ)義方法,該方法利用祈使句這一特殊的句式語(yǔ)法依存關(guān)系,對(duì)語(yǔ)義依存樹(shù)進(jìn)行剪枝操作,提取其核心動(dòng)詞以及核心名詞,構(gòu)建詞庫(kù)進(jìn)行分類(lèi)。
在依存語(yǔ)法模型理論中,將以句為單位的語(yǔ)料劃分為一棵依存語(yǔ)法樹(shù),句中唯一確定一個(gè)核心詞作為語(yǔ)法依存樹(shù)的根,支配著句中其他所有的詞,且每個(gè)詞的父節(jié)點(diǎn)有且僅有一個(gè),其余的詞直接或間接依賴(lài)于這個(gè)核心詞,在依存語(yǔ)法樹(shù)中表現(xiàn)為樹(shù)的子節(jié)點(diǎn)或葉子節(jié)點(diǎn)。將每一句祈使句轉(zhuǎn)化為依存語(yǔ)法樹(shù),是提取祈使句核心詞匯的必要前提。
常見(jiàn)的文本分類(lèi)在完成分詞和停用詞等預(yù)處理之后,往往將文本詞袋化。普通文本中可以使用文檔頻率DF、信息增益IG等多種方法[2]提取詞袋特征。而短文本,包括句子(陳述句、問(wèn)句、祈使句)具有分詞少、缺乏信息量、詞袋特征稀疏的特點(diǎn),相較于長(zhǎng)文本難于進(jìn)行分類(lèi)?;贚DA主題擴(kuò)展的方法[3],補(bǔ)充了短文本中較少的文本特征,增加了特征維數(shù),使得分類(lèi)準(zhǔn)確率有所提升;也利用卡方統(tǒng)計(jì)和知網(wǎng)文本相似度計(jì)算的方法[4],預(yù)先篩選出對(duì)某個(gè)測(cè)試數(shù)據(jù)分類(lèi)結(jié)果產(chǎn)生影響的若干樣本,再進(jìn)行短文本分類(lèi)。然而,上述一些方法都將文本看作詞袋模型,在簡(jiǎn)化問(wèn)題的同時(shí),與自然語(yǔ)言的實(shí)際結(jié)構(gòu)不符,即忽略了詞序、句法以及語(yǔ)法等信息。本文針對(duì)祈使句的語(yǔ)法特性,進(jìn)行語(yǔ)義依存分析,從句子對(duì)應(yīng)的依存語(yǔ)法樹(shù)中提取特征,達(dá)到特征提取和特征擴(kuò)展的目的。
傳統(tǒng)的One-Hot文本表示方法將每個(gè)詞語(yǔ)表示成一個(gè)維度為詞典大小的向量,向量的每一個(gè)分量表示為該文本中是否有該詞匯。這樣產(chǎn)生的One-Hot向量配合向量分類(lèi)效果較好的常用的SVM[3]、KNN[4]等分類(lèi)算法能基本完成一些自然語(yǔ)言處理中的分類(lèi)任務(wù)。然而這樣的詞語(yǔ)表示方法有很大的不足,例如向量維數(shù)過(guò)大容易造成維數(shù)災(zāi)難;無(wú)法完整刻畫(huà)詞與詞之間的相似性,造成詞匯鴻溝等。而Mikolov等[5]提出的詞向量是一種分布式的詞語(yǔ)表示形式。通過(guò)語(yǔ)料學(xué)習(xí),將每個(gè)詞映射到預(yù)先設(shè)置好維數(shù)大小的實(shí)數(shù)向量中,詞向量維數(shù)一般在幾十到幾百之間,遠(yuǎn)小于語(yǔ)料中詞典的大小,從而解決了One-Hot表示方法產(chǎn)生的維數(shù)災(zāi)難和向量系數(shù)的不足。同時(shí)詞向量的距離也能否反映詞向量所對(duì)應(yīng)的詞在語(yǔ)義上的相似度。
在語(yǔ)義依存樹(shù)構(gòu)建時(shí),將語(yǔ)法樹(shù)的構(gòu)建轉(zhuǎn)化為序列標(biāo)注問(wèn)題,并修改編碼方式,對(duì)句法樹(shù)的剪枝操作以完成核心詞提取。相關(guān)領(lǐng)域語(yǔ)料庫(kù)訓(xùn)練出的詞向量來(lái)表示提取的依存關(guān)系核心詞與樣本中的核心詞產(chǎn)生的詞向量進(jìn)行相似度計(jì)算,以實(shí)現(xiàn)祈使句的分類(lèi)。具體流程如圖1所示。
圖1 基于依存語(yǔ)法的祈使句分類(lèi)方法流程圖
在“清華大學(xué)語(yǔ)料依存關(guān)系集合”[6]中,定義了包括核心關(guān)系在內(nèi)的59種依存關(guān)系,通過(guò)標(biāo)注語(yǔ)料編碼的方式,將語(yǔ)義依存樹(shù)的生成問(wèn)題,轉(zhuǎn)化為常見(jiàn)的序列標(biāo)注問(wèn)題,利用條件隨機(jī)場(chǎng)的模型進(jìn)行訓(xùn)練,具體過(guò)程如下:
對(duì)于一句含有n個(gè)詞的祈使句,將其視作為隨機(jī)變量序列X=(x1,x2,…,xn),為了方便求得序列標(biāo)注的隨機(jī)變量Y=(y1,y2,…,yn),根據(jù)已標(biāo)注的語(yǔ)法依存樹(shù),將利用支配詞距離編碼的方式,來(lái)實(shí)現(xiàn)特征隨機(jī)變量的降維,組成標(biāo)簽集合T,其中y1,y2,…,yn∈T。
根據(jù)文獻(xiàn)[7]中提出的特征模板,提取一元特征特征函數(shù)su(yi,x,i)以及二元特征函數(shù)tb(yi-1,yi,x,i):
(1)
(2)
計(jì)算各隨機(jī)變量分布的條件概率:
(3)
核心詞用于體現(xiàn)祈使句的特征,傳統(tǒng)的句法樹(shù)的序列標(biāo)注類(lèi)標(biāo)過(guò)于復(fù)雜,影響特征函數(shù)訓(xùn)練時(shí)間,因此需要將句子中與祈使句分類(lèi)特征相關(guān)的核心詞重新編碼標(biāo)注,縮短訓(xùn)練時(shí)間。核心詞的選取原則是需要使得核心詞與祈使句分類(lèi)標(biāo)簽存在顯著聯(lián)系,根據(jù)祈使句語(yǔ)法構(gòu)成的不同,定義特征依存關(guān)系集合DEP={受事、內(nèi)容、關(guān)系主體、類(lèi)指、處所、存現(xiàn)體、參照體}[6],提取某祈使句Imp的核心詞集合動(dòng)詞集合coreVerb和名詞集合coreNouns規(guī)則的偽代碼如下:
Fun(Imp)
coreVerb.add(Imp.root);
node=Imp.root;
while(node←node.child)
if(DEP.contains(node.deprel)&node.lemma=‘noun’)
then coreNouns.add(node.word);
return coreVerb, coreNouns;
End Fun
本文根據(jù)提取核心詞結(jié)果,總結(jié)歸納出特征形式主要分為以下三類(lèi):V型、VN型和VNN型。
2.3.1 V型
針對(duì)祈使句這類(lèi)自然語(yǔ)言,每句祈使句對(duì)應(yīng)的語(yǔ)法依存樹(shù)的根,也就是核心關(guān)系的詞,都為動(dòng)詞,且這一核心動(dòng)詞蘊(yùn)涵了祈使句中的類(lèi)別的信息。例如“快停下”句中,核心動(dòng)詞為“停”,因此將每句祈使句的核心詞列為判斷其類(lèi)別的特征值之一。
2.3.2 VN型和VNN型
這一核心動(dòng)詞連接的子節(jié)點(diǎn),直接依存于此核心動(dòng)詞的受事等名詞,代表了核心動(dòng)詞操作的對(duì)象以及結(jié)果,對(duì)于類(lèi)別區(qū)分,也存在貢獻(xiàn)。例如VN型“開(kāi)啟雨刷”的語(yǔ)法依存樹(shù):核心動(dòng)詞:開(kāi)啟;核心名詞:雨刷。如圖2所示。
圖2 VN型語(yǔ)義依存樹(shù)舉例
VNN型“把電飯煲切換成保溫模式”的語(yǔ)義依存樹(shù):核心動(dòng)詞:切換;核心名詞:電飯煲、保溫模式。如圖3所示。
圖3 VNN型語(yǔ)義依存樹(shù)舉例
由于在語(yǔ)義依存樹(shù)中,其他分詞在分類(lèi)時(shí)屬無(wú)關(guān)信息,因此可以根據(jù)此類(lèi)原則對(duì)語(yǔ)義依存樹(shù)進(jìn)行剪枝操作。
在提取語(yǔ)義依存關(guān)系核心詞后,本文采用了基于One-Hot表示方法和基于詞向量的分布式表示方法的多種分類(lèi)算法。
2.4.1 基于One-Hot的分類(lèi)方法
將每個(gè)出現(xiàn)過(guò)的核心動(dòng)詞和核心名詞排列,組成一個(gè)共有n個(gè)詞的詞典D=[d1,d2,…,dn],再根據(jù)每個(gè)類(lèi)別的核心詞庫(kù)BPi=[bpi1,bpi2,…],BPi是詞典D的子集,定義類(lèi)別向量VPij:
(4)
將測(cè)試集T={t1,t2,…}中每個(gè)句子的核心詞BTk=[tpk1,tpk2,…]?D取出后,根據(jù)詞典向量,生成一個(gè)祈使句向量,公式如下:
(5)
由于類(lèi)別特征向量和每個(gè)句子向量維數(shù)統(tǒng)一,都為詞典中詞的個(gè)數(shù),利用余弦距離:
1≤j≤n
(6)
和Jaccard相似度[8]進(jìn)行樣本與類(lèi)別向量之間的計(jì)算, 計(jì)算方法為祈使句向量與類(lèi)別向量的交集元素個(gè)數(shù)與并集元素個(gè)數(shù)之商:
(7)
同時(shí)針對(duì)樣本個(gè)體,利用生成的核心詞向量,對(duì)文獻(xiàn)[2]中總結(jié)的SVM和KNN分類(lèi)方法進(jìn)行分類(lèi)。
2.4.2 基于詞向量的分類(lèi)方法
在詞向量訓(xùn)練模型中,相關(guān)度在樸素假設(shè)的前提下[9],即特征之間相互獨(dú)立的情況下,兩個(gè)多元變量之間的互信息,等于兩兩單變量之間的互信息之和,因此互信息是可加的。即:
(8)
在計(jì)算提取了m個(gè)語(yǔ)義依存核心詞的待分類(lèi)祈使句S和有n個(gè)語(yǔ)義依存核心詞的類(lèi)別C的相關(guān)性:
(9)
并選擇相似度最大的類(lèi)作為最終分類(lèi)類(lèi)別。
針對(duì)各大高校開(kāi)設(shè)的Office辦公軟件課程,為了減輕閱卷老師重復(fù)機(jī)械的閱卷工作,目前已開(kāi)發(fā)出不少計(jì)算機(jī)操作題的判題系統(tǒng)進(jìn)行閱卷。文獻(xiàn)[10]中目前的閱卷系統(tǒng)分為大兩類(lèi):一類(lèi)基于VBA實(shí)現(xiàn),針對(duì)每套試卷,錄制標(biāo)準(zhǔn)答案相關(guān)的一系列宏,利用宏進(jìn)行批閱;另一類(lèi)方法基于微軟制定的組件對(duì)象模型COM標(biāo)準(zhǔn)實(shí)現(xiàn),通過(guò)C#等編程語(yǔ)言的編程實(shí)現(xiàn)對(duì)Office文檔中COM節(jié)點(diǎn)及其屬性的訪(fǎng)問(wèn),并與標(biāo)準(zhǔn)答案對(duì)應(yīng)的COM節(jié)點(diǎn)及屬性進(jìn)行匹配的方式來(lái)批閱試卷,在利用此類(lèi)方法的實(shí)際閱卷過(guò)程中,不需要對(duì)判題函數(shù)做出頻繁的修改。
然而針對(duì)不同的考題,由于考點(diǎn)類(lèi)別不同,調(diào)用的判題函數(shù)也是不同的。由于考題的句式均為祈使句,且包含了核心關(guān)系以外的較多其他依賴(lài)關(guān)系作為祈使句分類(lèi)的干擾項(xiàng),可以利用基于依存語(yǔ)法的分類(lèi)方法進(jìn)行考題的考點(diǎn)分類(lèi),以便于根據(jù)分類(lèi)后的類(lèi)別,調(diào)用對(duì)應(yīng)的判題函數(shù),進(jìn)行閱卷。
3.2.1 相關(guān)領(lǐng)域語(yǔ)料庫(kù)
在訓(xùn)練詞向量時(shí),需要用到相關(guān)領(lǐng)域的語(yǔ)料庫(kù)。本文利用了近年全國(guó)計(jì)算機(jī)等級(jí)考試(NCRE)中MS office操作題和相關(guān)的模擬題,以及華東師范大學(xué)2014-2017《大學(xué)計(jì)算機(jī)》課程考試中Office操作題考題作為合并作為語(yǔ)料庫(kù)進(jìn)行詞向量的模型訓(xùn)練,語(yǔ)料庫(kù)中包含24.8萬(wàn)詞。
3.2.2 祈使句分類(lèi)數(shù)據(jù)
在考題祈使句分類(lèi)中,本文利用了華東師范大學(xué)《大學(xué)計(jì)算機(jī)》課程考試2014-2017學(xué)年Office Excel操作題考題作為數(shù)據(jù)集,考題類(lèi)別由任課老師根據(jù)考綱標(biāo)注。其中每一學(xué)年的考題共有10套試卷,每套試卷有17~22題不等的考題,綜合覆蓋了57個(gè)不同的考點(diǎn)。實(shí)驗(yàn)采用3年考題作為樣本,1年考題作為測(cè)試數(shù)據(jù)的交叉驗(yàn)證方式。
將考題語(yǔ)料以每道考題對(duì)應(yīng)一個(gè)考點(diǎn)為單位進(jìn)行簡(jiǎn)單的分割,并將考題結(jié)構(gòu)化,即將考題以考題文本、分值、考試信息等數(shù)據(jù)存入樣本語(yǔ)料庫(kù)、測(cè)試集語(yǔ)料庫(kù)中,以備在考點(diǎn)分類(lèi)后的批閱過(guò)程中使用。
考題原語(yǔ)料舉例:“在工作表1中,計(jì)算出各種價(jià)格的平均值,并為圖表邊框設(shè)置“內(nèi)部右下角”的陰影。(4分)”;“為第一行標(biāo)題添加如樣張所示的雙線(xiàn)邊框。(2分)”
預(yù)處理后的結(jié)構(gòu)化存儲(chǔ)方式如表1所示。
表1 考題祈使句結(jié)構(gòu)化存儲(chǔ)方式舉例
3.4.1 語(yǔ)義依存樹(shù)的生成與剪枝
本文利用選自人民日?qǐng)?bào)的標(biāo)注好完整語(yǔ)法依存樹(shù)的20 000句短句,利用剪枝前后的標(biāo)注方式經(jīng)兩次編碼后訓(xùn)練出條件隨機(jī)場(chǎng)分類(lèi)模型。根據(jù)結(jié)構(gòu)化后的文本內(nèi)容字段,分別進(jìn)行分詞和編碼,編碼的序列標(biāo)簽分別為未剪枝與剪枝后,并將編碼的結(jié)果放入條件隨機(jī)場(chǎng)模型進(jìn)行計(jì)算,得出序列標(biāo)注結(jié)果如表2所示。
表2 剪枝前后的序列標(biāo)注結(jié)果舉例
解碼后對(duì)應(yīng)的語(yǔ)義依存樹(shù)分別如圖4-圖5所示。
圖4 16102號(hào)考題語(yǔ)義依存樹(shù)解析(剪枝前)
圖5 16102號(hào)考題語(yǔ)義依存樹(shù)解析(剪枝后)
通過(guò)對(duì)文獻(xiàn)[6]中編碼方式針對(duì)于祈使句式的簡(jiǎn)化,重新對(duì)分詞標(biāo)簽進(jìn)行編碼,減少語(yǔ)法標(biāo)簽,實(shí)現(xiàn)對(duì)語(yǔ)義依存樹(shù)的剪枝,從而使訓(xùn)練時(shí)間減少約70%。
3.4.2 類(lèi)別核心詞庫(kù)的生成
根據(jù)基于依存語(yǔ)法的核心詞匯提取,根據(jù)標(biāo)注的樣本標(biāo)簽,匯總到每個(gè)考點(diǎn),每個(gè)考點(diǎn)類(lèi)別形成了一個(gè)由若干詞組成的核心詞庫(kù),如表3所示。
表3 考題類(lèi)別核心詞庫(kù)舉例
3.4.3 詞向量的訓(xùn)練
利用Google的開(kāi)源工具包Word2Vec在NCRE試題及模擬題和計(jì)算機(jī)基礎(chǔ)課操作題的語(yǔ)料進(jìn)行分詞、停用詞刪除和數(shù)據(jù)清洗之后訓(xùn)練,詞向量維數(shù)為200。訓(xùn)練出的詞向量以“行楷”、“函數(shù)”兩個(gè)詞為例,分別與其語(yǔ)義相關(guān)性最大的相關(guān)詞結(jié)果如表4所示。
表4 基于詞向量的語(yǔ)義相關(guān)性計(jì)算結(jié)果舉例
3.4.4 分類(lèi)結(jié)果與分析
根據(jù)核心詞匯的提取與統(tǒng)計(jì),One-Hot核心詞典中共286個(gè)詞,分別將考點(diǎn)核心詞庫(kù)和測(cè)試集中考題語(yǔ)料向量化后進(jìn)行基于類(lèi)別特征的余弦相似度、Jaccard相似度的計(jì)算。同時(shí)將待測(cè)文本向量在樣本空間中進(jìn)行KNN和SVM算法分類(lèi),并利用卡方指數(shù)提取核心詞作為對(duì)比實(shí)驗(yàn)。其中KNN和SVM算法均使用實(shí)驗(yàn)后效果最佳的參數(shù),Word2Vec詞向量表示向量為200維。實(shí)驗(yàn)結(jié)果如表5所示。
表5 考題分類(lèi)結(jié)果
從實(shí)驗(yàn)結(jié)果可以看出,提取語(yǔ)義依存核心詞,并用這些核心詞的詞向量進(jìn)行相似度計(jì)算,產(chǎn)生的分類(lèi)效果最佳。語(yǔ)義依存特征在大部分分類(lèi)算法的情況下的分類(lèi)效果都優(yōu)于卡方核心詞。因此語(yǔ)義依存核心詞的提取,更能在祈使句中刻畫(huà)句子特征。
相比于普通的句子分類(lèi)方法,本文利用了祈使句的特殊性,運(yùn)用依存語(yǔ)法特征選取方法,將語(yǔ)義依存的特征信息作為向量權(quán)重映射到向量空間,并分別采用了包括Word2Vec相似度和傳統(tǒng)分類(lèi)方法在內(nèi)的多種方法實(shí)現(xiàn)了將祈使句分類(lèi)。
在實(shí)際運(yùn)用部分,本文以O(shè)ffice Excel考題為例,闡述了祈使句分類(lèi)算法的實(shí)例,即為考題根據(jù)考點(diǎn)分類(lèi)的方法,可以直接推廣在其他操作類(lèi)主觀題自動(dòng)評(píng)閱系統(tǒng)中,以減輕評(píng)閱教師為自動(dòng)評(píng)閱系統(tǒng)標(biāo)注分類(lèi)考點(diǎn)的壓力。還可以用于將考題分類(lèi)結(jié)構(gòu)化,實(shí)現(xiàn)自動(dòng)出題、分析考試錯(cuò)誤率分布情況等方面。
除了考題考點(diǎn)分類(lèi)之外,針對(duì)其他領(lǐng)域的祈使句類(lèi)型,本文的方法還可以運(yùn)用于智能駕駛、智能家居等領(lǐng)域的自然語(yǔ)言命令預(yù)分揀模塊,從而簡(jiǎn)化系統(tǒng),減少系統(tǒng)不必要的負(fù)荷。
本文的方法也有不足之處。對(duì)相關(guān)領(lǐng)域語(yǔ)料有一定規(guī)模的要求,完全影響到生成的詞向量的質(zhì)量。同時(shí)對(duì)復(fù)合類(lèi)別的祈使句類(lèi)別分析效果欠佳。