◆喬士君
安全模型、算法與編程
基于面向?qū)ο笳Z言模型的自然語言處理
◆喬士君
(鄭州大學(xué)北校區(qū)軟件學(xué)院 河南 45002)
本文嘗試采用一種全新的語法來構(gòu)建自然語言模型,本文構(gòu)建的新模型可以更好地處理語句之間的邏輯關(guān)系。在處理過于抽象語句的過程中,該模型靈活度遠(yuǎn)高于現(xiàn)有的語言模型靈活度。該模型參考了計算機語言中面向?qū)ο笏枷耄绻麑γ嫦驅(qū)ο笏枷敫拍钶^為熟悉的話,就會更加容易理解本文采用的新語法。
自然語言;處理;面向?qū)ο?;設(shè)計
在當(dāng)今互聯(lián)網(wǎng)快速發(fā)展的時代,計算機硬件的更新迭代更加迅速,軟件的架構(gòu)與功能愈加復(fù)雜和完善。在計算機匯編語言中,面向?qū)ο笏枷肟梢詭椭绦騿T更好的編寫更加復(fù)雜的功能更加完善的計算機程序。人工智能等會是未來的大趨勢,未來的軟件也會向智能化發(fā)展。目前而言,制約軟件智能化發(fā)展的關(guān)鍵因素已不再是計算機的計算能力,而是現(xiàn)有的計算機語法理論的制約。如果計算機語法在理論方面沒有什么革命性的突破進展,那么軟件智能化也將會難以快速發(fā)展。
絕大多數(shù)程序員設(shè)計程序時采用的面向?qū)ο笏枷耄梢詭椭⒁环N新的語法模型,從而可以更好地將自然語言轉(zhuǎn)化為機器語言。采用面向?qū)ο笏枷虢⒌恼Z言模型比現(xiàn)有語法模型更加靈活,并且適用性更強,從而能夠處理復(fù)雜語句的邏輯關(guān)系,它將極大影響未來計算機領(lǐng)域?qū)ψ匀徽Z言的處理。
自然語言處理并不是常規(guī)地研究人類語言,而在于實現(xiàn)能有效地實現(xiàn)人與計算機用自然語言通信的計算機系統(tǒng),特別是其中的軟件系統(tǒng)。傳統(tǒng)的自然語言處理方式簡單粗暴,回復(fù)答案需要手工輸入且其不能進行自主學(xué)習(xí),對于未錄入語句無法處理,而且句子之間沒有明顯的邏輯關(guān)系。當(dāng)前自然語言處理技術(shù)采用的是舊式語法,舊式語法不能給出句子與句子之間的邏輯關(guān)系,因此在理論層面上就不可能處理復(fù)雜的邏輯問題。
面向?qū)ο笏枷雭碓从谟嬎銠C程序設(shè)計,面向?qū)ο笏枷朊枋龅氖穷惻c類之間的關(guān)系,可以使系統(tǒng)直接地映射問題域,保持問題域中事物及其相互關(guān)系的本來面貌。通過將編程語言轉(zhuǎn)換成類對象來幫助程序員處理邏輯關(guān)系。
面向?qū)ο缶幊讨凶罨镜倪壿媶挝皇穷?,一個類有類名、屬性值、方法名、父類等基本信息,類與類之間有繼承、關(guān)聯(lián)、聚合、依賴、組合等基本關(guān)系。例如“汽車”轉(zhuǎn)換成類:“汽車”是類名,“重量”、“移動速度”是屬性值,“移動”是方法,“交通工具”是父類?!捌嚒崩^承于“交通工具”,“汽車”和“加油站”是關(guān)聯(lián)關(guān)系,“汽車”和“輪胎”是聚合關(guān)系,“汽車”和“司機”是依賴關(guān)系,“汽車”和“發(fā)動機”是組合關(guān)系。
面向?qū)ο笳Z言模型是構(gòu)建的全新的語言模型,現(xiàn)有語法模型只能夠孤立的分析句子成分,但面向?qū)ο笳Z言模型可以將句子轉(zhuǎn)化為類,將句子之間的關(guān)系轉(zhuǎn)化為類與類之間的關(guān)系。
一個句子通常描述某物做某事,某物怎么樣。把它們與面向?qū)ο笏枷胫械念惵?lián)系后,“某物”可以代表為類名,“做”這個動作可以表示為方法,“某物”和“某事”中的賓語可以表示為方法的參數(shù),“怎么樣”可以表示為某物的屬性值。“小明給花澆水”,“小明”為類名,“給…澆水”為方法,“小明”和“花”為“給…澆水”的參數(shù)?!敖o…澆水”是“小明”這個類里面的一個方法?!斑@個房子非常大”,“這個房子”為類名,“大”為“這個房子”的屬性,“非?!北硎緦傩缘闹凳嵌嗌伲降子卸唷按蟆?,作用類似于數(shù)詞。
“金錢”可以單獨作為實體對象,它也可以用于表示一個人的屬性?!敖疱X”在作為實體時有“重量”屬性,它的父類“小型物體”是“投擲”方法的參數(shù)。“小明在投擲”這句話中,缺失了被投擲物,可以補全為“小明投擲小型物體”。至于投擲后的結(jié)果,需要根據(jù)“小型物體”和“小明”的屬性確定。假如“小型物體”換成子類“金錢”,那么可以通過查詢“金錢”的“重量”屬性,借助機器學(xué)習(xí)給出確定的返回結(jié)果。
小明投擲了金錢,“小明”的“金錢”屬性就會減少?!敖疱X”在這里是名詞而不是形容詞,因為“投擲”方法的參數(shù)是“小型物體”而不是基本屬性?!敖疱X”和其他屬性,如“溫度”,“形狀”等不同,這些屬性沒有實體但“金錢”有實體?!敖疱X”和“小明”的關(guān)系類似于基本屬性但不能當(dāng)基本屬性處理?!敖疱X”和“小明”的關(guān)系更像是面向?qū)ο蠓椒ㄖ械木酆详P(guān)系。它在新模型中被稱為類屬性。
舊模型中的名詞相當(dāng)于類名,動詞相當(dāng)于方法名,名詞和形容詞相當(dāng)于動作的參數(shù),形容詞相當(dāng)于屬性,副詞和數(shù)詞相當(dāng)于屬性的具體數(shù)值,部分賓補相當(dāng)于方法的返回值,如果“小明”做一個事,“小明”這個類就多一個方法,“小明”怎么樣,“小明就多一個屬性。
屬性分為基本屬性和類屬性,基本屬性是“溫度”,“重量”,“數(shù)量”等無實體對象,類屬性是“金錢”等有實體對象。在編程語言中,基本屬性可以直接用基本數(shù)據(jù)類型來代替。
舊模型中很多名詞在新模型中作為形容詞或副詞,如“優(yōu)勢”在新模型中屬于副詞,很多復(fù)合名詞在新模型中可以看作被形容詞修飾的名詞,如“知識分子”可以看作這個人的知識屬性特別高。很多形容詞需要和其他形容詞劃分為同一屬性。如“金錢”,“財富”在作為“人”的屬性時需要當(dāng)同一個屬性處理。并且很多形容詞自帶副詞修飾,這里簡稱為復(fù)合形容詞。如“大”和“小”在描述物體時都屬于“體積”屬性,并且自帶副詞修飾(表1)。
表1 屬性表
一個句子之中經(jīng)常會出現(xiàn)省略某些詞語后,仍然可以得出正確意思并被人理解。比如“我有優(yōu)勢”,在舊語法中,“有”后面常跟名詞,這里一般把“優(yōu)勢”當(dāng)作名詞看待,但是下一句話“我在資金上有優(yōu)勢”優(yōu)勢好像是修飾資金的,所以“優(yōu)勢”又是形容詞了。其這里稱這種現(xiàn)象為成分殘缺。成分殘缺并不會影響人們對句子的理解,但是如果想把句子轉(zhuǎn)換為對象,那就必須把殘缺的部分補出來。
存在一種如下的情況,某些語句在舊模型沒有問題不存在錯誤,但是放在新模型則需要補全缺失成分才能轉(zhuǎn)換為類模型?!靶∶髟谕稊S”中就缺失了方法參數(shù),補全缺失部分需要借助于機器學(xué)習(xí),通過比較“投擲”后跟的對象,可以判斷出被投擲物的公共父類,那么就可以使用被投擲物的公共父類來當(dāng)作補全內(nèi)容,如“小型物體”。如果追求更高精度預(yù)測,推薦通過補全更多的形容詞來增加參數(shù)數(shù)量,如“身體強壯程度未知的小明在使用未知的力度以未知的角度投擲未知的物體”。
在舊模型中是無法處理數(shù)學(xué)模型的。如1+1=2,舊模型不能判斷主語謂語和賓語。但是新模型可以處理,這便是新模型的一大優(yōu)勢。
前邊提到過成分殘缺現(xiàn)象,而數(shù)學(xué)其實就是成分殘缺的極致表現(xiàn)。數(shù)量為1的蘋果添加數(shù)量為1的香蕉等于數(shù)量為1的蘋果,這里1+1=1,當(dāng)然這里的等于和數(shù)學(xué)中的等于有點不同。1是蘋果的數(shù)量屬性的具體值,數(shù)學(xué)為了便于分析,常常將多余的部分省略,但是只要補全缺失成分,抽象如數(shù)學(xué)的語句也能夠轉(zhuǎn)換為類模型。
方法是類與類之間最重要的關(guān)系,方法返回對象有時候是修改參數(shù)屬性值,如“小明身體長高了”,“長高”方法返回對象仍是小明,但是修改了小明屬性值。有時候方法返回全新對象,如“木炭,氧氣,在高溫下燃燒產(chǎn)生二氧化碳和熱量”這里燃燒的參數(shù)是“木炭”,“氧氣”,“高溫”,返回值是全新對象而且毫無規(guī)律可言。在判斷返回值時通常借助于神經(jīng)網(wǎng)絡(luò)模型,比較方法輸入的參數(shù)判斷具體返回值內(nèi)容。這里建議讓“燃燒”方法屬于“木炭”的父類“可燃物”和“氧氣”,“高溫”屬于“可燃物”或“氧氣”的“溫度”屬性。
面向?qū)ο笳Z言模型處理的是對象之間的邏輯關(guān)系,疑問句屬于邏輯判斷,但是疑問部分不描述類與類之間的關(guān)系,因此疑問句的疑問部分無法轉(zhuǎn)換為面向?qū)ο竽P?。但面向?qū)ο笳Z言模型可以輕松判斷一般疑問句,在對比疑問句中的類模型和計算機已經(jīng)存儲的類模型后可以輕松回答yes或no。而對于部分特殊疑問句的處理類似于對象補全,也不會特別麻煩。在對于神經(jīng)網(wǎng)絡(luò)訓(xùn)練集中的自然人的問答中,一個人的疑問句后通常會得到另一個人的解答,這個解答有時候就是前一個人的疑問句中的動作的執(zhí)行后的結(jié)果,如“氧氣和二氧化碳燃燒后會產(chǎn)生什么物質(zhì)?”“二氧化碳”。第二個人的回答在這時候可以當(dāng)作“燃燒”方法在參數(shù)為“氧氣”和“二氧化碳”時的返回值,但具體是否合適需要進一步分析。
祈使句無對象,無法轉(zhuǎn)換為面向?qū)ο笳Z言模型。
如“小紅坐火車去北京”中“小紅坐火車”,“小紅去北京”,“火車去北京”按三句話處理,有三個動作所以有三個返回值,分別由機器學(xué)習(xí)給出。然后“小紅坐火車”的返回值是“某物去北京”的參數(shù),“火車去北京”的返回值是“小紅坐某物”的參數(shù),“小紅去北京”的返回值是“某物坐火車”的參數(shù)。
“1個蘋果加1個蘋果等于2個蘋果”,出現(xiàn)“等于”,“會”等詞匯時賓補就可以當(dāng)返回值了。因此,本文構(gòu)建全新的自然語言處理模型可以更好處理語言中的上下文關(guān)系,對于語句的適應(yīng)性也遠(yuǎn)高于舊的語法模型。但是自然語言處理技術(shù)仍存在不少難題,例如單詞的歧義處理。處理有歧義的單詞需要大量的經(jīng)驗,現(xiàn)如今仍然缺乏良好的模型來處理單詞的歧義。自然語言處理技術(shù)可用于機器翻譯、打擊垃圾郵件、信息提取、文本情感分析、自動問答、個性化推薦等領(lǐng)域。
自然語言處理是計算機科學(xué),人類語言學(xué)之間的相互作用的領(lǐng)域。用自然語言與計算機進行智能化的溝通交流,這是長期以來的研究所追求的目標(biāo)。自然語言處理的最終目標(biāo)是減少自然語言與機器語言之間的差距,讓計算機能夠像人類一樣理解并處理自然語言。在未來的自然語言處理技術(shù)發(fā)展將會幫助人工智能處理更加復(fù)雜且困難的問題,最終將會帶來一個更加智能化的時代。
[1]馮志偉.計算機語言的歷史回顧與現(xiàn)狀分析[J].上海外國語大學(xué)學(xué)報, 2011(01).
[2]李生.自然語言處理的研究與發(fā)展[J].燕山大學(xué)學(xué)報, 2013(9).