錢雅萍(集寧師范學(xué)院,內(nèi)蒙古烏蘭察布012000)
數(shù)據(jù)庫自然語言接口技術(shù)研究在教學(xué)中的應(yīng)用
錢雅萍
(集寧師范學(xué)院,內(nèi)蒙古烏蘭察布012000)
數(shù)據(jù)庫結(jié)構(gòu)化查詢系統(tǒng),也稱Structured Query Language(SQL)是一種數(shù)據(jù)庫查詢和程序設(shè)計(jì)語言,也是目前使用最廣泛的數(shù)據(jù)庫語言。本文從數(shù)據(jù)庫結(jié)構(gòu)化查詢系統(tǒng)的現(xiàn)狀和教學(xué)問題出發(fā),提出了中文SQL理念,建立中文SQL語言庫,并結(jié)合具體例子,闡明實(shí)現(xiàn)SQL的三個(gè)步驟和兩個(gè)模塊,從而改進(jìn)SQL的學(xué)習(xí)。
數(shù)據(jù)庫自然語言接口技術(shù);中文SQL語言庫;查詢語言學(xué)習(xí)
數(shù)據(jù)庫自然語言接口是自然語言理解與數(shù)據(jù)庫技術(shù)結(jié)合的產(chǎn)物。作為AI中的自然語言理解的智能接口,近年來受到重視,具有很高的理論價(jià)值與廣泛的應(yīng)用前景。數(shù)據(jù)庫結(jié)構(gòu)化查詢系統(tǒng)是一種數(shù)據(jù)庫查詢和程序設(shè)計(jì)語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng),是目前使用最為廣泛的數(shù)據(jù)庫語言。SQL語言具有簡單和高度結(jié)構(gòu)化的特點(diǎn),但是在實(shí)際的教學(xué)中,學(xué)生一上課就懂,一上機(jī)就無從下手,理論和實(shí)踐的不同步,造成學(xué)習(xí)興趣降低,導(dǎo)致實(shí)驗(yàn)的智力支持和監(jiān)控機(jī)制的缺失。
大多學(xué)生英語綜合水平較低,造成閱讀水平的受限,英文翻譯能力較差。目前院校教學(xué)所使用的數(shù)據(jù)庫管理工具,如SQL、SERVER、ORACLE,盡管都有中文版,但是與其他軟件開發(fā)工具一樣,編寫SQL語句雖然是中文菜單,但程序的編寫仍然是英文的,不利于學(xué)生學(xué)習(xí)。
SQL學(xué)習(xí)中,很容易出現(xiàn)不能理清邏輯狀況:閱讀能力不足,不能理解別人書寫的SQL語句;書寫能力不足,自己不能組織SQL語句。出現(xiàn)這種情況的原因如下:SQL語言與編程語言的邏輯組織方式不同,學(xué)習(xí)時(shí),特別是初學(xué)時(shí)受到編程語言的影響而不易掌握;書寫SQL語句時(shí),隨意性較大,沒有形成SQL語句編碼風(fēng)格,表述無邏輯性;教材例題沒有與實(shí)際掛鉤,學(xué)生對SQL的語句用途不理解。
易語言是由我國軟件人員自主開發(fā),擁有知識(shí)產(chǎn)權(quán),采用全中文編程的軟件開發(fā)系統(tǒng)。易語言與其他編程軟件相比,最大的特點(diǎn)就是編程徹底中文化,編寫的代碼都是中文。這種編程語言有獨(dú)到的優(yōu)勢,可以采用漢語進(jìn)行編程。在教學(xué)過程中,根據(jù)學(xué)生特點(diǎn),基于實(shí)體聯(lián)系圖(Entity Relationship,簡稱ER模式)和受限漢語的關(guān)系數(shù)據(jù)庫漢語查詢語言的計(jì)算模型(Restrictive Chinese Query Language,簡稱RCHIQL)進(jìn)行研究,探討其在SQL語言學(xué)習(xí)中的應(yīng)用。
數(shù)據(jù)庫自然語言界面(Natural Language Interface to a Database,簡稱NLIDB)允許用戶用自然語言對數(shù)據(jù)庫內(nèi)容提出各種操作要求,然后系統(tǒng)自動(dòng)將其轉(zhuǎn)換為數(shù)據(jù)庫的操作語言,從而在數(shù)據(jù)庫中找到正確信息,提供給用戶。該系統(tǒng)的特點(diǎn)是:采用數(shù)據(jù)庫技術(shù)、計(jì)算語言學(xué)和人工智能等多學(xué)科結(jié)合的思路,其模型建立在受限漢語集合上,利用漢語自動(dòng)分詞技術(shù),受限漢語文法是根據(jù)數(shù)據(jù)庫漢語查詢句中常用的詞法與語法而建立的一系列的語法、語義規(guī)則,采用數(shù)據(jù)庫E-R模型與其指稱的數(shù)據(jù)庫模型語意及背景知識(shí)結(jié)合的技術(shù);輸入的漢語查詢句型符合中國人的思維習(xí)慣和表達(dá)方式;在技術(shù)上采用棧結(jié)構(gòu)形式,從漢語句型到SQL中間的語言形式都采用類關(guān)系代數(shù)形式的語義查詢樹,形式上更加靈活,便于自動(dòng)轉(zhuǎn)換;提出了用關(guān)聯(lián)按路徑的方法實(shí)現(xiàn)SQL的轉(zhuǎn)換,避免了多層嵌套搜索。
數(shù)據(jù)庫中文自然語言界面有重大的理論意義和實(shí)用價(jià)值。漢語有區(qū)別于英語的自身獨(dú)特性,機(jī)器處理相對難度較大;加上以往的研究方法不重視數(shù)據(jù)庫技術(shù)在中文查詢語言理解的作用,造成了數(shù)據(jù)庫中文自然語言界面的研究一直進(jìn)展緩慢。中文自然語言處理系統(tǒng)常用的處理方式是:分詞組合、語法分析、語義分析、語境分析等。每個(gè)步驟都要獨(dú)立完成,在自然語言處理時(shí)相對困難,但是處理程序語言還是可以勝任的。
舉例來說,給出如下的數(shù)據(jù)庫表:職工Emp(職工號(hào)EmpNO,姓名EName,任職日期HireDate,職務(wù)Job,工資Sal,部門號(hào)DeptNo)部門Dept(部門號(hào)DeptNo,部門名稱Dname,經(jīng)理號(hào)Mgr)。
如果要對工資普遍偏低(低于1000塊)的部門進(jìn)行加薪,加薪人數(shù)為10人以上,將符合條件的職工信息按照工資升序打印出來,打印信息主要有部門名稱、職工號(hào)、職工姓名、任職日期、職務(wù)、工資等,作為加薪附件。這就要求關(guān)系數(shù)據(jù)庫漢語查詢語言的計(jì)算模型(RCHIQL)理解人類語言,但是這是不可能的,因?yàn)闈h語句子的語序非常靈活,因此對其進(jìn)行語法分析,就目前技術(shù)來看是不現(xiàn)實(shí)的。但是根據(jù)實(shí)體聯(lián)系圖(ER模式)和受限漢語的關(guān)系數(shù)據(jù)庫漢語查詢語言的計(jì)算模型(RCHIQL)相結(jié)合,就能很好幫助機(jī)器理解查詢語句。二者結(jié)合,結(jié)果如下:
查詢表(職工,部門):部門名稱,職工號(hào),姓名,任職日期,職務(wù),工資;條件為職工.部門號(hào)=部門.部門號(hào)和工資<1000和(查詢表(職工):記錄數(shù);條件為職工.部門號(hào)=部門.部門號(hào)和工資<1000)>10;按工資升序排序。
首先學(xué)會(huì)分析自然語言。數(shù)據(jù)庫的自然語言查詢在詞匯、句型、語義、語用等方面有其自身特點(diǎn)和規(guī)律。在數(shù)據(jù)庫自然語言界面(NLIDB)中自然語言受限問題有三個(gè)方面:受限方式;受限程度;如何讓用戶理解這種受限。受限方式主要表現(xiàn)在詞匯受限、句型受限、語義受限、語用受限等。對受限進(jìn)行分析的目的在于為后面的語言分析尋找一些規(guī)律和依據(jù),使復(fù)雜的語言分析有據(jù)可依。自然查詢語言處理中,最重要的是分清查詢目標(biāo)和條件,及目標(biāo)和條件的組成規(guī)律。
編寫SQL語句的步驟如下:了解需求的邏輯;把邏輯分成若干部分;組成SQL語句?;谧匀徽Z言的查詢分析從所要引用的查詢對象開始,首先明確查詢目標(biāo)對象,也就是查詢對象和查詢結(jié)果的列(當(dāng)查詢對象有多個(gè)的時(shí)候,要注意看看是否有關(guān)聯(lián),如果有關(guān)聯(lián),則產(chǎn)生建議的關(guān)聯(lián)條件),如果有條件限制,就根據(jù)限制條件組合查詢條件,達(dá)到限制目標(biāo)行的目的。然后把目標(biāo)行和目標(biāo)列進(jìn)行組合,就是結(jié)果集。根據(jù)實(shí)際需求,將結(jié)果集進(jìn)行相應(yīng)的排序或分組。通過這種思路,簡化詞匯、句型、語義、語用等方面的規(guī)律的分析,對過程按一定的規(guī)律受限(當(dāng)然要注意受限程度。受限程度過弱,系統(tǒng)實(shí)現(xiàn)難度大,系統(tǒng)可用性降低;受限程度過強(qiáng),系統(tǒng)語言的使用范圍過窄,容易出現(xiàn)范圍失陪的情況)。
在數(shù)據(jù)庫設(shè)計(jì)過程中,從概念模型到物理模型的轉(zhuǎn)換,也就是實(shí)物設(shè)計(jì)到數(shù)據(jù)庫的實(shí)現(xiàn)的過程中,很多語義信息都丟失了,而用戶查詢卻是在基于模型概念的基礎(chǔ)之上。可以根據(jù)以上流程,通過下面三個(gè)步驟實(shí)現(xiàn)對SQL的學(xué)習(xí)。
首先進(jìn)行目標(biāo)定位。以之前的例子為例:如果要對工資普遍偏低(低于1000塊)的部門進(jìn)行加薪,加薪人數(shù)為10人以上。分析員工信息列、員工工資等信息在員工表中,部門人數(shù)統(tǒng)計(jì)在相關(guān)部門表中。因此,中文SQL的學(xué)習(xí)語言是“查詢表(職工,部門);部門名稱,職工號(hào),姓名,任職日期,職務(wù),工資”。
然后進(jìn)行條件分析,劃分集合塊。尋找與結(jié)果相關(guān)的條件、對象之間的關(guān)聯(lián)條件以及先定結(jié)果的條件。從第一步產(chǎn)生的結(jié)果集,需求中哪些會(huì)影響到結(jié)果,并分析其中是否有隱含的條件。
對結(jié)果進(jìn)行二次篩選。根據(jù)第二步限定條件查詢出來的結(jié)果雖然已經(jīng)符合用戶要求,但是仍然存在另一部分對結(jié)果產(chǎn)生影響的因素,但是這些因素又不屬于條件范疇中,比如分組、結(jié)果集的排序、重復(fù)行的去除以及只取前幾行等情況。在本文中提出的例子,對整個(gè)結(jié)果存在影響的是:按工資排序。因此在第三步產(chǎn)生中文SQL學(xué)習(xí)語言中應(yīng)為“按工資升序排列”。然后生成SQL語句。
基于概念模式產(chǎn)生的中文SQL學(xué)習(xí)語言查詢的中間表達(dá)形式,然后形成SQL語句的表達(dá)方式。在SQL的轉(zhuǎn)換過程中,將整個(gè)含有復(fù)雜語義的自然語言查詢分成不同模塊,轉(zhuǎn)換為一個(gè)數(shù)據(jù)庫查詢語言。因此要制定中文SQL學(xué)習(xí)語言庫,實(shí)現(xiàn)受限漢語和數(shù)據(jù)庫語言的相互映射,通過所分的兩個(gè)模塊,實(shí)現(xiàn)SQL語句的生成。
第一個(gè)模塊實(shí)現(xiàn)語法轉(zhuǎn)換。運(yùn)用中文SQL學(xué)習(xí)語言庫受限漢語和數(shù)據(jù)庫語言相互映射的規(guī)律,并根據(jù)符合SQL的語言自身的特點(diǎn),對中文的SQL語言學(xué)習(xí)進(jìn)行轉(zhuǎn)換、調(diào)整。另外保留轉(zhuǎn)換后的應(yīng)為SQL學(xué)習(xí)語言,也就是中間語言。
還是結(jié)合剛剛那個(gè)例子。轉(zhuǎn)換前的中文SQL語言是:“查詢表(職工,部門):部門名稱,職工號(hào),姓名,任職日期,職務(wù),工資;條件為職工.部門號(hào)=部門.部門號(hào)和工資<1000和(查詢表(職工):記錄數(shù);條件為職工.部門號(hào)=部門.部門號(hào)和工資<1000)>10;按工資升序排序?!鞭D(zhuǎn)換后的中文SQL語言是:“SELECT部門名稱,職工號(hào),姓名,任職日期,職務(wù),工資FROM職工,部門WHERE職工.部門號(hào)=部門.部門號(hào)AND工資<1000AND(SELECT COUNT (*)FROM職工.WHERE職工.部門號(hào)=部門.部門號(hào)和工資<1000)>10ORDERBY工資ASC”。
語法轉(zhuǎn)換完成后,進(jìn)行語義轉(zhuǎn)換。數(shù)據(jù)庫的概念模型設(shè)計(jì)適合用戶閱讀,也適合學(xué)校課堂教授,學(xué)生也比較容易理解。在數(shù)據(jù)庫管理中,注意數(shù)據(jù)庫的物理實(shí)現(xiàn),同時(shí)也要注意丟失的概念模型設(shè)計(jì)信息。因此,在這個(gè)模塊中,要注意根據(jù)概念模塊與物理模塊的對應(yīng)關(guān)系將中間語言轉(zhuǎn)化成最終的SQL語言。
在這個(gè)例子中,最終的SQL語言如下:SELECT Dname,Emp.EmpNO,Ename,HireDate,Job,Sal FROM Emp,Dept WHERE Emp.DeptNo=Dept.DeptNo AND Sal<l000”AND (SELECT COUNT(E.EmpNO)FROM Emp E WHERE E.DeptNo=Dept.DeptNo AND Sal<l000)>10ORDER BY Sal。
本文主要介紹了關(guān)系數(shù)據(jù)庫SQL語言學(xué)習(xí)的現(xiàn)狀、SQL語言學(xué)習(xí)理念和SQL語言學(xué)習(xí)方法,通過中文SQL學(xué)習(xí)語言,結(jié)合具體SQL學(xué)習(xí)案例進(jìn)行學(xué)習(xí),并提出了教學(xué)中的改進(jìn)方案,通過具體例子幫助學(xué)生理解SQL語句的編寫邏輯,輔助數(shù)據(jù)庫教學(xué)。但是鑒于漢語受限程度較大,因此無法智能分析自然語言,還需要人為因素參與。
[1]劉志芳.董小蕾.易語言的使用與研究[J].唐山師范學(xué)院學(xué)報(bào),2007,(3).
[2]崔宗軍.唐世渭.楊冬青.基于ER模型和受限漢語的數(shù)據(jù)庫中文查詢語言研究[J].中文信息學(xué)報(bào),2001,(6).
[3]孟小峰.王珊.中文數(shù)據(jù)庫自然語言查詢系統(tǒng)Nchiql設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)研究與發(fā)展,2001,(9).
[4]閆紅巖.SQL語句分析及數(shù)據(jù)庫安全研究[J].貴州大學(xué)學(xué)報(bào),2006,(11).
[5]蔡雷.數(shù)據(jù)庫查詢語言SQL的語法分析及實(shí)現(xiàn)[J].天津大學(xué)校報(bào),2006,(12).
[6]孟小峰.中文數(shù)據(jù)庫自然語言查詢處理研究[D].北京:中國科學(xué)院計(jì)算機(jī)技術(shù)研究所,1999.
[7]許龍飛.楊曉君.唐世渭.基于受限漢語的數(shù)據(jù)庫自然語言接口技術(shù)研究[J].軟件學(xué)報(bào),2002,(4).
[8]文秋芳.英語學(xué)習(xí)策略論[M].上海:上海外語教育出版社,2000.
[9]盧民榮.范年柏.數(shù)據(jù)庫自然語言接口技術(shù)研究及其在教學(xué)中的應(yīng)用[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2011,(2).
[10]顧國良.王能斌.數(shù)據(jù)庫NL界面上漢語查詢的EAAD模型[J].計(jì)算機(jī)學(xué)報(bào),1990,(13).
[11]俞士汶.關(guān)于受限的規(guī)則漢語的設(shè)想[M].濟(jì)南:山東教育出版社,1995.
TP315
A
1006-5342(2012)08-0143-02
2012-06-13