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