趙 飛,劉文婷
(綏化學(xué)院,黑龍江 綏化 152061)
關(guān)系型數(shù)據(jù)庫發(fā)展至今已經(jīng)是一種成熟的數(shù)據(jù)存儲(chǔ)與管理技術(shù).數(shù)據(jù)在關(guān)系型數(shù)據(jù)庫中具有規(guī)則的結(jié)構(gòu),因此被稱為結(jié)構(gòu)化數(shù)據(jù).使用結(jié)構(gòu)化查詢語言(SQL語句)可以滿足對(duì)關(guān)系型數(shù)據(jù)庫中的結(jié)構(gòu)化數(shù)據(jù)進(jìn)行查找.目前針對(duì)SQL語句查詢的算法已經(jīng)相當(dāng)成熟,使用SQL語句進(jìn)行查詢已經(jīng)相當(dāng)方便.但用戶要有一定的數(shù)據(jù)庫知識(shí),并且了解SQL語句才能完成對(duì)關(guān)系數(shù)據(jù)庫的查找,這對(duì)于一般的非專業(yè)用戶還是存在一定的難度.就目前而言,大部分的非專業(yè)用戶還無法靈活地對(duì)數(shù)據(jù)庫進(jìn)行查詢.而隨著當(dāng)前社會(huì)競(jìng)爭(zhēng)愈來愈激烈,越來越多的非專業(yè)用戶希望可以靈活地對(duì)數(shù)據(jù)庫進(jìn)行操作,從而提升自己的科研水平和工作效率.如何使非專業(yè)用戶可以快速地查詢數(shù)據(jù)庫已經(jīng)成為目前程序開發(fā)人員面臨的新課題.
基于自然語言的數(shù)據(jù)庫查詢接口,是通過人們?nèi)粘Uf話使用的語言查詢數(shù)據(jù)庫,使數(shù)據(jù)庫可以返回結(jié)果.與使用SQL語句查詢數(shù)據(jù)庫的方式相比,使用自然語言最大的優(yōu)勢(shì)在于非專業(yè)的用戶不需要去了解數(shù)據(jù)庫的機(jī)構(gòu)和邏輯方式,從而不需要進(jìn)行專業(yè)的培訓(xùn)或者只需要簡(jiǎn)單的培訓(xùn)即可查詢數(shù)據(jù)庫.這樣大大地減少了非專業(yè)用戶的負(fù)擔(dān),節(jié)省了時(shí)間,提高了效率.而國內(nèi)的數(shù)據(jù)庫自然語言接口技術(shù)相對(duì)于西方國家發(fā)展較晚,再加上漢語的語法、語義相對(duì)于英語也更加的復(fù)雜,使得我國在自然語言查詢數(shù)據(jù)庫方面發(fā)展較慢.
隨著數(shù)據(jù)庫技術(shù)的發(fā)展,數(shù)據(jù)庫查詢方式更加趨向于方便化,因此通過語言直接對(duì)數(shù)據(jù)庫進(jìn)行查詢的想法應(yīng)運(yùn)而生,便提出了數(shù)據(jù)庫自然語言接口(Natural Language Interface of Database NLIDB)的概念.20世紀(jì)60年代,英語數(shù)據(jù)庫查詢系統(tǒng)BASWABLL在國外產(chǎn)生,當(dāng)時(shí)的BASWABLL系統(tǒng)還沒有語音識(shí)別能力,需要用戶手動(dòng)輸入英語,BASWABLL會(huì)根據(jù)輸入的關(guān)鍵字進(jìn)行匹配,為用戶提供相應(yīng)的數(shù)據(jù)庫內(nèi)容.20世紀(jì)70年代,LUNAR系統(tǒng)在美國產(chǎn)生,被用于查詢美國國家航空和航天管理局的一個(gè)數(shù)據(jù)庫.而LUNAR系統(tǒng)相比BASWABLL系統(tǒng)有了本質(zhì)的提升,LUNAR系統(tǒng)不再是簡(jiǎn)單地進(jìn)行關(guān)鍵字的匹配,而是可以對(duì)英語的語法和語義進(jìn)行分析,可以更精確地理解用戶的意思.
國內(nèi)的自然語言數(shù)據(jù)接口發(fā)展較晚,并且發(fā)展速度也很慢,而且功能還很局限,基本上都是停留在關(guān)鍵字匹配的階段,本身也沒有什么移植能力,都是針對(duì)專門的數(shù)據(jù)庫設(shè)計(jì)的專門的接口,加上漢語語法本身就復(fù)雜,因此一直沒有產(chǎn)生非常實(shí)用的漢語數(shù)據(jù)庫查詢接口技術(shù).20世紀(jì)80年代初期,清華大學(xué)研制出了CNLIES系統(tǒng),算是漢語數(shù)據(jù)庫查詢接口的鼻祖.之后分別在清華大學(xué),華中理工大學(xué),上海工業(yè)大學(xué)又分別出現(xiàn)了一些漢語數(shù)據(jù)庫查詢接口,但由于匹配方式差,無法分析語法,而且各個(gè)學(xué)校也都是獨(dú)自為營(yíng),自己研究自己的導(dǎo)致研究成果也沒有移植性,因此漢語數(shù)據(jù)庫查詢接口并沒有得到實(shí)質(zhì)性的發(fā)展.
語言是人類交換信息的載體,是一個(gè)非常龐大復(fù)雜、又在不斷發(fā)展演變的開放式符號(hào)系統(tǒng).不同的國家所使用的語言也是千差萬別,即使是在同一國家,也會(huì)因地域的差異產(chǎn)生各種各樣的方言.因此要處理目前所有在使用的語言,從目前的技術(shù)上來講是不可能的.只有將語言限制在某種范圍內(nèi),即將其中的一小部分應(yīng)用于某一具體的數(shù)據(jù)庫接口上.這樣在目前的技術(shù)上來講才是可行的.因此數(shù)據(jù)庫自然語言接口應(yīng)具有以下特點(diǎn):
a)由于目前人工智能發(fā)展水平有限,對(duì)帶有感情色彩的詞還無法帶有感情色彩的理解,所以為了使查詢更為準(zhǔn)確,不可以在查詢過程中使用帶有感情色彩的詞語,成語,方言等.再有句型也不能太過復(fù)雜,太長(zhǎng)的句子目前還無法被完全理解,只有使用簡(jiǎn)單的主謂賓句型才能更容易被理解.
b)另外查詢過程也不宜太長(zhǎng),太長(zhǎng)會(huì)產(chǎn)生很多上下文關(guān)聯(lián)的內(nèi)容,這些內(nèi)容更容易產(chǎn)生歧義,使查詢不準(zhǔn)確導(dǎo)致查詢失敗.語言查詢接口是將我們平時(shí)的語言轉(zhuǎn)化成數(shù)據(jù)庫查詢語言,由于兩種語言在語法上的差別巨大,因此我們使用盡量簡(jiǎn)單的語言表示清楚我們的意思,才更容易實(shí)現(xiàn)準(zhǔn)確的轉(zhuǎn)化過程.
目前自然語言接口主要通過模板匹配、句法系統(tǒng)和語義語法等技術(shù)和方法實(shí)現(xiàn).
模板與用戶的輸入進(jìn)行匹配,看是否可以找到匹配結(jié)果,一旦找到便可以通過匹配到的結(jié)果返回用戶需要查詢的內(nèi)容.這種方法是自然語言接口最為簡(jiǎn)單的技術(shù),而且效果也相當(dāng)?shù)牟诲e(cuò).模板匹配開放的系統(tǒng)更容易給使用者留下深刻印象,例如QQ聊天機(jī)器人,就是基于這種技術(shù)開發(fā)出來的.模板匹配技術(shù)最主要的優(yōu)點(diǎn)就是使用簡(jiǎn)單,沒有復(fù)雜句法分析和語義解釋模塊.也正是因?yàn)槿绱?,模板匹配技術(shù)分析的深度不夠,會(huì)把錯(cuò)亂的句子當(dāng)作正常句子來接受,從而導(dǎo)致各種錯(cuò)誤的查詢.
入的語言進(jìn)行句法分析.這些文法包括短語文法、上下文相關(guān)文法、上下文無關(guān)文法和正規(guī)文法.經(jīng)過嚴(yán)格的句法分析后,句法系統(tǒng)會(huì)排出不符合文法的輸入語言,只保留正確的輸入語言.經(jīng)過這樣的篩選后,句法系統(tǒng)則可以避免產(chǎn)生類似于模板匹配系統(tǒng)產(chǎn)生的錯(cuò)誤,使得系統(tǒng)更為嚴(yán)謹(jǐn).但這種系統(tǒng)的缺點(diǎn)也是顯而易見的,引入文法會(huì)大大增加整個(gè)系統(tǒng)的復(fù)雜度.句法分析系統(tǒng)一般只能用于特定的數(shù)據(jù)庫界面,其數(shù)據(jù)庫查詢語言是經(jīng)過嚴(yán)格設(shè)計(jì)的,只有這樣才能保證從分析的結(jié)果到查詢語句的映射.
的文法也構(gòu)建在這些標(biāo)簽之上,這樣便只針對(duì)特定領(lǐng)域進(jìn)行語言查詢大大降低了系統(tǒng)的復(fù)雜度.但這種方法使語義和語法結(jié)合在一起,所以使整個(gè)系統(tǒng)的移植性變差了許多.語義語法系統(tǒng)的執(zhí)行過程與句法分析系統(tǒng)基本相似,同樣也是對(duì)用戶輸入的查詢語言進(jìn)行句法分析,然后將分析得到的結(jié)果直接與數(shù)據(jù)庫查詢語句(如SQL)映射,最后返回用戶要查詢的結(jié)果.兩者最大的不同便是語義語法系統(tǒng)不需要同句法概念相對(duì)應(yīng).
ER模型是一種特殊的概念模型,它詳細(xì)地?cái)⑹隽四硞€(gè)事物的各個(gè)方面,在數(shù)據(jù)庫設(shè)計(jì)中被廣泛用作數(shù)據(jù)建模工具.目前大部分的數(shù)據(jù)庫都是關(guān)系型數(shù)據(jù)庫,ER模型則可以很容易地轉(zhuǎn)化為關(guān)系模型,建立相同的名稱關(guān)系,且具有相同的屬性.這樣實(shí)體中鍵值的屬性和聯(lián)系固有的屬性值則可以在關(guān)系模型中得以轉(zhuǎn)化體現(xiàn).可見,ER模型可以便捷地轉(zhuǎn)換為關(guān)系型數(shù)據(jù)庫,兩者具有密不可分的關(guān)系,這樣通過ER模型建立一座自然語言與數(shù)據(jù)庫的橋梁則成了自然語言數(shù)據(jù)庫接口的一個(gè)突破口.
由于自然語言都是生活中使用的語言,這與數(shù)據(jù)庫所使用的SQL語言是完全不同的,如何將自然語言轉(zhuǎn)化為SQL語言則是實(shí)現(xiàn)數(shù)據(jù)庫自然語言接口的重點(diǎn).如果可以存在一種中間語言,可以將自然語言轉(zhuǎn)化為SQL語言,又能保證用戶的輸入不被誤解,計(jì)算機(jī)又可以理解,就可以完成由自然語言轉(zhuǎn)化為數(shù)據(jù)庫語言的過程了.在選取中間語言時(shí),應(yīng)結(jié)合關(guān)系模型把文本分解,將分解后的單一詞組進(jìn)行排列,每個(gè)單一詞組都對(duì)應(yīng)一條數(shù)據(jù)庫知識(shí)庫的屬性值,最后保留翻譯結(jié)果.在轉(zhuǎn)化過程中,可以更加細(xì)化中間語言,這樣可以更好的翻譯成SQL語言.
在設(shè)計(jì)中間語言時(shí)需要注意的是:首先,中間語言并不需要表示出用戶的全部含義,若表示出全部含義,中間語言則會(huì)變得非常復(fù)雜且龐大,這為后期SQL語言的轉(zhuǎn)化制造了巨大的麻煩.其次,中間語言設(shè)計(jì)的目的要明確,即連接自然語言與數(shù)據(jù)庫查詢語言之間的橋梁的作用.再次,設(shè)計(jì)出的中間語言要保證是無歧義的,意義清楚明白,這樣才能轉(zhuǎn)換成SQL語言來查詢數(shù)據(jù)庫.若存在歧義,則會(huì)導(dǎo)致轉(zhuǎn)化的SQL語言不準(zhǔn)確,最終導(dǎo)致查詢不準(zhǔn)確.最后,中間語言的設(shè)計(jì)也和軟件的設(shè)計(jì)是一樣的,不可能在短期內(nèi)設(shè)計(jì)出完美的中間語言,需要通過開發(fā)人員不斷地實(shí)踐.所以這里就要求中間語言一定要具有可重塑性,便于二次開發(fā).
SQL語言是關(guān)系代數(shù)與關(guān)系演算之間的結(jié)構(gòu)化查詢語言,其主要功能就是實(shí)現(xiàn)數(shù)據(jù)庫的查詢.基本的查詢語句形式為SELECT-FROM-WHERE,并且可以嵌套執(zhí)行.表示的意義是查詢FROM子句所確定的查找表的位置,WHERE子句則用來限定用戶的查找條件,再通過與SELECT子句配合,就可以限定表名或者視圖名,最終返回?cái)?shù)據(jù).通過使用SELECT語句則可以完成大部分的數(shù)據(jù)庫查詢.
本文討論了基于自然語言的數(shù)據(jù)庫查詢接口,所做的主要工作有以下幾項(xiàng):
7.1 討論了目前國內(nèi)和國際基于自然語言的數(shù)據(jù)庫查詢接口的發(fā)展現(xiàn)狀,通過分析一個(gè)普通用戶查詢數(shù)據(jù)庫中信息的過程,總結(jié)了查詢過程的特點(diǎn)并詳細(xì)分析了其特性.
7.2 由于英語和漢語的差別巨大,如何進(jìn)行精準(zhǔn)的句法分析,獲得準(zhǔn)確的分詞,設(shè)計(jì)適當(dāng)?shù)闹虚g語言并消除歧義,對(duì)中間語言再研究再更新.這成了本文研究的重點(diǎn)與難點(diǎn)之一.
目前自然語言的數(shù)據(jù)庫查詢使用還并不廣泛,僅限于一些指定地點(diǎn)的指定內(nèi)容的查詢.未來會(huì)有更多新興領(lǐng)域移植自然語言數(shù)據(jù)庫查詢系統(tǒng).使得自然語言的查詢不再需要走到指定的地點(diǎn)進(jìn)行指定內(nèi)容的查詢,而是可以通過移動(dòng)電話走進(jìn)千家萬戶.使用起來更加方便、快捷.
赤峰學(xué)院學(xué)報(bào)·自然科學(xué)版2018年6期