精品国产18久久久久久,一个人在线观看的www,亚洲一区二区久久久,成人国内精品久久久久影院vr,最近免费中文字幕大全高清大全1

百分點(diǎn)科技:基于NL2SQL的問答技術(shù)與實(shí)踐

2021-12-26 13:02:53AI云資訊1361

編者按:NL2SQL是語義解析和智能問答領(lǐng)域的前沿問題,可以將人類的自然語言問句轉(zhuǎn)化為結(jié)構(gòu)化查詢語句,是實(shí)現(xiàn)人類和數(shù)據(jù)庫無縫交互和提高數(shù)據(jù)庫分析效率的核心技術(shù)。

百分點(diǎn)科技認(rèn)知智能實(shí)驗(yàn)室自成立以來,結(jié)合公司實(shí)際業(yè)務(wù)和項(xiàng)目需求,自主研發(fā)NL2SQL算法,并在各個(gè)公開數(shù)據(jù)集上取得了良好的效果,同時(shí)還在業(yè)務(wù)項(xiàng)目中積累了寶貴的實(shí)際落地經(jīng)驗(yàn),本文主要就NL2SQL技術(shù)路線的發(fā)展歷史和實(shí)驗(yàn)室在工程實(shí)踐中的落地經(jīng)驗(yàn)進(jìn)行分享。

本文作者:易顯維、寧星星、鎮(zhèn)詩奇、蘇海波

一、NL2SQL問題描述

以往通過SQL查詢業(yè)務(wù)數(shù)據(jù)或做數(shù)據(jù)分析時(shí),一般要經(jīng)歷以下幾個(gè)步驟:

總結(jié)要查詢數(shù)據(jù)的需求;

后端工程師編寫SQL并部署成服務(wù)和數(shù)據(jù)庫連接;

前端工程師編寫該SQL查詢對(duì)應(yīng)的界面;

運(yùn)維工程師上線服務(wù);

業(yè)務(wù)數(shù)據(jù)分析人員和用戶登錄頁面執(zhí)行查詢語句顯示數(shù)據(jù)。

例如,下圖中對(duì)一個(gè)表格進(jìn)行查詢,針對(duì)該需求需要寫成一條SQL語句才能在數(shù)據(jù)庫中執(zhí)行并得到答案。

從上圖可以看出,我們將以前研發(fā)SQL查詢新需求的工作效率極大地提高了,并且很多非IT人士也能通過自然語言交互界面便捷快速地和數(shù)據(jù)庫交互,業(yè)務(wù)流程速度大為提高。

二、NL2SQL數(shù)據(jù)集

研究任何一個(gè)機(jī)器學(xué)習(xí)算法問題都需要該領(lǐng)域的數(shù)據(jù)集,在此我們列舉了NL2SQL中經(jīng)常使用到的幾個(gè)數(shù)據(jù)集。根據(jù)數(shù)據(jù)集中SQL涉及到的數(shù)據(jù)庫表的個(gè)數(shù)不同,分為單表和多表;根據(jù)所生成的SQL結(jié)構(gòu)中是否含有嵌套查詢,將數(shù)據(jù)集分類為有嵌套和無嵌套。

1. 單表無嵌套數(shù)據(jù)集

ATIS&GeoQuery數(shù)據(jù)集:ATIS來源于機(jī)票訂閱系統(tǒng),由用戶提問生成SQL語句,是一個(gè)單一領(lǐng)域且上下文相關(guān)的數(shù)據(jù)集。GeoQuery來源于美國的地理,包括880條的提問與SQL語句,是一個(gè)單一領(lǐng)域且上下文無關(guān)的數(shù)據(jù)集。

WikiSQL數(shù)據(jù)集:ATIS和GeoQuery這兩個(gè)數(shù)據(jù)集存在著數(shù)據(jù)規(guī)模小(SQL不足千句),標(biāo)注簡單等問題。于是,2017年VictorZhong等研究人員基于維基百科,標(biāo)注了80654的訓(xùn)練數(shù)據(jù),涵蓋了26521個(gè)數(shù)據(jù)庫,取名為WikiSQL。

這個(gè)大型數(shù)據(jù)集一經(jīng)推出,便引起學(xué)術(shù)界的廣泛關(guān)注,因?yàn)樗鼘?duì)模型的設(shè)計(jì)提出了新的挑戰(zhàn),需要模型更好地建構(gòu)Text和SQL之間的映射關(guān)系,更好地利用表格中的屬性,更加關(guān)注解碼的過程。在后續(xù)工作中產(chǎn)生了一系列優(yōu)秀的模型,如Seq2SQL、SQLNet、TypeSQL等,我們將在主流工作一章進(jìn)行詳細(xì)的介紹。

2. 多表嵌套數(shù)據(jù)集

Spider數(shù)據(jù)集:由于WikiSQL數(shù)據(jù)集也存在著問題,它的每個(gè)問題只涉及一個(gè)表格,而且僅支持比較簡單的SQL操作,這不是很符合日常生活中的場景?,F(xiàn)實(shí)生活中存在著醫(yī)療、票務(wù)、學(xué)校、交通等各個(gè)領(lǐng)域的數(shù)據(jù)庫,而且每個(gè)數(shù)據(jù)庫又有數(shù)十甚至上百個(gè)表格,表格之間又有著復(fù)雜的主外鍵聯(lián)系。

于是,2018年耶魯大學(xué)的研究人員推出了Spider數(shù)據(jù)集,這也是目前最復(fù)雜的Text-to-SQL數(shù)據(jù)集。它有以下幾個(gè)特點(diǎn):

(1)領(lǐng)域比較豐富,擁有來自138個(gè)領(lǐng)域的200多個(gè)數(shù)據(jù)庫,每個(gè)數(shù)據(jù)庫平均對(duì)應(yīng)5.1個(gè)表格,并且訓(xùn)練集、測試集中出現(xiàn)的數(shù)據(jù)庫不重合。

(2)SQL語句更為復(fù)雜,包含orderBy、union、except、groupBy、intersect、limit、having 關(guān)鍵字,以及嵌套查詢等。

研究人員根據(jù)SQL語句的復(fù)雜程度(關(guān)鍵字個(gè)數(shù)、嵌套程度)分為了4種難度,值得注意的是,WikiSQL在這個(gè)劃分下只有EASY難度。Spider相比WikiSQL,對(duì)模型的跨領(lǐng)域、生成復(fù)雜SQL的能力提出了新的要求,目前的最佳模型也只有60%左右的準(zhǔn)確度。

中文CSpider數(shù)據(jù)集:西湖大學(xué)在EMNLP2019上提出了一個(gè)中文Text-to-SQL的數(shù)據(jù)集CSpider,主要是選擇Spider作為源數(shù)據(jù)集進(jìn)行了問題的翻譯,并利用SyntaxSQLNet作為基線系統(tǒng)進(jìn)行了測試,同時(shí)探索了在中文上產(chǎn)生的一些額外的挑戰(zhàn),包括中文問題對(duì)英文數(shù)據(jù)庫的對(duì)應(yīng)問題(Question-to-DBmapping)、中文的分詞問題以及一些其他的語言現(xiàn)象。

3. 競賽數(shù)據(jù)集

在國內(nèi),關(guān)于NL2SQL的比賽已舉辦過多次,其中規(guī)模較大的兩次分別為追一科技的“首屆中文NL2SQL挑戰(zhàn)賽”和百度的“2020語言與智能技術(shù)競賽:語義解析任務(wù)”。

其中,追一比賽數(shù)據(jù)集為單表無嵌套NL2SQL數(shù)據(jù)集,數(shù)據(jù)形式較為簡單,每一條SQL只有求最大值、最小值、平均值、求和、計(jì)數(shù)和條件過濾語法現(xiàn)象,無聚合函數(shù),所以排行榜得分較高,算法實(shí)現(xiàn)較為容易。

三、主要技術(shù)路線

目前關(guān)于NL2SQL技術(shù)路線的發(fā)展主要包含以下幾種:

Seq2Seq方法,在深度學(xué)習(xí)的研究背景下,很多研究人員將Text-to-SQL看作一個(gè)類似神經(jīng)機(jī)器翻譯的任務(wù),主要采取Seq2Seq的模型框架。基線模型Seq2Seq在加入Attention、Copying等機(jī)制后,能夠在ATIS、GeoQuery數(shù)據(jù)集上達(dá)到84%的精確匹配,但是在WikiSQL數(shù)據(jù)集上只能達(dá)到23.3%的精確匹配,37.0%的執(zhí)行正確率;在Spider數(shù)據(jù)集上則只能達(dá)到5~6%的精確匹配。

模板槽位填充方法,將SQL的生成過程分為多個(gè)子任務(wù),每一個(gè)子任務(wù)負(fù)責(zé)預(yù)測一種語法現(xiàn)象中的列,該方法對(duì)于單表無嵌套效果好,并且生成的SQL可以保證語法正確,缺點(diǎn)是只能建模固定的SQL語法模板,對(duì)于有嵌套的SQL情況,無法對(duì)所有嵌套現(xiàn)象進(jìn)行靈活處理。

中間表達(dá)方法,該方法為當(dāng)前主流方法,以IRNet為代表,將SQL生成分為兩步,第一步預(yù)測SQL語法骨干結(jié)構(gòu),第二步對(duì)前面的預(yù)測結(jié)果做列和值的補(bǔ)充。在后續(xù)的文章中將圍繞此方法展開講述我們的實(shí)踐經(jīng)驗(yàn)。

結(jié)合圖網(wǎng)絡(luò)的方法,此方法主要為解決多個(gè)表中有同名的列的時(shí)候,預(yù)測不準(zhǔn)確的問題,以Global-GNN、RatSQL為代表,但是由于數(shù)據(jù)庫之間并沒有邊相連接,所以此方法提升不大且模型消耗算力較大。

強(qiáng)化學(xué)習(xí)方法,此方法以Seq2SQL為代表,每一步計(jì)算當(dāng)前決策生成的SQL是否正確,本質(zhì)上強(qiáng)化學(xué)習(xí)是基于交互產(chǎn)生的訓(xùn)練數(shù)據(jù)集的有監(jiān)督學(xué)習(xí),此法效果和翻譯模型相似。

結(jié)合預(yù)訓(xùn)練模型、語義匹配的方法,該方法以表格內(nèi)容作為預(yù)訓(xùn)練語料,結(jié)合語義匹配任務(wù)目標(biāo)輸入數(shù)據(jù)庫Schema,從而選中需要的列,例如:BREIDGE、GRAPPA等。

1. X-SQL方法

本節(jié)主要介紹X-SQL的方法,此方法為當(dāng)前模板填充法的代表,將單表的NL2SQL任務(wù)轉(zhuǎn)化為多個(gè)子任務(wù),每一個(gè)子任務(wù)負(fù)責(zé)預(yù)測一個(gè)語法現(xiàn)象中存在的列和對(duì)列的操作,將NL2SQL任務(wù)轉(zhuǎn)化為一個(gè)在列上的分類任務(wù)。模型結(jié)構(gòu)如圖所示:

X-SQL網(wǎng)絡(luò)結(jié)構(gòu)

上圖中的模型分為編碼器、上下文強(qiáng)化層、輸出層。

編碼器來自改良的BERT--MT-DNN,其數(shù)據(jù)輸入形式為自然語言問題和各列的名稱,自然語言問題和列名之間用BERT中的特殊token [SEP]隔開,并且在每一列的開始位置使用不同的token表示不同的數(shù)據(jù)類型。編碼器還把[CLS] token換成了[CTX] token。

上下文增強(qiáng)層是將每個(gè)列的輸出向量合并到[CTX]位置的輸出向量中得到一個(gè)列向量。

輸出層有六個(gè)子任務(wù)分別是:W-NUM(條件個(gè)數(shù)),W-COL(條件對(duì)應(yīng)列,column_index),W-OP(條件運(yùn)算符,operator_index),W-VAL(條件目標(biāo)值,condition),S-COL(查詢目標(biāo)列,sel),S-AGG(查詢聚合操作,agg)。

由于在工程實(shí)踐中目標(biāo)數(shù)據(jù)庫的列較多,SQL選中的列相對(duì)數(shù)據(jù)庫存在的列的比例較少,例如一個(gè)一百列的數(shù)據(jù)庫可能SQL選中其中一列,因此造成標(biāo)記數(shù)據(jù)稀疏的問題,需要先進(jìn)行列名的相關(guān)性排序或者人工在程序中進(jìn)行重采樣來解決。

2. IRNet方法

IRNet設(shè)計(jì)了一種在自然語言和SQL之間的中間表達(dá)SemQL,采用兩步完成Text-to-SQL的過程:

第一步SchemaEncoding和Schema Linking:SchemaEncoding顧名思義就是對(duì)表結(jié)構(gòu)(表名、列名、列類型、主鍵、外鍵等等)進(jìn)行編碼,以便后續(xù)模型訓(xùn)練使用。SchemaLinking則是要把Question中表述的內(nèi)容與具體的表名和列名對(duì)齊。

第二步預(yù)測SemQL,然后用第一步預(yù)測的列來填充SemQL所表示的SQL語法結(jié)構(gòu)。文中設(shè)計(jì)的中間表達(dá)SemQL結(jié)構(gòu)如下:

四、算法大賽實(shí)踐分享

以國家電網(wǎng)調(diào)控人工智能創(chuàng)新大賽為例

1. 比賽賽題及背景

電網(wǎng)調(diào)控系統(tǒng)經(jīng)多年運(yùn)行匯集了海量的電網(wǎng)運(yùn)行數(shù)據(jù),存儲(chǔ)于數(shù)據(jù)庫或文件系統(tǒng)中,呈現(xiàn)出規(guī)模大、種類多、范圍廣等特點(diǎn),對(duì)于這類數(shù)據(jù)的獲取和分析通常需要通過機(jī)器編程語言與數(shù)據(jù)庫(或文件系統(tǒng))進(jìn)行交互操作,給數(shù)據(jù)分析帶來了較高的門檻。數(shù)據(jù)挖掘深度不夠、數(shù)據(jù)增值變現(xiàn)能力弱等問題也逐漸顯現(xiàn)。亟需通過人工智能技術(shù)手段,實(shí)現(xiàn)人機(jī)交互方式變革,提高數(shù)據(jù)分析挖掘效率,激活數(shù)據(jù)價(jià)值,促進(jìn)數(shù)據(jù)價(jià)值變現(xiàn)。

針對(duì)電網(wǎng)調(diào)控系統(tǒng)數(shù)據(jù)以結(jié)構(gòu)化、半結(jié)構(gòu)化形式存儲(chǔ)特點(diǎn)以及海量數(shù)據(jù)分析繁瑣低效的問題,要求參賽者利用語義解析技術(shù)訓(xùn)練AI智能體,理解調(diào)控系統(tǒng)常見問題,解析數(shù)據(jù)庫的表、屬性、外鍵等復(fù)雜關(guān)系,最終生成SQL語句并在數(shù)據(jù)庫中執(zhí)行獲得問題答案,為用戶提供自動(dòng)、高效、精準(zhǔn)的信息檢索服務(wù)。

2. 賽題理解和分析

本賽題屬于語義解析領(lǐng)域,即將自然語言轉(zhuǎn)換為邏輯形式的任務(wù),它被認(rèn)為是從自然語言到語義表征的映射,它可以在各種環(huán)境中執(zhí)行,以便通過將自然語言解析成數(shù)據(jù)庫查詢,或在會(huì)話代理(如Siri和Alexa)中進(jìn)行查詢解析來實(shí)現(xiàn),諸如機(jī)器人導(dǎo)航、數(shù)據(jù)探索分析等任務(wù)。語義解析技術(shù)發(fā)展至今,已經(jīng)有諸多相關(guān)的解決方案和學(xué)術(shù)研究,例如,基于模板填充的解析技術(shù)、基于Seq2Seq的語義解析技術(shù)、基于強(qiáng)化學(xué)習(xí)的語義解析技術(shù)等等。

本次《電網(wǎng)運(yùn)行信息智能檢索》賽題要求是“給定自然語言表述的電網(wǎng)調(diào)控問題及其對(duì)應(yīng)的數(shù)據(jù)庫,要求參評(píng)的語義解析系統(tǒng)自動(dòng)生成SQL查詢語句?!狈治鰯?shù)據(jù)集得知,比賽數(shù)據(jù)集來自電網(wǎng)調(diào)控領(lǐng)域真實(shí)語料,包含46張表以及對(duì)應(yīng)的1720條調(diào)控場景問題-SQL語句對(duì),涉及公共數(shù)據(jù)、電力一次設(shè)備、自動(dòng)化設(shè)備等多個(gè)數(shù)據(jù)對(duì)象;收集調(diào)控領(lǐng)域常用查詢問題并轉(zhuǎn)寫為SQL語句,包含了同一類問題的不同問法等多種情況。

3. 技術(shù)路線

由于本賽題涉及數(shù)據(jù)資源屬于單一數(shù)據(jù)庫類型,數(shù)據(jù)并不存在跨領(lǐng)域問題,SQL表達(dá)具有較好的一致性,因此適用于基于Seq2Seq的翻譯模型來完成任務(wù)。

根據(jù)數(shù)據(jù)集“單一數(shù)據(jù)庫”、“較多連表查詢”、“表列數(shù)目較大”等特點(diǎn),我們設(shè)計(jì)了基于Transformer的融合表列值信息的Seq2Seq語義解析模型,我們以Transformer作為基礎(chǔ)特征提取單元,構(gòu)建一個(gè)融合表、列、值多元信息的Encoder-Decoder架構(gòu)來完成端到端的NL2SQL任務(wù)。

算法流程圖如下:

算法流程描述:

如圖所示,首先由于數(shù)據(jù)量的限制,我們需要對(duì)數(shù)據(jù)進(jìn)行合理的增廣,通過對(duì)原始自然問句進(jìn)行分詞,通過列名替換、停用詞替換和句式替換等方法得到新的問句-SQL查詢對(duì)。同時(shí),采用AEDA的噪音增強(qiáng)技術(shù),參雜一定比例的噪音樣本增強(qiáng)模型魯棒性。由于SQL語句對(duì)大小寫不敏感,所以我們統(tǒng)一將SQL語句轉(zhuǎn)化為小寫字符。

比較關(guān)鍵的一步是,如何將Schema信息與自然語言問句進(jìn)行交互,我們采用基于模糊匹配的方法,根據(jù)不同的自然語言問句動(dòng)態(tài)生成相應(yīng)的Schema信息與原自然語言問句進(jìn)行拼接。

對(duì)于擴(kuò)充后的數(shù)據(jù)集,我們采用基于Transformer架構(gòu)的生成式預(yù)訓(xùn)練Text2Text模型,進(jìn)行端到端的Finetune。在測試時(shí),同樣地,我們對(duì)測試樣本動(dòng)態(tài)生成Schema拼接信息,完成端到端推理預(yù)測,得到SQL語句。

算法的關(guān)鍵環(huán)節(jié)如下:

自然語言問句AEDA數(shù)據(jù)增強(qiáng);

輸入文本與輸出文本保持大小寫統(tǒng)一;

對(duì)每一個(gè)自然語言問句使用動(dòng)態(tài)Schema信息生成技術(shù),進(jìn)行額外的信息拼接;

對(duì)于絕大部分SQL語句進(jìn)行Greedy Decoding,部分較長SQL查詢采用Top-p Sampling或BeamSearch Decoding。

接下來,我們對(duì)本次比賽中有較多貢獻(xiàn)的AEDA數(shù)據(jù)增強(qiáng)技術(shù)和動(dòng)態(tài)Schema信息生成技術(shù)進(jìn)行詳細(xì)闡述。

本次數(shù)據(jù)集的規(guī)模相較于真實(shí)用戶場景的數(shù)據(jù)規(guī)模而言是非常小的。數(shù)據(jù)增強(qiáng)技術(shù)的使用不可避免。怎樣去使用數(shù)據(jù)增強(qiáng)技術(shù),使用哪一種數(shù)據(jù)增強(qiáng)技術(shù),對(duì)于模型的影響都是舉足輕重的。

2019年的EDA(Easy Data Augmentation Techniques forBoosting Performance on Text Classification Tasks)論文發(fā)表于ICLR2019,提出了四種簡單的數(shù)據(jù)增強(qiáng)操作,包括:同義詞替換(通過同義詞表將句子中的詞語進(jìn)行同義詞替換)、隨機(jī)交換(隨機(jī)交換句子的兩個(gè)詞語,改變語序)、隨機(jī)插入(在原始句子中隨機(jī)插入,句子中某一個(gè)詞的同義詞)和隨機(jī)刪除(隨機(jī)刪除句子中的詞語)。

本次比賽中應(yīng)用的AEDA(An Easier Data Augmentation),是一種簡單的用于生成噪音文本的數(shù)據(jù)增強(qiáng)技術(shù)。最開始被用于提升文本分類的魯棒性,主要是在原始文本中隨機(jī)插入一些標(biāo)點(diǎn)符號(hào),屬于增加噪聲的一種,主要與EDA論文對(duì)標(biāo),突出“簡單”二字。

傳統(tǒng)EDA方法,無論是同義詞替換,還是隨機(jī)替換、隨機(jī)插入、隨機(jī)刪除,都改變了原始文本的序列信息,而AEDA方法,只是插入標(biāo)點(diǎn)符號(hào),對(duì)于原始數(shù)據(jù)的序列信息修改不明顯。而在NL2SQL的EDA過程中,我們顯然是不希望原始問句語義被篡改,因此,在數(shù)據(jù)量較小的場景下,AEDA的增強(qiáng)技術(shù)能夠較好地完成增強(qiáng)NL2SQL語義解析模型的魯棒性提升任務(wù)。

接下來將介紹本次比賽的另一個(gè)關(guān)鍵點(diǎn)——?jiǎng)討B(tài)Schema信息生成技術(shù)。

對(duì)于NL2SQL任務(wù),如何將輸入的自然語言問句與數(shù)據(jù)庫中的存儲(chǔ)信息進(jìn)行連接,十分關(guān)鍵,我們稱之為Schema Linking環(huán)節(jié)。對(duì)于百分點(diǎn)科技此次比賽使用的End2End翻譯模型而言,傳統(tǒng)的Schema Linking技術(shù)并不適用。因而我們采用了一種基于字符串匹配的動(dòng)態(tài)Schemainformation生成技術(shù),對(duì)模型的輸入進(jìn)行動(dòng)態(tài)增強(qiáng),從而達(dá)到翻譯過程中的Schema Linking目的。

首先,為了將自然語言問句與數(shù)據(jù)庫的Schema進(jìn)行關(guān)聯(lián),需要將數(shù)據(jù)庫中的表名和列名進(jìn)行規(guī)范化(例如對(duì)不合理命名、歧義命名、英文命名等,根據(jù)業(yè)務(wù)進(jìn)行重新梳理規(guī)整)。

然后,對(duì)于所有的規(guī)范化后的表名和列名,我們通過模糊匹配的方式對(duì)其與自然語言問句進(jìn)行相似度評(píng)分,并依據(jù)評(píng)分從大到小進(jìn)行表列名的字符串拼接,形式如下:

“{Table name1:Column1| Column2 | ...} | {...}...”

這里我們將不同表的信息用“{}”進(jìn)行聚合,然后通過“|”分隔,同一張表內(nèi)的不同列之間通過“|”分隔,無論是表間信息的排序還是表內(nèi)信息的排序,都是依據(jù)字符串模糊匹配得分來進(jìn)行。

在對(duì)每一個(gè)自然語言問句模型輸入前,均進(jìn)行這樣的動(dòng)態(tài)Schema 信息生成,然后拼接到原始自然語言問句中,作為模型新的輸入。這里由于拼接信息可能會(huì)超過512字符(傳統(tǒng)BERT模型的限制),于是我們采用基于更長距離建模特征的Transformer-XL來替代原始Transformer模塊,來完成長序列的建模。

同樣的,我們的動(dòng)態(tài)Schema生成技術(shù),亦可用于DB Content的信息拼接,思路大同小異。

總結(jié)一下,算法的創(chuàng)新點(diǎn)如下:

End-to-End方式解決NL2SQL任務(wù),執(zhí)行效率高,無子模型pipeline誤差傳遞;

AEDA數(shù)據(jù)增強(qiáng)技術(shù),簡單直接的文本增強(qiáng)技術(shù),可以生成帶噪音的自然語言問句樣本;

動(dòng)態(tài)融合Schema信息和DBContent信息,構(gòu)建簡單合理的Schema Linking機(jī)制,使得自然語言問句與數(shù)據(jù)庫中的目標(biāo)表和列聯(lián)系更加緊密。

5. 比賽成績

在該比賽中,百分點(diǎn)科技參賽團(tuán)隊(duì)名稱是“語義解析”隊(duì),我們的方案在初賽中的精準(zhǔn)匹配率是0.8228,獲得了第三名成績;在決賽中的精準(zhǔn)匹配率是0.6554,獲得了第五名的成績。

五、工程實(shí)踐經(jīng)驗(yàn)

本節(jié)以某地方空天院的NL2SQL項(xiàng)目簡單介紹我們工程實(shí)施中的方案,經(jīng)過上文中介紹的技術(shù)路線,我們對(duì)比了兩種主流技術(shù)路線中的優(yōu)劣勢:

基于模板填充的方法:優(yōu)勢在于計(jì)算資源依賴少、SQL生成效率高、可控性強(qiáng)、SQL組件順序不敏感;劣勢在于復(fù)雜SQL生成乏力,子模型累積誤差;

基于Seq2Seq的方法:優(yōu)勢在于可生成任意形態(tài)SQL;劣勢在于資源依賴高、SQL生成效率低、可控性一般、SQL組件順序敏感。

其中可控性指的是模型產(chǎn)生的SQL語句是否符合SQL語法規(guī)范能夠正確執(zhí)行,SQL順序敏感指的是在SQL的過濾條件中列的前后順序并不影響SQL的正確性。

和前面介紹的百度和國家電網(wǎng)NL2SQL競賽不同,工業(yè)應(yīng)用對(duì)于可控性的要求比較高,同時(shí)涉及到的數(shù)據(jù)形式會(huì)更復(fù)雜,采用Seq2Seq模型生成的SQL語句無法保證其語法規(guī)范性,同時(shí)也無法針對(duì)具體的領(lǐng)域數(shù)據(jù)進(jìn)行定向優(yōu)化。而簡單的“模版填充法”雖然可以實(shí)現(xiàn)定向優(yōu)化,但是無法解決復(fù)雜的嵌套表達(dá)形式。

為了能夠更好地?fù)P長避短,結(jié)合兩種主流方案的優(yōu)勢,我們提出了以下的算法工程方案:

SQL結(jié)構(gòu)預(yù)測:將自然語言問句和表結(jié)構(gòu)到最終生成的SQL中出現(xiàn)的語法現(xiàn)象編碼(子查詢、分組等),通過bert-sequence建模;

列識(shí)別模型:預(yù)測SQL中Select部分存在的列和列上執(zhí)行的操作(聚合函數(shù)等);

值識(shí)別模型:預(yù)測SQL中where部分中對(duì)應(yīng)的判斷符號(hào)(大于、小于、等于)。

整體模型流程如下:

在該項(xiàng)目中由于問題和需要生成SQL的數(shù)據(jù)庫表格長度較短,所以可以直接進(jìn)行Schema Linking,并且不會(huì)由于選中列的標(biāo)記數(shù)據(jù)稀疏導(dǎo)致訓(xùn)練失效的問題,所以我們采用了上面的方案取得了不錯(cuò)的效果。

六、總結(jié)與展望

當(dāng)前,自然語言處理技術(shù)的發(fā)展和預(yù)訓(xùn)練模型的大規(guī)模應(yīng)用,使語義解析中的NL2SQL技術(shù)在真實(shí)場景落地成為可能。但是在工業(yè)實(shí)踐中應(yīng)用仍舊有不少問題尚待解決,主要表現(xiàn)在自然語言建模更多的是使用聯(lián)結(jié)主義的方法,如深度學(xué)習(xí),而要生成的SQL語句為形式化語言,人工智能技術(shù)尚且無法完全彌合符號(hào)主義和聯(lián)結(jié)主義兩種方法之間的鴻溝,這也是NL2SQL技術(shù)所面臨的最大挑戰(zhàn)。不過隨著認(rèn)知智能技術(shù)的發(fā)展,出現(xiàn)了越來越多的方法,相信終有一日NL2SQL等語義解析問題會(huì)被完美解決,實(shí)現(xiàn)人機(jī)交互的無縫銜接。

本文介紹了當(dāng)前NL2SQL的主流技術(shù)路線,以及百分點(diǎn)認(rèn)知智能實(shí)驗(yàn)室在競賽和項(xiàng)目中積累的實(shí)踐經(jīng)驗(yàn)。后續(xù)實(shí)驗(yàn)室將繼續(xù)努力深耕NL2SQL問題,為客戶帶來更好的技術(shù)解決方案,創(chuàng)造更大的業(yè)務(wù)價(jià)值。

相關(guān)文章

人工智能企業(yè)

更多>>

人工智能硬件

更多>>

人工智能產(chǎn)業(yè)

更多>>

人工智能技術(shù)

更多>>
AI云資訊(愛云資訊)立足人工智能科技,打造有深度、有前瞻、有影響力的泛科技媒體平臺(tái)。
合作QQ:1211461360微信號(hào):icloudnews