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