王裴巖 李林娜 沈思嘉
(沈陽航空航天大學(xué)人機(jī)智能研究中心,遼寧沈陽 110136)
詞匯語義知識庫在自然語言處理的各任務(wù)中都扮演著重要角色?,F(xiàn)有的詞匯語義知識庫主要是面向通用領(lǐng)域的,面向特定領(lǐng)域的較少,因此,構(gòu)建特定領(lǐng)域的術(shù)語語義知識庫具有重要意義。
本文以航空術(shù)語語義知識庫ATHowNet為基礎(chǔ),基于HowNet[1]的理論體系和概念表示形式,提出一種面向復(fù)合術(shù)語的術(shù)語語義知識庫自動構(gòu)建方法。該方法秉承復(fù)雜概念由簡單概念構(gòu)成的思想,由術(shù)語內(nèi)子詞概念構(gòu)筑術(shù)語概念。術(shù)語概念采用了計(jì)算機(jī)可讀的形式化表示方式。通過實(shí)驗(yàn)驗(yàn)證了本文提出的方法在自動生成復(fù)合型術(shù)語概念表示方面的有效性,并且能夠擴(kuò)展ATHowNet知識庫的數(shù)據(jù)量。
HowNet最初是由董振東和董強(qiáng)在20世紀(jì)90年代設(shè)計(jì)和構(gòu)建的一個以漢語和英語詞語所代表的概念為描述對象,以揭示概念與概念之間以及概念所具有的屬性之間關(guān)系為基本內(nèi)容的常識知識庫[1]。HowNet最大的特點(diǎn)是采用可計(jì)算的知識庫標(biāo)記語言KDML(Knowledge Data Base Markup Language)描述概念?!癏owNet的知識表達(dá)模式是針對計(jì)算機(jī)的信息處理特點(diǎn)而制定的?!盵2]KDML這種形式化表達(dá)方式,便于將HowNet應(yīng)用于相似度計(jì)算[3]、情感分析[4]、詞向量[5-6]、語言建模[7]等。目前,HowNet的網(wǎng)絡(luò)開源版本OpenHowNet[8],包含35 202個概念和237 974個中英文詞。
HowNet遵循還元論,通過義原(sememe)和語義角色(semantic role)描述概念。義原是最小的不可分割的語義單元。HowNet通過對大量中文字的語義進(jìn)行標(biāo)注與歸納,定義了2540個義原,建立了義原的分類(taxonomy),分為事物(thing)、部分(part)、屬性(attribute)、時間(time)、空間(space)、事件(event)與屬性值(attribute-value)7大類。語義角色定義為參與者在真實(shí)或想象的情境中與事件之間的固有關(guān)系,用以描述概念中義原的角色[9]。HowNet定義了116個語義角色。表1給出了術(shù)語“橡膠減震墊”所表示概念的HowNet表示形式(KDML),并列出了涉及的全部義原和語義角色含義?!皃art|部件”與“shiver|顫動”等為義原,whole與instrument等為語義角色。概念表示以“DEF”開始,“{}”表示不同層級的概念,“patient=”表示事件“weaken|削弱”的受事是“shiver|顫動”。需要特別指出的是,“part|部件”作為第一個義原被稱為首義原。KDML的詳細(xì)語法規(guī)則和義原及關(guān)系集,可以參考HowNet在線手冊[10]。
表1 “橡膠減震墊”的概念KDML表示
ATHowNet(Aviation Terms HowNet)[11]是基于HowNet的理論體系與概念表示方法所構(gòu)建的一個航空領(lǐng)域術(shù)語語義知識庫,包含4152條記錄、3864個術(shù)語和3700個概念。ATHowNet擴(kuò)寬了HowNet的適用領(lǐng)域,通過形式化描述航空領(lǐng)域的概念語義,能夠?qū)崿F(xiàn)領(lǐng)域概念相似性運(yùn)算與概念關(guān)系推理。
ATHowNet針對航空領(lǐng)域術(shù)語多為復(fù)合詞或詞組的特點(diǎn),更加注重概念間的構(gòu)筑結(jié)構(gòu),即復(fù)雜概念由簡單的概念構(gòu)建,簡單的概念由更為簡單的概念構(gòu)建,直至基礎(chǔ)概念。表2展示了“橡膠減震墊”的多層級概念構(gòu)筑關(guān)系??梢?“橡膠減震墊”由“墊”“減震”與“橡膠”三個子概念通過語義角色構(gòu)成。如“墊”用來“減震”,由于“減震”的首義原“weaken|削弱”是事件類義原,因此“墊”與“減震”省略了語義角色,其含義是“減震”事件的施事者為“墊”。
表2 “橡膠減震墊”概念層次構(gòu)筑關(guān)系
分布式表征(distributed representation)[12]又叫作嵌入(embedding),是將詞、圖片與文本等離散量轉(zhuǎn)為低維、稠密、連續(xù)向量的技術(shù)。分布式表征能夠通過向量計(jì)算實(shí)現(xiàn)不同粒度與形式數(shù)據(jù)的關(guān)系計(jì)算,如詞與文本間或文本與圖片間的計(jì)算。通常,分布式表征向量間的距離或是向量夾角余弦等運(yùn)算能夠體現(xiàn)兩個被表征對象間的語義距離。這種性質(zhì)被應(yīng)用于句子相似度計(jì)算[12]、問答系統(tǒng)[13]、圖片搜索[14]等問題,例如在句子相似度計(jì)算中將句子中的詞轉(zhuǎn)為低維、稠密、連續(xù)的分布式表征向量,通過兩個句子向量間的夾角余弦或歐式距離來體現(xiàn)句子間的語義相似性。
本文利用分布式表征方法表征概念與術(shù)語定義文本,能夠計(jì)算概念與概念間、概念與文本間的語義距離,用于術(shù)語子詞概念消歧和語義角色判斷。對于概念,其分布式表征向量是全部義原表征向量的平均向量。首先,提取概念內(nèi)全部義原,從騰訊詞向量[15]中查詢出該詞的分布式表征向量,將該向量作為義原的表征向量。騰訊詞向量是通過大規(guī)模文本數(shù)據(jù)訓(xùn)練獲得的,在中文詞語相似度運(yùn)算、詞類比及自然語言處理相關(guān)任務(wù)上都具有較好的效果。對于術(shù)語定義文本,其分布式表征向量是全部詞表征向量的平均向量。用騰訊詞向量的詞表對術(shù)語的定義文本進(jìn)行分詞,并查詢出每個詞的詞向量,求得所有向量的平均向量作為術(shù)語定義文本的分布式表征向量。
人類從客體特性出發(fā),在腦中形成特征和概念(concept),概念反映事物的本質(zhì)屬性,同時也反映具有這種屬性的事物[16]。術(shù)語是專業(yè)領(lǐng)域科學(xué)概念的語言指稱[17],可以是單個詞,也可以是復(fù)合詞,一個詞可以承載多個概念,一個概念也可能由多個詞來體現(xiàn)。復(fù)合術(shù)語[18]是指由多個詞組合而成的術(shù)語,組合結(jié)果所表達(dá)的語義構(gòu)成了領(lǐng)域的重要概念,如“航空地球物理探礦”和“空中加油裝置”是航空領(lǐng)域的復(fù)合術(shù)語,擁有完整的語義,表示領(lǐng)域內(nèi)的重要概念。概念的內(nèi)涵和外延是概念的基本特征,概念的內(nèi)涵反映概念中對象的本質(zhì)屬性,概念的外延反映于思維中具有相同本質(zhì)屬性的事物對象,外延是受內(nèi)涵制約的,如貓的外延包括白貓、花貓等,但不包括黃牛、泰迪。根據(jù)概念的基本特性可將概念分為屬種概念[19],屬概念指具有各個種概念的共同屬性,外延大,內(nèi)涵少,為一般概念,也可理解為上位概念,種概念相對而言是個別概念,根據(jù)種屬概念的從屬關(guān)系,特定語境下種概念會使屬概念的外延縮小[20],直至縮小為獨(dú)立概念。復(fù)雜概念就是由種、屬概念組合而成,來共同描述現(xiàn)實(shí)世界的事物,本文為了方便描述,將種概念和屬概念稱為簡單概念,復(fù)雜概念則由簡單概念構(gòu)筑而成。
本文沿襲并利用ATHowNet的領(lǐng)域概念構(gòu)筑關(guān)系的思想,專門面向復(fù)合型術(shù)語,提出術(shù)語概念KDML表示自動生成方法。
本文提出的方法包括以下四步:
(1)術(shù)語子詞切分:切分出構(gòu)成復(fù)合術(shù)語的子術(shù)語。
(2)子詞的概念消歧:對切分后的子術(shù)語,確定在該術(shù)語內(nèi)所代表的概念。
(3)子詞概念間語義角色判斷:判斷各個子詞概念間是否存在語義角色,若存在則語義角色是什么。
(4)術(shù)語概念描述生成:按照KDML語法規(guī)則,生成術(shù)語的概念表示。
本文以O(shè)penHowNet和ATHowNet中的詞作為詞表,采用逆向最大匹配算法對生成概念表示的術(shù)語進(jìn)行分詞。以O(shè)penHowNet和ATHowNet中的詞作為詞表,能夠保證切分出的詞都帶有KDML概念表示。逆向最大匹配算法能夠保證最大粒度的切分,減少概念消歧和子詞概念動態(tài)角色判斷的數(shù)量,也能夠保證最大粒度地重用已知概念。例如術(shù)語“橡膠減震墊”,其切分結(jié)果為“橡膠”“減震”“墊”三個子詞。若詞表中存在“減震墊”,則切分為“橡膠”與“減震墊”兩個詞。并且將術(shù)語最后一個詞作為術(shù)語核心詞,其概念為屬概念,屬概念的義原為首義原。
術(shù)語子詞切分之后,從OpenHowNet與ATHowNet中查詢出每個子詞的全部KDML概念表示。以術(shù)語“橡膠減震墊”為例,其切分后每個子詞的概念列入表3??梢姟皽p震”與“橡膠”是單義詞,即對應(yīng)1個概念;而“墊”為多義詞,對應(yīng)2個名詞與2個動詞4個不同的概念。依據(jù)術(shù)語“橡膠減震墊”的定義“保護(hù)設(shè)備和儀表部件免受振動和沖擊影響的橡膠用具”,詞“墊”在該術(shù)語中的概念應(yīng)為第1個,表示一種嵌入設(shè)備應(yīng)用的部件。
表3 “橡膠減震墊”的概念KDML表示
術(shù)語定義對術(shù)語概念具有一定的約束性。依據(jù)定義“保護(hù)設(shè)備和儀表部件免受振動和沖擊影響的橡膠用具”,術(shù)語“墊”的概念不可能為2個動詞概念, “設(shè)備”和“儀表”作為“整體”,使得“部件”概念可能性增加。
由此,采用的概念消歧方法是計(jì)算子詞每個概念的分布式表征與術(shù)語定義文本分布式表征的語義距離。與術(shù)語定義文本分布式表征語義距離更近的概念作為最終被選擇的概念。概念分布式表征與定義文本分布式表征采用第2節(jié)介紹的方法。語義距離計(jì)算方法采用向量夾角余弦,如式1所示,向量夾角余弦越大表明語義距離越小。
式1
其中,ec為概念的分布式表征向量,ed為定義文本的分布式表征向量。以“墊”為例,分別計(jì)算4個概念分布式表征向量與術(shù)語定義文本表征向量的向量夾角余弦,取獲得最大值的概念為“墊”的概念。
子詞概念間語義角色判斷采用文獻(xiàn)[21]所提出的基于實(shí)例的KNN(K Nearest Neighbor)方法。該方法將語義角色判斷問題轉(zhuǎn)化為分類問題,分類標(biāo)簽就是HowNet的116個語義角色,即將兩個概念分入某一語義角色類。
首先,從OpenHowNet和ATHowNet的每個概念表示中抽取其子概念及子概念間的語義角色,形成“(概念1, 概念2, 語義角色)”三元組作為KNN的實(shí)例集。例如對于概念“{weaken|削弱:patient={shiver|顫動}}”,則形成三元組“({weaken|削弱}, {shiver|顫動}, patient)”。本文約定三元組中的語義角色是從概念1到概念2的語義角色,并稱概念1為歸屬概念,概念2為被歸屬概念。實(shí)例集中增加了無語義角色的反例,從而在判斷語義角色時能夠判斷出不存在語義角色關(guān)系的兩概念。之后,將實(shí)例集三元組內(nèi)的兩概念用第2節(jié)的方法形成分布式表征向量。三元組形式為(e'c1,e'c2,r'),其中e'c1為三元組概念1的分布式向量表征,e'c2為三元組概念2的分布式概念表征。
判斷語義角色時,將待判斷語義角色的兩個概念采用第2節(jié)方法轉(zhuǎn)為分布式表征向量(ec1,ec2)之后,計(jì)算(ec1,ec2)與實(shí)例集每個三元組(e'c1,e'c2,r')概念間的語義距離,計(jì)算方法如式2所示,其值越大表示語義距離越接近。
式2
選取式2最大的前K個三元組,并將K個元組內(nèi)同一語義角色的語義距離值相加,獲得最大值的語義角色作為待判斷語義角色的兩個概念的語義角色。
概念的KDML是樹形結(jié)構(gòu),也就是一個詞的概念僅有一個屬概念,也可稱為核心概念。因此,首先判斷除術(shù)語核心詞以外所有子詞概念與核心詞概念間的語義角色。如果與核心詞存在語義角色,則不再判斷它與其他詞間的語義角色。若與核心詞之間不存在語義角色,則判斷與其他詞間的語義角色。如果存在沖突,如(ec1,ec2)與(ec2,ec1)都存在語義角色,那么保留語義距離計(jì)算值較大者,從而保證KDML的結(jié)構(gòu)。
本文設(shè)計(jì)了自動生成術(shù)語概念表示質(zhì)量的評價實(shí)驗(yàn)來驗(yàn)證所提出的方法。
由于術(shù)語概念表示的KDML以義原和語義角色為基本單元,通過義原-語義角色-義原構(gòu)筑。因此,本文從義原正確性、語義角色正確性、三元組(義原-語義角色-義原)正確性三個方面來評價。另外,首義原表示了概念的核心語義,因此單獨(dú)評價所生成概念表示的首義原的準(zhǔn)確性。
本文實(shí)驗(yàn)數(shù)據(jù)集使用了OpenHowNet與ATHowNet航空術(shù)語語義知識庫,從ATHowNet中選取300條數(shù)據(jù)作為測試集。其余數(shù)據(jù)作為KNN的實(shí)例集,包含48 983個三元組。
本文對生成概念的首義原、義原、語義角色、三元組(義原-語義角色-義原)分別與測試集進(jìn)行對比。其中義原、語義角色、三元組采用準(zhǔn)確率P(Precision),召回率R(Recall)以及F1值作為最終的實(shí)驗(yàn)評價指標(biāo),具體公式如式3、式4與式5。首義原采用精確率A(Accuracy),如式6。
式3
式4
式5
式6
對本文所選數(shù)據(jù)集獲得的實(shí)驗(yàn)結(jié)果,各評價指標(biāo)所得結(jié)果見表4。
表4 實(shí)驗(yàn)結(jié)果
本文基于概念結(jié)構(gòu)和分布式表示自動生成術(shù)語KDML表示的方法,從表4測試集的評價結(jié)果中可以得出:
(1)本文自動生成方法在義原和首義原上的預(yù)測結(jié)果的F1值和準(zhǔn)確率均超過90%,這兩個指標(biāo)是DEF的重要構(gòu)成部分,其中首義原能描述術(shù)語的基本性質(zhì),總義原衡量術(shù)語整體語義的描述正確與否。實(shí)驗(yàn)結(jié)果表明,采用本文方法能對復(fù)合型術(shù)語的基本性質(zhì)和整體語義進(jìn)行正確描述,在很大程度上保證了語義描述的準(zhǔn)確性和一致性。一方面是因?yàn)樯烧Z義描述的過程中減少了義原的判斷,進(jìn)而保證了數(shù)據(jù)的一致性和準(zhǔn)確性,語義消歧過程也使義原選擇的準(zhǔn)確性大大提高;另一方面,由于測試集選取的是航空領(lǐng)域術(shù)語,實(shí)驗(yàn)數(shù)據(jù)中添加了ATHowNet中除測試集之外的3852條數(shù)據(jù),ATHowNet構(gòu)建的初衷是理解復(fù)雜的航空術(shù)語的語義,同時也對一些簡單概念進(jìn)行標(biāo)注,本文方法會從這部分?jǐn)?shù)據(jù)中獲得航空領(lǐng)域的知識,并結(jié)合通用領(lǐng)域的知識提高義原預(yù)測的準(zhǔn)確率。
(2)預(yù)測語義角色的F1值達(dá)到了78.90%,基于簡單概念生成復(fù)雜概念描述的思想,減少了義原與義原之間語義角色的判斷,另外采用無監(jiān)督的學(xué)習(xí)方法從語義角色選擇的實(shí)例集中確實(shí)學(xué)習(xí)到概念之間語義角色的知識,大大縮小了語義角色的選擇范圍,使選擇正確語義角色的概率大大增加,預(yù)測結(jié)果更加準(zhǔn)確。由于關(guān)系種類有116種,義原有2540種,相近概念之間的語義角色也不盡相同,選擇K近鄰方法雖然縮小了關(guān)系選擇的范圍,但具體情況下使用哪一個語義角色仍具有一定的不確定性;另外,測試集選用人工標(biāo)注的數(shù)據(jù)集,由多位專家編寫術(shù)語DEF,導(dǎo)致在語義角色的選擇上存在個體差異,增大了語義角色選擇的難度。
(3)預(yù)測三元組的F1值達(dá)到了73.41%,預(yù)測結(jié)果雖然沒有上述指標(biāo)高,但能完全體現(xiàn)出采用本文的方法在很大程度上保證了概念描述的一致性和準(zhǔn)確性。由于三元組的形式是(義原,語義角色,義原),不僅要求義原是正確的,而且義原與義原之間的語義角色也要正確,即使義原預(yù)測正確,而語義角色不正確,三元組的結(jié)果也會受到影響,例如ATHowNet中的術(shù)語 “邊際成本”,用本文方法預(yù)測輸出DEF中的一個三元組為(expenditure|費(fèi)用,RelateTo,Boundary|界限),人工標(biāo)注對應(yīng)的三元組為(expenditure|費(fèi)用,concerning,Boundary|界限),但語義角色“RelateTo”和“concerning”都表示“與什么相關(guān)”,語義相似度極高,所以增加了三元組正確預(yù)測的難度。
表5列出了不同長度的復(fù)合型術(shù)語采用本文自動生成術(shù)語KDML表示生成結(jié)果的實(shí)例。
表5 自動生成術(shù)語KDML表示實(shí)例
本文設(shè)計(jì)并實(shí)現(xiàn)了領(lǐng)域HowNet語義知識庫構(gòu)建系統(tǒng),系統(tǒng)共分為4個模塊,分別是輸入模塊、輸出模塊、人工編輯模塊和中間計(jì)算結(jié)果顯示模塊,在本節(jié)以術(shù)語“橡膠減震墊”為例進(jìn)行實(shí)例展示,系統(tǒng)實(shí)現(xiàn)的實(shí)驗(yàn)環(huán)境如表6所示。
表6 實(shí)驗(yàn)環(huán)境說明
(1)系統(tǒng)初始界面。如圖1所示。
圖1 系統(tǒng)初始界面
(2)系統(tǒng)輸入模塊。此處以術(shù)語“橡膠減震墊”為例,如圖2所示。
圖2 系統(tǒng)輸入模塊
(3)系統(tǒng)輸出模塊。輸入術(shù)語后,點(diǎn)擊系統(tǒng)輸出模塊生成DEF按鈕,系統(tǒng)自動在輸出框內(nèi)輸出術(shù)語的KDML描述,如圖3所示的術(shù)語“橡膠減震墊”術(shù)語的輸出DEF,可理解為“一種在嵌入時削弱顫動由橡膠制成的用具”。
圖3 系統(tǒng)輸出模塊
(4)計(jì)算過程結(jié)果顯示。點(diǎn)擊系統(tǒng)最上方的顯示控件會顯示生成DEF的中間計(jì)算過程,并會將語義選擇和語義角色選擇的計(jì)算結(jié)果顯示在對應(yīng)的子模塊。如圖4左邊子模塊中所顯示的,術(shù)語“橡膠減震墊”的分詞以及消歧后分詞對應(yīng)的DEF,與目標(biāo)輸出“DEF={part|部件:{weaken|削弱:patient={shiver|顫動},material={material|材料}},whole={implement|器具},{inlay|嵌入:instrument={~}}}”相比,可得出基于復(fù)雜概念由簡單概念構(gòu)成的思想,使得概念內(nèi)部的語義角色和義原都保證了極大的一致性和準(zhǔn)確性,如義原“weaken|削弱”“shiver|顫動”,語義角色“instrument”“patient”等,極大提高了語義角色和義原的準(zhǔn)確率。
圖4 計(jì)算過程結(jié)果顯示
表7列出了圖4語義角色預(yù)測結(jié)果子模塊中的詳細(xì)內(nèi)容,其中子詞對(墊,減震)預(yù)測得出的語義角色中“RelateTo”“modifier”“null”的得分相同,系統(tǒng)會為概念2處概念首義原類型為事件類義原的情況自動選擇“null”,如圖3系統(tǒng)預(yù)測結(jié)果中顯示概念“墊”與“減震”之間無語義角色連接,可以驗(yàn)證系統(tǒng)能夠正確為概念間預(yù)測語義角色,并按照語法規(guī)則將概念連接起來。概念“橡膠”與“減震”之間的語義角色使用了“MaterialOf”,理解為“橡膠制成材料為減震”,顯然是不正確的,由此也反映出KNN算法能大大縮小語義角色的預(yù)測范圍,但準(zhǔn)確率有待提升,因此本文在設(shè)計(jì)系統(tǒng)時設(shè)置了人工編輯模塊,如圖5所示,以便校正保存。
圖5 人工編輯、格式檢查及保存
表7 “橡膠”“減震”“墊”各概念間的語義角色預(yù)測結(jié)果
本文提出了一種基于概念結(jié)構(gòu)與分布式表征的術(shù)語語義知識庫構(gòu)建方法,該方法面向復(fù)合術(shù)語,基于復(fù)雜概念由簡單概念構(gòu)成的思想,由術(shù)語內(nèi)子詞概念構(gòu)筑出術(shù)語概念。首先將復(fù)合術(shù)語分為子詞,之后消歧確定子詞概念,判斷子詞概念間的語義角色。并且為了使概念與概念之間及概念與文本之間都能夠量化計(jì)算語義距離,采用了分布式表征方法,將概念與術(shù)語定義文本表征為向量,應(yīng)用于子詞概念消歧及語義角色判斷。通過實(shí)驗(yàn),驗(yàn)證了所提出的方法能夠基于術(shù)語及定義自動生成術(shù)語概念的形式化表示。在未來的工作中,考慮將該方法擴(kuò)展至非復(fù)合術(shù)語,雖然非復(fù)合術(shù)語概念不是由子詞概念構(gòu)筑的,但也是由其他相關(guān)概念構(gòu)筑的,研究定義術(shù)語概念的相關(guān)概念范圍是未來的重點(diǎn)。