国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種新型的數(shù)據(jù)庫自然語言查詢實(shí)現(xiàn)方案

2024-10-22 00:00:00富庭軒陳啟明楊懷宇
現(xiàn)代信息科技 2024年15期

摘 要:當(dāng)前深度學(xué)習(xí)技術(shù)對數(shù)據(jù)庫自然語言查詢的實(shí)現(xiàn)起到了很大的推動作用,但是仍存在難以實(shí)現(xiàn)復(fù)雜查詢、準(zhǔn)確率不高等問題。因此,提出了新型數(shù)據(jù)庫自然語言查詢實(shí)現(xiàn)方案,設(shè)計了一種基于謂詞的、類Prolog語言的中間語言,以自然語言—中間語言—SQL的方式實(shí)現(xiàn)了很高的準(zhǔn)確率,解決了自然語言與SQL語句之間語義差距大的問題,可以投入到實(shí)際應(yīng)用中。還提出了一種學(xué)習(xí)樣本自動生成的方法,降低了數(shù)據(jù)庫自然語言查詢技術(shù)的使用難度。

關(guān)鍵詞:數(shù)據(jù)庫自然語言查詢;NL2SQL;謂詞推理;學(xué)習(xí)樣本自動生成

中圖分類號:TP391.1;TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:2096-4706(2024)15-0051-05

A New Implementation Scheme for“Database Natural Language Query”

FU Tingxuan, CHEN Qiming, YANG Huaiyu

(Faculty of Information Engineering and Automation, Kunming University of Science and Technology, Kunming 650504, Unc+nQZzFYvhlqL+Hb+APA==China)

Abstract: The current Deep Learning technology has played a significant role in promoting the implementation of natural language query in databases, but there are still problems such as difficulty in implementing complex queries and low accuracy. Therefore, a new implementation scheme for natural language query in databases has been proposed, and an intermediate language based on predicate and language similar to Prolog has been designed to achieve high accuracy in a natural language—intermediate language—SQL manner, solving the problem of large semantic differences between natural language and SQL statements. It can be put into practical applications. A method for automatically generating learning samples has also been proposed, which reduces the difficulty of using natural language query techniques in databases.

Keywords: database natural language query; NL2SQL; predicate inference; automatic generation of learning sample

0 引 言

非專業(yè)人員在對數(shù)據(jù)庫中的信息進(jìn)行統(tǒng)計分析時,結(jié)構(gòu)化查詢語言(SQL)是一個必須要克服的障礙。隨著深度學(xué)習(xí)技術(shù)在自然語言處理領(lǐng)域中廣泛的應(yīng)用,利用自然語言查詢生成SQL語句(NL2SQL)的研究也獲得了很大的進(jìn)展,比較引人注目的是出現(xiàn)一系列基于BERT解決NL2SQL問題的模型結(jié)構(gòu),如SQLNet [1]、Type SQL [2]、SQLova [3]、X-SQL [4]、M-SQL [5]等。

但是仍存在如下一些問題:

1)對于單表的查詢準(zhǔn)確率較高,文獻(xiàn)[6-7]對追一科技的NL2SQL數(shù)據(jù)集準(zhǔn)確率達(dá)到90%以上。但是仍低于期望值,而且在實(shí)際應(yīng)用中,僅僅是單表查詢遠(yuǎn)遠(yuǎn)不能滿足實(shí)際需求。

2)對于多表查詢準(zhǔn)確率一般,文獻(xiàn)[6]對于多表查詢的DuSQL數(shù)據(jù)集準(zhǔn)確率達(dá)到80%左右的,但是這個準(zhǔn)確率達(dá)不到實(shí)用標(biāo)準(zhǔn)。

3)基于深度學(xué)習(xí)技術(shù)來實(shí)現(xiàn)NL2SQL,必然面對一個問題,就是學(xué)習(xí)樣本的建立面臨較大困難。深度學(xué)習(xí)需要大量的學(xué)習(xí)樣本數(shù)據(jù),當(dāng)前理論研究所使用的數(shù)據(jù)集都是手工創(chuàng)建或半自動創(chuàng)建的[8],若將NL2SQL技術(shù)投入實(shí)際應(yīng)用,如何簡單快捷的創(chuàng)建樣本數(shù)據(jù)是一個必須解決的問題。

4)在一些場景下,由于業(yè)務(wù)邏輯的復(fù)雜性,一些查詢要求很難用一個SQL查詢語句去描述,也很難用自然語言來表達(dá)查詢要求。

1 一種新的解決思路

在一些應(yīng)用場景中,具有復(fù)雜的數(shù)據(jù)表關(guān)系和復(fù)雜的業(yè)務(wù)邏輯,這時候自然語言與查詢語句具有很大的語義差距,直接實(shí)現(xiàn)NL2SQL的難度很大[9]。為了在復(fù)雜應(yīng)用場景中提供一種實(shí)用的數(shù)據(jù)庫自然語言查詢技術(shù),本文采用了一種新的解決思路。

鑒于自然語言(NL)和SQL語句之間語義差距很大,引入一種過渡性的中間語言,實(shí)現(xiàn)一個NL—中間語言—SQL的流程。

本文受到GEO數(shù)據(jù)集[10]的啟發(fā),設(shè)計一個類Prolog語言的中間語言。此種基于謂詞的中間語言的作用,一是準(zhǔn)確提取NL中的查詢語義(實(shí)現(xiàn)NL—中間語言);二是準(zhǔn)確的實(shí)現(xiàn)數(shù)據(jù)庫查詢(實(shí)現(xiàn)中間語言—SQL)。

GEO數(shù)據(jù)集是一個美國地理的小型英文數(shù)據(jù)庫,其訓(xùn)練語料包括一些自然語言及其相對應(yīng)的查詢語句。其數(shù)據(jù)集中主要包括各州信息、人口密度、地區(qū)主要城市、山川河流等信息。

與GEO數(shù)據(jù)集類似,我們的中間語言也包括一系列謂詞,這些謂詞表達(dá)了各種數(shù)據(jù)庫查詢的要求和操作,每個謂詞可以轉(zhuǎn)化為一個或一些SQL來實(shí)現(xiàn)查詢,各個謂詞之間的邏輯推理則由一個推理引擎來實(shí)現(xiàn)。

下面建立一個簡單的應(yīng)用場景,以此為背景討論我們的技術(shù)。

2 應(yīng)用場景

假設(shè)有一個簡單的電商平臺,所需的信息保存在數(shù)據(jù)庫中,如圖表1、表2、表3所示。以下為結(jié)構(gòu)和相關(guān)樣例數(shù)據(jù)介紹。

商品類別表中的“類別ID”字段的賦值規(guī)則可以表示父類和子類關(guān)系。例如“手機(jī)”的類別ID值“01”是“折疊手機(jī)”的ID值“0101”的前綴,說明“手機(jī)”是“折疊手機(jī)”的父類。利用這種方法可以靈活地將不同類商品分出不同層級,具有很好的通用性。

商品詳細(xì)參數(shù)表的設(shè)計方法,使得不同類的商品可以定義不同的參數(shù),極大地增加了系統(tǒng)的靈活性。

下面以此應(yīng)用場景為例來詳細(xì)說明我們的方案。

3 自然語言查詢接口實(shí)現(xiàn)方案

3.1 中間語言的謂詞設(shè)計

針對此電商平臺的查詢需要,我們?yōu)橹虚g語言設(shè)計了謂詞。

3.1.1 變量類型定義謂詞

_answer(A,()):表示語句的查詢最終結(jié)果要保留在A變量中。

_goods(A):聲明變量A用來保存商品概要信息。

_info(A): 聲明變量A用來保存商品詳細(xì)信息。

3.1.2 信息提取謂詞

_getgoods(A,B):在商品概要信息表中,以A變量的值為“商品名”字段的查詢條件,查詢相關(guān)商品概要信息保存到變量B。

_getinfo(A,B):在商品詳細(xì)信息表中,以A變量的值為“商品名”字段的查詢條件,查詢相關(guān)商品詳細(xì)信息保存到變量B。

_belongto(A,B):在商品概要信息表中,以A變量的值為“公司”字段的查詢條件,找到相關(guān)的商品名保存在B變量中。

_property(A,B,C):從商品詳細(xì)信息表中,獲取屬性名為A、屬性值為B對應(yīng)的商品名,保存在C變量中。

3.1.3 常量類型定義謂詞

_typename(A):在商品類別表和商品概要信息表中,以A常量的值為“類別名”字段的查詢條件,查詢相關(guān)的“商品名”。

_goodsname(A):聲明常量A是一個商品名。

_companyname(A):在商品概要信息表中,以A常量的值為“公司名”字段的查詢條件,查詢相關(guān)的“商品名”。

_price(A):聲明常量A是一個價格。

3.1.4 變量從常量賦值謂詞

_const(A,XXX)謂詞表示將常量XXX(或常量集合)賦值給變量A。

3.1.5 數(shù)值比較謂詞

_BT(B,A):查詢A變量中的數(shù)值大于B的對象,結(jié)果保存在A變量中。

_LT(B,A):查詢A變量中的數(shù)值小于B的對象,結(jié)果保存在A變量中。

3.2 自然語言轉(zhuǎn)中間語言的實(shí)現(xiàn)

我校的研究團(tuán)隊(duì)在文獻(xiàn)[11]中給出了一種利用對偶學(xué)習(xí)完成數(shù)據(jù)庫查詢的方案。采用對偶學(xué)習(xí)不僅可有效解決NL2SQL領(lǐng)域中需要大量標(biāo)注訓(xùn)練集問題,還能增強(qiáng)模型質(zhì)量及數(shù)據(jù)利用效率,提高模型的準(zhǔn)確度。這種方案對GEO數(shù)據(jù)集可以達(dá)到90%的正確率。我們設(shè)計的中間語言比GEO數(shù)據(jù)集還要簡潔,可以達(dá)到98%以上的正確率,完全可以滿足實(shí)際應(yīng)用的需要。

3.3 從中間語言推理查詢結(jié)果

基于上述謂詞,可以表示常見的商品查詢要求。例如,對于“查詢折疊手機(jī)類商品的詳細(xì)信息”這個要求,轉(zhuǎn)換為下述的中間語言:

_answer(A,(_info(A),_getinfo(B,A),_const(B,_typename (折疊手機(jī)))))

對于此語句的推理過程如下:

1)執(zhí)行_typename(折疊手機(jī))謂詞,查詢出“折疊手機(jī)”類商品有哪些。

2)執(zhí)行_const(B,_typename(折疊手機(jī))),將上一部查詢結(jié)果保存到變量B中。

3)執(zhí)行_getinfo(B,A),以B變量保存的各個商品名作為查詢條件,查詢相關(guān)商品詳細(xì)信息保存到變量A。

4)_answer(A,()),把A變量的結(jié)果作為最終結(jié)果返回。

對于“查詢?nèi)A為公司的價格大于7 000的手機(jī)有哪些顏色是紅色的”這個要求,轉(zhuǎn)換為下述的中間語言:

_answer(A,(_goods(A),_getgoods(B,A),_const(B,_typename(手機(jī)),

_belongto(C,B),_const(C,_companyname(華為)),

_BT(D,B),_const(D,_price(7000)),_property(E,F(xiàn),B),

_const(E,_propertyname(顏色)),

_const(F,_propertyvalue(紅色)) ))

上述語句的推理過程比較復(fù)雜,可以用圖1來表示。

此語句的推理過程被表示成樹狀結(jié)構(gòu),推理是從樹的葉子開始,逐漸向上層運(yùn)算。不同的謂詞實(shí)現(xiàn)了不同的數(shù)據(jù)表查詢和處理要求。

如果將這個查詢要求直接轉(zhuǎn)成一條SQL,那么會很復(fù)雜,因?yàn)檫@涉及三張數(shù)據(jù)表的多表連接。實(shí)際上這里有一個業(yè)務(wù)邏輯用一條SQL語句很難實(shí)現(xiàn),就是我要查詢的不是“手機(jī)”這個類別,而是這個類別下面所有的子類別。忽略這一點(diǎn)不計,其他的查詢邏輯也是很復(fù)雜的,直接使用深度學(xué)習(xí)方法,不會有理想的識別效果。

但是,將這個查詢要求轉(zhuǎn)為中間語言去表達(dá),則會簡單很多。將“華為公司”轉(zhuǎn)換為“_belongto(C,B),_const(C,_companyname(華為))”,將“價格大于7 000”

轉(zhuǎn)換為“_BT(D,B),_const(D,_price(7000))”,將“顏色是紅色的”轉(zhuǎn)換為“_property(E,F(xiàn),B),_const(E,_propertyname(顏色)),_const(F, _propertyvalue(紅色))”,這樣的轉(zhuǎn)換對于當(dāng)前的“機(jī)器翻譯”技術(shù)來說是容易實(shí)現(xiàn),可以達(dá)到理想的識別效果。而利用中間語言進(jìn)行數(shù)據(jù)查詢則能夠保證100%的正確率??梢钥闯?,“NL—中間語言—SQL”這個流程,可以在比較復(fù)雜的查詢場景下,實(shí)現(xiàn)令人滿意的正確率。

3.4 學(xué)習(xí)樣本的自動生成

基于深度學(xué)習(xí)的數(shù)據(jù)庫自然語言查詢技術(shù)在實(shí)際應(yīng)用中,有一個重要的障礙就是構(gòu)建學(xué)習(xí)樣本。深度學(xué)習(xí)需要大量的學(xué)習(xí)樣本數(shù)據(jù),如果手工創(chuàng)建或半自動創(chuàng)建,會耗費(fèi)很多人力,極大地阻礙這種技術(shù)的推廣和應(yīng)用。我們必須要尋求自動生成學(xué)習(xí)樣本的方法。

自動生成學(xué)習(xí)樣本數(shù)據(jù)集最基本的方法就是基于模板和規(guī)則。例如設(shè)計如下模板:

查詢{companyname}公司的價格大于{price}的{class}類商品有哪些。

_answer(A ,(_goods(A), _getgoods(B,A), _const (B,_typename({class}), _belongto(C,A),_const(C,_companyname({companyname})),_BT(D,A),_const(D,_price({price})) ))

只要從數(shù)據(jù)表中獲取不同的{companyname}、{price}、{class}信息,分別填寫到問題模板和中間語言模板中,即可自動生成一條學(xué)習(xí)樣本。

這種方法雖然簡單易行,但是缺點(diǎn)是生成的自然語言明顯模板化,語句形式不夠豐富,這樣的樣本在學(xué)習(xí)之后泛化能力較差。

所以,本文在樣本集的自動生成過程中,引入“中間語言—NL”的方法?!爸虚g語言—NL”的處理與“NL—中間語言”的處理是一個反向的過程,其主要任務(wù)是輸入中間語言語句,輸出此中間語言語句對應(yīng)的自然語言查詢的問句。圖2表示了“中間語言—NL”的處理過程。

在此過程中,先用預(yù)先設(shè)計好的模板結(jié)合數(shù)據(jù)表的信息,自動生成各種中間語言查詢語句,然后經(jīng)過中間語言—NL模型訓(xùn)練生成自然語言。輸入一個中間語言查詢語句,經(jīng)過一個帶有注意力機(jī)制的雙向LSMT模型之后,可以獲取k種可能的自然語言結(jié)果(k為束搜索的大小)。再通過預(yù)訓(xùn)練中文字典的轉(zhuǎn)換,最后就形成自然語言查詢問句。這樣生成的自然語言查詢問句,具有句式靈活多樣的特點(diǎn),避免了問句模板化的問題。有了“中間語言—NL”的幫助,很大程度上消除了部署到不同應(yīng)用場景時面臨的一個障礙,有利于提高模型的通用性。

4 實(shí)驗(yàn)結(jié)果

基于上述技術(shù)方案,我們完成了一個簡單的電商平臺,驗(yàn)證了相關(guān)技術(shù)的正確性。下面展示兩個示例。

第一個示例是演示以主表的字段為查詢條件,查詢兩個從表的信息,如圖3所示。

第二個示例是演示三個表的字段都是查詢條件這種復(fù)雜的查詢場景,如圖4所示。

我們的深度學(xué)習(xí)框架是用TensorFlow 2.0.0+Keras 2.3.1實(shí)現(xiàn)的,樣本的批量大小為16,采用Adam作為優(yōu)化器,訓(xùn)練過程中采用的學(xué)習(xí)率為1×10-5,采用Dropout正則化方法(比率為0.3)來預(yù)防過擬合。

我們?yōu)殡娚唐脚_供設(shè)計了42個樣本模板,在“中間語言—NL”模型的支持下,共生成了兩批學(xué)習(xí)樣本,第一批1 272個、第二批3 386個。我們對這兩批樣本分別進(jìn)行了訓(xùn)練,測試集和驗(yàn)證集都按9:1進(jìn)行分配。第一批的127個驗(yàn)證樣本,有2個出錯,準(zhǔn)確率達(dá)到了98.4%;第二批的338個驗(yàn)證樣本,有5個出錯,準(zhǔn)確率達(dá)到了98.5%,已經(jīng)可以滿足實(shí)際應(yīng)用的需要。我們對出錯的7個樣本進(jìn)行了分析,其中有6個是由于“中間語言—NL”模型生成的查詢問句不合理造成的。從此實(shí)驗(yàn)可以看出,第一,通過進(jìn)一步提高樣本數(shù)的方法難以獲得更高的準(zhǔn)確率,第二,“中間語言—NL”模型的準(zhǔn)確率成為系統(tǒng)進(jìn)一步提高準(zhǔn)確率的瓶頸。

5 結(jié) 論

本文提出的數(shù)據(jù)庫自然語言查詢實(shí)現(xiàn)方案具有如下優(yōu)點(diǎn):

1)中間語言與NL的語義差距小,進(jìn)行機(jī)器翻譯的難度小很多,正確率很高。

2)中間語言由多個謂詞組成,每個謂詞可以單獨(dú)對應(yīng)到一個查詢,并通過簡單的推理計算最終的結(jié)果,實(shí)現(xiàn)難度低。

但是此方法也有如下缺點(diǎn):

1)只能針對特定場合設(shè)計專用的中間語言謂詞,缺少通用性。

2)利用中間語言進(jìn)行查詢的處理過程,實(shí)際上是將一個查詢要求分解成多個子查詢,最后通過推理計算出最終的結(jié)果,所以處理速度比單一SQL語句實(shí)現(xiàn)查詢要慢。

我們未來的研究方向:

1)將中間語言轉(zhuǎn)換為單一SQL語句,這樣可以極大地提高查詢速度,實(shí)現(xiàn)“NL—中間語言—SQL”這個完美的流程。

2)研究“通用化”的、能夠自動適應(yīng)數(shù)據(jù)庫表結(jié)構(gòu)和多表連接關(guān)系的謂詞,以便在更換應(yīng)用場景時,可以減少謂詞定義的工作量、提高通用性。

參考文獻(xiàn):

[1] XU X J,LIU C,SONG D. SQLNet: Generating Structured Queries From Natural Language Without Reinforcement Learning [J/OL].arXiv:1711.04436 [cs.CL].[2024-01-08].https://arxiv.org/abs/1711.04436.

[2] YU T,LI Z F,ZHANG Z L,et al. TypeSQL: Knowledge-Based Type-Aware Neural Text-to-SQL Generation [L/OL].arXiv:1804.09769 [cs.CL].[2024-01-09].https://arxiv.org/abs/1804.09769.

[3] HWANG W,YIM J,PARK S,et al. A Comprehensive Exploration on WikiSQL with Table-Aware Word Contextualization [J/OL].arXiv:1902.01069[cs.CL].[2024-01-09].https://arxiv.org/abs/1902.01069v2.

[4] HE P C,MAO Y,CHAKRABARTI K,et al. X-SQL: Reinforce Schema Representation with Context [J/OL].arXiv:1908.08113 [cs.CL].[2024-01-09].https://arxiv.org/abs/1908.08113.

[5] ZHANG X Y,YIN F J,MA G J,et al. M-SQL: Multi-task representation learning for single-table Text2SQL generation [J].IEEE Access,2020,8:43156-43167.

[6] 張嘯宇.基于有監(jiān)督深度學(xué)習(xí)的SQL解析關(guān)鍵技術(shù)研究 [D].長沙:國防科技大學(xué),2020.

[7] 歐楊磊.基于BERT的中文NL2SQL任務(wù)的技術(shù)研究 [D].杭州:杭州電子科技大學(xué),2021.

[8] WANG L J,ZHANG A,WU K,et al. DuSQL: A Large-Scale and Pragmatic Chinese Text-to-SQL Dataset [C]//Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing.EMNLP:Association for Computational Linguistics ,2020,6923-6935.

[9] 潘璇,徐思涵,蔡祥睿,等.基于深度學(xué)習(xí)的數(shù)據(jù)庫自然語言接口綜述 [J].計算機(jī)研究與發(fā)展,2021,58(9):1925-1950.

[10] Welcome to Getquery?。?A Learned Natural Language Interface to a US Geography Database [EB/OL].[2024-01-09].https://www.cs.utexas.edu/users/ml/geo.html.

[11] 趙志超,游進(jìn)國,何培蕾,等.數(shù)據(jù)庫中文查詢對偶學(xué)習(xí)式生成SQL語句研究 [J].中文信息學(xué)報,2023,37(3):164-172.

作者簡介:富庭軒(2003—),男,滿族,遼寧遼陽人,本科在讀,研究方向:自然語言處理和時間序列預(yù)測。

遵义县| 晋宁县| 阜新市| 仙游县| 平凉市| 上思县| 如东县| 萨迦县| 虹口区| 凭祥市| 长宁区| 迁西县| 洮南市| 武宁县| 新干县| 保康县| 平舆县| 西平县| 随州市| 奉新县| 吉首市| 肥东县| 平谷区| 临洮县| 孝感市| 正镶白旗| 大厂| 巫溪县| 年辖:市辖区| 同德县| 上饶市| 莎车县| 桦甸市| 万宁市| 札达县| 抚远县| 宜宾县| 阳西县| 长顺县| 汤阴县| 汝阳县|