侯陽青
(福州職業(yè)技術(shù)學(xué)院 阿里巴巴大數(shù)據(jù)學(xué)院, 福建 福州 350108)
數(shù)據(jù)庫應(yīng)用以及信息檢索系統(tǒng)的普及,為用戶帶來方便的同時,也為數(shù)據(jù)庫應(yīng)用帶來了一定的挑戰(zhàn)。越來越多非專業(yè)用戶的參與,用戶對于數(shù)據(jù)庫操作簡單、查詢界面要易于掌握的需求越來越明顯。數(shù)據(jù)庫傳統(tǒng)查詢接口為圖形接口,具有較多的缺陷,例如操作過程復(fù)雜、對硬件要求高、耗費資源多和使用性能低等。這些缺陷導(dǎo)致數(shù)據(jù)庫應(yīng)用發(fā)展較為緩慢。鑒于此,自然語言查詢接口重新出現(xiàn)在人們的視野之中,成了數(shù)據(jù)庫應(yīng)用領(lǐng)域研究的熱點[1]。
數(shù)據(jù)庫自然語言界面的出現(xiàn),解決了非專業(yè)用戶訪問數(shù)據(jù)庫信息的難題,用戶可以依據(jù)人類語言向數(shù)據(jù)庫發(fā)問,以此來獲取自身所需要的信息與數(shù)據(jù),大大地提升了人機(jī)交互的容易程度,降低了數(shù)據(jù)庫系統(tǒng)應(yīng)用的難度。自然語言查詢界面實質(zhì)上指的是用戶通過自然語言對數(shù)據(jù)庫發(fā)出各種操作指令,系統(tǒng)將其轉(zhuǎn)換為數(shù)據(jù)庫操作語言,從而在數(shù)據(jù)庫中查詢到正確的信息,將其反饋給用戶。這種查詢方式避免了現(xiàn)實世界與機(jī)器世界對信息不同理解的難題,具有重要的研究價值[2]。
近幾年,國內(nèi)外均對數(shù)據(jù)庫語言查詢過程進(jìn)行了深入的研究與分析,并取得了一定的成果。國外代表性研究成果為LIFER系統(tǒng)與基于模糊集理論的語言查詢系統(tǒng)。LIFER系統(tǒng)具有通用性以及極高的自然語言處理速度,被多個領(lǐng)域所應(yīng)用;基于模糊集理論的語言查詢系統(tǒng)可以定性分析語法不完整的查詢語句,提高了系統(tǒng)的人性化,增加了數(shù)據(jù)庫系統(tǒng)的易用性。但現(xiàn)有數(shù)據(jù)庫語言查詢過程分析方法由于詞法切分有誤,導(dǎo)致復(fù)雜查詢語句存在著查詢準(zhǔn)確率低的問題。為此本研究提出基于數(shù)據(jù)挖掘的數(shù)據(jù)庫語言查詢過程分析方法研究,數(shù)據(jù)挖掘是指在通過算法在大量數(shù)據(jù)中搜索隱匿信息的過程[3],通過數(shù)據(jù)挖掘的引用,可以提升數(shù)據(jù)庫語言查詢的準(zhǔn)確率。
處理自然語言查詢語句的首要任務(wù)就是要分析查詢語句結(jié)構(gòu)。依據(jù)調(diào)查研究發(fā)現(xiàn),在數(shù)據(jù)庫查詢時,用戶使用祈使句與疑問句的頻率較高,多語句與省略句比例較小[4]。確定查詢語句類型,如表1所示。
表1 查詢語句類型表
其中,疑問句還可以細(xì)分為選擇問句、正反問句和特質(zhì)問句。需要注意的是,疑問句與是非問句在問法上存在著較大的不同,所以處理過程截然不同,故將其看作為兩類查詢問句[5]。
在語言查詢過程中,最關(guān)鍵的就是分清查詢目標(biāo)與查詢條件,為此,依據(jù)查詢目標(biāo)與條件為基礎(chǔ),劃定查詢語句結(jié)構(gòu)。以數(shù)據(jù)庫角度來看,查詢語句基本成分包括疑問詞、查找詞、連詞、語助詞、標(biāo)點符號、量詞、條件類比較詞、屬性值、對象名稱、格標(biāo)和領(lǐng)域動詞等。其中,屬性值、對象名稱和領(lǐng)域動詞與具體應(yīng)用相關(guān),將其稱為專用詞類,剩下的基本成分稱為通用詞類。
在實際的數(shù)據(jù)庫語言查詢語句中,專用詞類與通用詞類共同構(gòu)成了查詢目標(biāo)與查詢條件[6]。通過分析得到查詢語句結(jié)構(gòu)主要有四種,具體情況如下。
第一種:一般祈使句結(jié)構(gòu)。表示為:<查詢條件1 查詢條件2 …查詢條件m><查詢目標(biāo)1 查詢目標(biāo)2 …查詢目標(biāo)n>;
第二種:特殊祈使句結(jié)構(gòu)。表示為:<查詢條件1 查詢條件2 …查詢條件m1><查詢目標(biāo)1><連詞><查詢條件1 查詢條件2 …查詢條件m2><查詢目標(biāo)2><連詞>…<查詢目標(biāo)n>;
第三種:一般疑問句結(jié)構(gòu)。表示為:<查詢目標(biāo)1 查詢目標(biāo)2 …查詢目標(biāo)n><查詢條件1 查詢條件2 …查詢條件m>;
第四種:是非疑問句結(jié)構(gòu)。表示為:<查詢條件1 查詢條件2 …查詢條件m1><查詢目標(biāo)1><動詞><查詢條件1 查詢條件2 …查詢條件m2>。
依據(jù)上述分析得到的查詢語句結(jié)構(gòu)為基礎(chǔ),結(jié)合自然語言的特點,利用最大匹配法分詞處理查詢語句,如圖1所示。
圖1 查詢語句分詞流程圖
依據(jù)圖1流程得到查詢語句分詞結(jié)果,為了保障分詞結(jié)果的準(zhǔn)確性,需要消除歧義詞,并實時更新分詞應(yīng)用過的知識庫[7]。
依據(jù)查詢語句分詞結(jié)果,通過數(shù)據(jù)庫語義分析來識別查詢目標(biāo)與查詢條件。查詢條件的功能是限定查詢范圍[8],查詢條件主要分為顯性條件與隱性條件。顯性查詢條件識別流程,如圖2所示。
圖2 顯性查詢條件識別流程圖
隱性查詢條件識別需要依據(jù)領(lǐng)域?qū)I(yè)知識庫的復(fù)合詞匯文件以及映射文件去尋找,直至找到為止;若是查詢失敗,將其定義為新詞,對系統(tǒng)接口進(jìn)行更新。
查詢目標(biāo)識別實質(zhì)上是尋找用戶需求信息,查詢目標(biāo)與具體數(shù)據(jù)庫具有緊密的聯(lián)系,常規(guī)情況下,查詢目標(biāo)為屬性名或其函數(shù),包括屬性詞目標(biāo)、疑問詞目標(biāo)、聚集目標(biāo)以及復(fù)合推理目標(biāo)[9]。
針對查詢語句結(jié)構(gòu)特征,得到查詢目標(biāo)獲取算法步驟如下。
步驟一:加載語言查詢語句分詞結(jié)果數(shù)組;
步驟二:查詢目標(biāo)位置不確定,為此,以順序掃描方式掃描數(shù)組的內(nèi)容,將其與疑問詞文件對比,若是匹配成功,執(zhí)行疑問詞與數(shù)據(jù)庫屬性信息對應(yīng),轉(zhuǎn)至步驟五;若是匹配失敗,轉(zhuǎn)至步驟三;
步驟三:以逆序掃描方式掃描數(shù)組的內(nèi)容,將其與領(lǐng)域?qū)I(yè)知識庫中的邏輯推理文件、映射文件和復(fù)合詞匯文件對比,若是匹配成功,轉(zhuǎn)至步驟四;若是查詢語句沒有確切的查詢目標(biāo),數(shù)據(jù)庫系統(tǒng)默認(rèn)所有屬性信息,轉(zhuǎn)至步驟五;
步驟四:將步驟三結(jié)果與聚集函數(shù)文件對比,若是匹配成功,將查詢目標(biāo)合并為屬性名,轉(zhuǎn)至步驟五;若是匹配失敗,直接將目標(biāo)屬性作為查詢目標(biāo),轉(zhuǎn)至步驟五;
步驟五:將獲取的查詢目標(biāo)存儲為結(jié)構(gòu)體數(shù)組。
需要注意的是,在查詢目標(biāo)識別過程中,需要一定的規(guī)則支撐,例如標(biāo)記符號消除規(guī)則等,由于篇幅限制,在此研究中不一一列出。
依據(jù)識別的查詢目標(biāo)與查詢條件,構(gòu)建語義依存樹,劃分為集合塊,通過綜合轉(zhuǎn)換算法轉(zhuǎn)換為SQL語句,為用戶需求數(shù)據(jù)挖掘空間定位做準(zhǔn)備[10]。
語義依存樹構(gòu)成,如表2所示。
表2 語義依存樹構(gòu)成表
語義依存樹包含了查詢語句的全部信息,為了簡便自然語言查詢到SQL語句轉(zhuǎn)換的過程,將語義依存樹劃分為多個集合塊。
語義依存樹集合塊劃分算法如下。
輸入:語義依存樹DpRt;
輸出:集合塊的根SubRt;
過程:
步驟1.依據(jù)逆序形式遍歷語義依存樹DpRt,獲取當(dāng)前結(jié)點,順序執(zhí)行下述程序。
a.若當(dāng)前結(jié)點是動詞,并具備量詞子結(jié)點,則返回集合塊根SubRt;
b.若當(dāng)前結(jié)點是比較操作符,則返回集合塊根SubRt;
c.若當(dāng)前結(jié)點依存父結(jié)點是動詞,并且依存子結(jié)點是聯(lián)系動詞,則返回集合塊根SubRt;
d.若當(dāng)前結(jié)點是自參照屬性,并且依存父結(jié)點是本身,則返回集合塊根SubRt。
步驟2.返回語義依存樹DpRt。
語義依存樹集合塊類型,如表3所示。
表3 集合塊類型表
將劃分得到的集合塊轉(zhuǎn)換為USQL語句,如式(1)。
SB=(O,C,T)
(1)
式中,SB表示語義依存樹集合塊的USQL語句表示形式;O表示集合塊的數(shù)據(jù)庫對象;C表示復(fù)合限定條件表達(dá)式;T表示集合塊全部結(jié)點所屬表的集合。
經(jīng)過式(1)轉(zhuǎn)換后,語義依存樹表示多個集合塊的線性圖SBn-…-SB2-SB1,只需要將其展開即可得到查詢語句相應(yīng)的SQL語句。轉(zhuǎn)換規(guī)則,如式(2)。
(2)
依據(jù)上節(jié)轉(zhuǎn)換得到的SQL語句,利用數(shù)據(jù)挖掘技術(shù)在數(shù)據(jù)庫中定位用戶需求數(shù)據(jù),提取定位數(shù)據(jù)并反饋給用戶[11]。
用戶需求數(shù)據(jù)挖掘流程,如圖3所示。
圖3 用戶需求數(shù)據(jù)挖掘流程圖
首先,利用遺傳算法約簡SQL語句,簡化數(shù)據(jù)挖掘過程[12]。假設(shè)每個SQL語句都是一個候選約簡,定義適值函數(shù),如式(3)。
(3)
式中,F(xiàn)(v)表示適值函數(shù)值;N表示SQL語句的長度;Lv表示v語句中的屬性個數(shù);Cv表示v語句區(qū)分對象組合的個數(shù);m表示數(shù)據(jù)庫對象個數(shù)。
依據(jù)式(3)進(jìn)行不斷迭代,直到滿足終止條件為止,完成了SQL語句的約減。
以式(3)結(jié)果為基礎(chǔ),利用數(shù)據(jù)挖掘算法實現(xiàn)用戶需求數(shù)據(jù)的查詢。數(shù)據(jù)挖掘算法,如圖4所示。
圖4 數(shù)據(jù)挖掘算法示意圖
通過上述過程實現(xiàn)了基于數(shù)據(jù)挖掘的數(shù)據(jù)庫語言查詢過程的分析,為用戶提供更加優(yōu)質(zhì)、準(zhǔn)確的服務(wù),推動數(shù)據(jù)庫應(yīng)用領(lǐng)域的發(fā)展。
為了驗證提出方法的性能,本文在LFPW數(shù)據(jù)庫上進(jìn)行仿真對比實驗,通過查詢準(zhǔn)確率判斷方法的好壞,而查詢準(zhǔn)確率主要由查詢目標(biāo)與條件識別系數(shù)、SQL語句轉(zhuǎn)換系數(shù)決定。其中,查詢目標(biāo)與條件識別系數(shù)指的是查詢目標(biāo)與條件識別的精確度;SQL語句轉(zhuǎn)換系數(shù)指的是SQL語句轉(zhuǎn)換的速率。常規(guī)情況下,查詢目標(biāo)與條件識別系數(shù)、SQL語句轉(zhuǎn)換系數(shù)越大,表明方法的查詢準(zhǔn)確率越高。具體實驗過程如下所述。
為了增加實驗結(jié)果的公平性,選取20個數(shù)據(jù)庫作為實驗對象,具體情況,如表4所示。
表4 實驗數(shù)據(jù)庫情況表
基于語言查詢的數(shù)據(jù)挖掘界面,如圖5所示。
依據(jù)選取的數(shù)據(jù)庫以及設(shè)計的數(shù)據(jù)挖掘界面進(jìn)行仿真對比實驗。
查詢目標(biāo)與條件識別系數(shù)范圍為[0,1],通過測試得到查詢目標(biāo)與條件識別系數(shù)對比情況,如表5所示。
圖5 數(shù)據(jù)挖掘界面示意圖
表5 查詢目標(biāo)與條件識別系數(shù)對比情況表
表5數(shù)據(jù)顯示,提出方法的查詢目標(biāo)與條件識別系數(shù)遠(yuǎn)遠(yuǎn)高于現(xiàn)有代表方法,其最大值為0.93。
SQL語句轉(zhuǎn)換系數(shù)范圍為[1,10],通過測試得到SQL語句轉(zhuǎn)換系數(shù)對比情況,如表6所示。
表6 SQL語句轉(zhuǎn)換系數(shù)對比情況表
表6數(shù)據(jù)顯示,提出方法的SQL語句轉(zhuǎn)換系數(shù)遠(yuǎn)遠(yuǎn)高于現(xiàn)有代表方法,其最大值為9.81。
由上述實驗結(jié)果可知:本研究所提方法的查詢目標(biāo)與條件識別系數(shù)、SQL語句轉(zhuǎn)換系數(shù)均遠(yuǎn)高于現(xiàn)有代表方法,說明通過數(shù)據(jù)挖掘的引用,可以提升數(shù)據(jù)庫語言查詢的準(zhǔn)確率,為用戶提供更加精準(zhǔn)的數(shù)據(jù)服務(wù)。但本研究所提方法仍存在一些不足之處,如對查詢語句執(zhí)行過程中查詢響應(yīng)速度未考慮全面等。在保證數(shù)據(jù)庫語言查詢的準(zhǔn)確率基礎(chǔ)上,縮短查詢語句執(zhí)行過程中的響應(yīng)速度是今后研究的重要方向。