摘 要:現(xiàn)有的自然語言轉(zhuǎn)SQL(NL2SQL)方法沒有充分利用數(shù)據(jù)表的字段信息,而這對于問題的語義理解和SQL語句的邏輯生成有著重要作用。為了提高SQL生成的整體準確性,提出一種融合數(shù)據(jù)表字段的NL2SQL方法(FC-SQL)。首先,利用BERT預訓練模型對問題和數(shù)據(jù)庫表字段進行合并編碼表示;其次,采用多任務學習的方式,結合并聯(lián)和級聯(lián)的方式構建多任務網(wǎng)絡,以預測不同子任務;最后,針對條件值提取子任務,通過融合字段信息計算問題中詞與表字段的相似度,并以相似度值作為權重來計算每個詞語作為條件值的概率,從而提高條件值預測的準確率。在TableQA數(shù)據(jù)集上的邏輯形式準確率與SQL執(zhí)行準確率分別達到88.23%和91.65%。設計消融實驗驗證表字段信息對于模型的影響,實驗結果表明融入表字段后,條件值抽取子任務效果有所提升,進而改善了NL2SQL任務的整體準確率,相較于對比模型有更好的SQL生成效果。
關鍵詞:多任務學習; 自然語言轉(zhuǎn)SQL; 自然語言處理; 表字段
中圖分類號:TP391 文獻標志碼:A
文章編號:1001-3695(2024)09-033-2800-05
doi:10.19734/j.issn.1001-3695.2023.12.0629
Multi-task learning method for NL2SQL with fused table columns
Liu Yanga, Liao Weia, Xu Zhenb
(a.School of Electronic & Electrical Engineering, b.School of Mechanical & Automotive Engineering, Shanghai University of Engineering Science, Shanghai 201620, China)
Abstract:Existing NL2SQL approaches do not fully utilize the information of data table columns, which plays an important role in the semantic understanding of the problem and the logical generation of SQL statements. This paper proposed an NL2SQL method that fused data table columns(FC-SQL) to improve the overall accuracy of SQL generation. Firstly, this method utilized BERT to merge the problem and database table columns for encoded representations. Secondly, it used multi-task learning approach to construct a multi-task network by combining parallel and cascade to predict different sub-tasks. Finally, for the conditional value extraction sub-task, this method computed the similarity between the words in the problem and the table columns by fusing the information of the columns, and it used the similarity value as a weight to compute each word as the conditional value probability of each word as a conditional value, thus improving the accuracy of conditional value prediction. The logical form accuracy and SQL execution accuracy on the TableQA dataset reach 88.23% and 91.65%, respectively. This paper designed ablation experiments to verify the effect of table columns information on the model. The experimental results show that the incorporation of table columns improves the effectiveness of the conditional value extraction sub-task, which in turn improves the overall accuracy of the NL2SQL task and provides better SQL generation compared to the comparison model.
Key words:multi-task learning; NL2SQL; natural language processing; table columns
數(shù)據(jù)的規(guī)模和多樣性持續(xù)增長,使得數(shù)據(jù)分析和挖掘在各領域變得日益重要。例如,金融、醫(yī)療、零售和能源等行業(yè)均依賴于高效的數(shù)據(jù)查詢來進行關鍵決策。但傳統(tǒng)的數(shù)據(jù)查詢方式主要依賴于結構化查詢語言,給非技術背景的用戶帶來了較大的學習成本。為了縮短技術與非技術用戶之間的差距,自然語言轉(zhuǎn)SQL(NL2SQL)技術應運而生,不僅可以提高查詢的效率,還能促進跨學科和跨行業(yè)的合作。
盡管NL2SQL技術在最近幾年取得了許多進步[1~3],但在實際應用中仍面臨諸多挑戰(zhàn),如跨領域知識的獲取、自然語言的模糊語義解析,以及處理復雜嵌套查詢等。針對這些難點,一些基于深度學習的端到端方法被廣泛應用,例如序列到序列模型(Seq2seq)[4]和樹狀網(wǎng)絡模型[5]等。這些方法可以直接學習輸入查詢與輸出SQL之間的對應關系,取得了不錯的效果。
當前,研究人員正在探尋更加高效和準確的NL2SQL方法。比如借助基于BERT[6]的預訓練模型,通過遷移學習等方法使得模型進一步提高其泛化能力[7]。由于這些技術的出現(xiàn),未來的NL2SQL系統(tǒng)可能不僅能夠解決復雜的查詢問題,還能在數(shù)據(jù)安全等方面提供更強大的支持,這將進一步推動其在商業(yè)和科研領域的廣泛應用。
1 相關工作
NL2SQL目前作為自然語言處理的焦點子領域,其目的是將輸入的查詢問題轉(zhuǎn)換為數(shù)據(jù)庫可以解析和執(zhí)行的SQL語句。這個轉(zhuǎn)換過程對于確保高效的數(shù)據(jù)庫交互尤為關鍵,NL2SQL示例如圖1所示。
在該領域的早期研究中,主流方法主要采用流水線策略。Yih等人[8]提出了一種基于流水線的語義解析方法,將自然語言問題轉(zhuǎn)換為與知識庫中的實體和關系相對應的查詢圖。這種策略在一定程度上簡化了問題,但是模塊之間的依賴性可能導致錯誤的連鎖反應。使用端到端的神經(jīng)網(wǎng)絡模型可以捕捉語義解析任務的全局特征,以克服流水線方法的局限性[9]。端到端方法也面臨數(shù)據(jù)需求量大、解釋性差等問題[10],結合兩種方法的優(yōu)點進行模型設計仍然是NL2SQL研究的重要方向。
隨著深度學習在自然語言處理領域的廣泛應用,NL2SQL技術取得了進步。基于深度學習的NL2SQL模型能夠處理不同數(shù)據(jù)庫表格和復雜跨領域的自然語言查詢。比如利用預訓練模型來幫助提高模型的泛化能力和準確率[11]。Xu等人[12]提出的SQLNet是在WikiSQL數(shù)據(jù)集[13]上一個比較知名的基準模型,是最早使用模板填充方法的模型。
為了解決數(shù)據(jù)表信息沒有被利用的問題,Yu等人[14]提出了TypeSQL模型,利用數(shù)據(jù)庫中的類型信息來更好地理解自然語言問句中的實體和數(shù)字。Hwang等人[15]使用SQLova模型借助預訓練模型,提高了序列生成的效果。同樣地,He等人[16]提出的X-SQL模型也使用了預訓練模型,不同的是使用了MT-DNN(multi-task deep neural networks)[17]模型代替BERT,并利用上下文進行增強結構化表示。Lyu等人[18]提出的HydraNet模型將NL2SQL問題分解為列級別的排序和解碼,然后用簡單的規(guī)則將列級別的輸出組合成一個 SQL 查詢。
多任務學習可以共享參數(shù)和表示,讓模型學習到更豐富和更通用的語言知識。McCann等人[19]使用了一種多任務問答網(wǎng)絡結構,通過使用多種注意力機制來共同學習多任務表示。本文在多任務學習的基礎上,通過在BERT模型的輸入序列中融合表字段,提出FC-SQL方法,使得模型能更好地理解數(shù)據(jù)庫結構信息,并利用表字段來提高子任務的預測效果。
2 研究方法
2.1 模板定義
目前針對單表場景下的NL2SQL任務,模板填充是較為常用的方法[12,15,16]。在單表查詢場景中,基于模板填充的方法能夠較好地完成自然語言到SQL的轉(zhuǎn)換。這種方法依賴預定義的查詢模板及其對應的填充規(guī)則,將SQL生成任務分解為多個子任務,每個子任務對應模板中的一個槽位進行填充。相比其他方法,基于模板的方法可以明確查詢語義結構,且無須考慮多表場景下的內(nèi)連接、外連接等操作,有利于利用預訓練語言模型更好地完成信息提取。因此考慮到基于模板填充方法在單表場景下的優(yōu)勢,本文也采用這種方法來研究單表場景的NL2SQL任務。
首先需要設計一個查詢模板以捕捉自然語言查詢中的關鍵信息。在模板設計時,應平衡查詢語法的靈活性與數(shù)據(jù)庫結構的復雜性,使模板系統(tǒng)能夠覆蓋不同類型的查詢需求。設計的模板應包含多個槽位,對應SQL查詢語句的組成元素,如表名、字段、操作符等。模板形式可以表示為
SELECT [列1,列2,…] FROM [表名] WHERE [條件1,條件2,…]
方括號中的內(nèi)容為槽位,用于填充實際值。與具體數(shù)據(jù)庫結構信息相結合,模板需要預定義各種字段和操作符的候選值,具體的定義方式如圖2所示。$AGG代表聚合函數(shù),取值為{“”,“AVG”,“MAX”,“MIN”,“COUNT”,“SUM”},空字段表示該選擇列無聚合操作;$COL代表被選擇的列和條件中被選擇的列;$OP代表條件運算符,在數(shù)據(jù)集中給出的取值為{“>”,“<”,“=”,“!=”},本文中進行實驗評估時,將精確匹配“=”換為“l(fā)ike”模糊匹配,$VALUE代表條件值任務;$CONN代表條件連接符,取值為{“”,“and”,“or”},空字段表示無條件連接符。
2.2 編碼層
使用BERT預訓練模型來學習多任務表示,將自然語言查詢和數(shù)據(jù)庫字段進行合并表征,目的是將問題和數(shù)據(jù)庫信息轉(zhuǎn)換為上下文相關的向量表示,以便后續(xù)的SQL生成層進行語義解析。本文采用了Chinese-BERT-WWM模型,該模型在大規(guī)模的無標注文本上進行了預訓練,可以學習雙向語義表示,并捕捉單詞和句子在不同上下文中的語義信息。
2.2.1 融合表字段的輸入序列
為適配BERT模型,對問題和數(shù)據(jù)表字段進行了預處理,構造模型的輸入序列。首先使用WordPiece分詞器對查詢語句進行分詞,WordPiece通過在詞表中選擇最大化語言模型似然概率的兩個子詞,從而生成新的子詞。
假設由n個子詞組成的句子T=(t1,t2,…,tn),ti表示第i個詞,那么句子T的語言模型似然值可以表示為所有子詞概率的乘積:
log P(T)=∑ni=1log P(ti)(1)
假設將相鄰的子詞a和b合并為新的子詞c,然后合并前后句子的似然值變化為
log P(tc)-(log P(ta)+log P(tb))(2)
似然值的變化相當于兩個子詞之間的互信息。WordPiece每次選擇互信息值最大的兩個相鄰子詞進行合并,優(yōu)先合并在語料中常見的相鄰子詞對。合并兩個子詞后,將它們替換為一個新的子詞,并更新詞匯表。這個過程迭代進行,直到達到預定詞匯表大小。一旦詞匯表構建完畢,WordPiece就可以用于將新的文本分成子詞序列。分詞完成后,將分詞后的問句和字段按如下特定格式拼接成一個序列:
[CLS]問題查詢[SEP]字段1 [SEP]字段2 [SEP]…
例如,對于查詢“北京的人口是多少?”和字段[“城市”,“人口”],經(jīng)過上述預處理后,得到的BERT模型輸入序列為
[CLS]北京 的 人口 是 多少 ? [SEP]城市[SEP]人口[SEP]
通過在輸入序列中加入數(shù)據(jù)表字段,BERT能夠在編碼過程中捕獲與數(shù)據(jù)庫結構相關的重要信息。[CLS]和[SEP]等特殊符號用于表征句子邊界。預處理方式遵循BERT標準輸入形式,為模型提供了有效的輸入序列。
2.2.2 BERT編碼
將處理好的序列輸入到BERT模型中進行編碼。在編碼過程中,BERT模型會為輸入序列中的每個詞(包括問題和字段)生成一個固定長度的向量表示。假設BERT模型的層數(shù)為L,那么對于輸入序列X=(x1,x2,…,xn),BERT模型的輸出是一個包含L層的列表,記作E(l)=(e(l)1,e(l)2,…,e(l)n)(l=1,2,…,L),其中e(l)i表示第l層的第i個編碼表示。選擇BERT輸出的最后一層,即E(L)=(e(L)1,e(L)2,…,e(L)n)作為最終的編碼結果,并獲得以下三個部分的表示(對應圖5中BERT編碼輸出后的三個部分):
a)整體語義表示:使用e(L)1即[CLS]對應的向量作為整個輸入序列的語義表示h[CLS]。
b)詞序列表示:在經(jīng)過BERT編碼后的輸出表示中得到詞序列表示hi,用來描述問題中第i個token。
c)字段表示:本文首先將每個字段的詞向量通過一個全連接層得到新的表示,然后結合 [CLS] 標記的向量計算注意力權重。對于第i列,其在輸入序列中對應的詞為xi1,xi2,…,xik,這些詞在全連接層后的表示為coli1,coli2,…,colik,[CLS] 標記在全連接層后的表示為clsi。使用colij和 clsi計算每個詞的注意力權重αij。
αij=exp(colijclsi)∑kj=1 exp(colijclsi)(3)
然后,第i列的表示通過加權求和得到。
Ci=∑kj=1 αijcolij(4)
最后,將Ci與[CLS]對應的向量相加,得到最終的字段表示Ccol。
Ccol=h[CLS]+Ci(5)
2.3 多任務網(wǎng)絡構建
本文將結合并聯(lián)和級聯(lián)來構建多任務網(wǎng)絡。在并聯(lián)結構中,多個任務共享相同的特征表示層并同時進行預測輸出,這意味著不同任務可以共享網(wǎng)絡層的語義特征,如圖3所示。
圖3 多任務網(wǎng)絡中的并聯(lián)結構
Fig.3 Parallel structure in a multi-task network
相比于并聯(lián)結構,級聯(lián)結構中的各個任務則是按順序逐一進行的,在這種結構下,一個任務的輸出會直接成為下一個任務的輸入,如圖4所示。這種結構適用于任務之間有明確的依賴關系,后面的任務可以充分利用前面的任務學習到的特征。
本文構建的網(wǎng)絡模型結合兩種結構分別預測不同的子任務。具體的SQL組成部分包括選擇列數(shù)、條件個數(shù)、條件連接符、條件值、聚合函數(shù)、條件運算符、選擇列、條件列,如圖5所示,分別對應圖中S-NUM、W-NUM、W-CONN、W-VAL、S-AGG、W-OP、S-COL和W-COL?!啊选北硎军c積運算。從圖5中可以看出,S-NUM、W-NUM、W-CONN、W-VAL、S-COL和W-COL子任務采用并聯(lián)結構,因為這些子任務之間互不影響,共享多任務表示層以同時進行預測;而S-AGG和W-OP的預測則采用級聯(lián)結構,這兩個子任務的輸入利用之前預測出的S-COL和W-COL結果,而不是直接從共享表示層獲得,因為SQL的選擇子句中只會對選擇列進行聚合操作,條件子句中每個條件列都對應著一個條件運算。相比于直接從表示層獲得輸入,利用選擇列和條件列的結果分別預測聚合函數(shù)和條件運算符,這種級聯(lián)結構可以更好地利用不同子任務間的關系,從而生成更符合語義的SQL查詢語句。
其中,預測選擇列數(shù)和條件個數(shù)有助于模型更好地解析自然語言查詢的結構。預測選擇列數(shù)可幫助更好地生成SQL查詢的SELECT部分,因為自然語言查詢不會明確指出需要的選擇列數(shù)和條件列數(shù);預測條件個數(shù)則用于幫助更好地生成WHERE子句,這兩項預測可以增強模型對查詢結構的理解。
2.4 子任務預測
將經(jīng)過BERT編碼后的輸出表示作為后續(xù)子任務預測的輸入序列。
1)選擇數(shù)目與條件數(shù)目 使用輸入序列第一個詞的嵌入h[CLS]來預測,公式如下:
3)聚合函數(shù)和條件運算符 根據(jù)預測出的選擇列與條件列,從字段嵌入Ccol中取出對應的特定列Csel和Cw,分別表示預測出的選擇列與條件列,然后通過線性層將選擇列與條件列嵌入映射為聚合函數(shù)和條件運算的概率分布,公式如下:
2.5 融入表字段的條件值抽取
在條件值預測部分,首先計算問題和字段的向量相似度。相比歐氏距離等其他度量方式,內(nèi)積運算簡單高效,可實現(xiàn)大規(guī)模的相似度比較,同時在此任務中可以準確評估問題與字段向量在BERT編碼語義空間中的相似性。因此本文選擇內(nèi)積的方式,可以有效地評估問題中的詞與字段在語義級別的匹配程度。公式如下:
Ssim=hiCTcol(13)
S=softmax(Ssim)(14)
其中:hi是問題中第i個token;Ccol是字段表示;Ssim是計算出問題中每個詞和字段之間的相似度。當一個詞的嵌入與某一列的嵌入具有相同的向量方向時,這兩者的語義相似度便被認為較高。
為進一步提煉這些相似度信息,進行了歸一化處理,形成概率分布S,表示每個詞與各列的關聯(lián)概率。這一概率分布被視為權重,與值標簽的概率進行融合,產(chǎn)生每個詞作為值標簽的加權概率。再將每個詞的嵌入經(jīng)過線性層轉(zhuǎn)換為值標簽的預測,公式如下:
是線性層的權重參數(shù);Sj表示的是第j個字段與問題詞的相似度;Stags是問題中第i個token被選為條件值的概率。計算值標簽得分時,會對每個詞與所有列(由j索引)的相似度取最大值。總的來說,將經(jīng)過BERT編碼后的問題和字段向量,通過內(nèi)積的方式計算問題中每個詞與每個字段的相似度,計算每個詞作為條件值的概率,以此來完成詞與字段的匹配過程,篩選出候選條件值。
例如,對于問題“2012年廈門住宅土地成交了多少宗?”,首先用BERT對整個問題進行編碼,得到問題向量X。假設問題中的詞“2012年”對應的詞向量為X1,字段“年份”的詞向量為Y,經(jīng)過X與Y的內(nèi)積運算后,可以發(fā)現(xiàn)X1與Y的相似度比其他詞向量與Y的相似度更高,這意味著“2012年”與“年份”字段在語義上最匹配,便可以將“2012年”作為條件值的候選值。
3 實驗結果分析
本文使用的實驗數(shù)據(jù)集是一個中文的文本到SQL的數(shù)據(jù)集TableQA[20],該數(shù)據(jù)集總共包含了約4萬條文本到SQL的訓練樣例和約4千條測試樣例,主要包含金融和通用領域的數(shù)據(jù)。在金融領域方面,數(shù)據(jù)集中的樣例包含股票、基金、銀行等金融領域數(shù)據(jù);通用領域數(shù)據(jù)集的文本查詢涉及到教育、醫(yī)療、房產(chǎn)等日常領域,具有一定的復雜性和多樣性。
3.1 整體準確率對比
本文在驗證集和測試集上使用了以下三個指標來進行評估:
a)邏輯形式準確率(logic form accuracy,LX):生成的SQL語句與數(shù)據(jù)集標簽完全一致的比例。
LX=完全預測正確的SQL數(shù)量SQL總數(shù)量(16)
b)執(zhí)行準確率(execution accuracy,EX):生成的SQL語句在數(shù)據(jù)庫中執(zhí)行后得到正確結果的比例。
EX=執(zhí)行正確的SQL數(shù)量SQL總數(shù)量(17)
c)平均準確率(mean accuracy,MX):取邏輯形式準確率和執(zhí)行準確率的平均值。
MX=LX+EX2(18)
本文對比的基線模型包括SQLNet[12]、TypeSQL[14]、SQL-ova[15]、X-SQL[16]、HydraNet[18],這些基線模型使用了不同的編碼器、注意力機制、預訓練模型等技術,以解決不同SQL生成場景下的難點,例如單表查詢、多表查詢、復雜查詢等。
從表1中可以發(fā)現(xiàn),SQLNet和TypeSQL模型在TableQA數(shù)據(jù)集上的表現(xiàn)較其他模型較差。其中,SQLNet模型沒有利用數(shù)據(jù)表中的實際內(nèi)容,僅依賴于查詢語義;而TypeSQL模型僅使用了數(shù)據(jù)表字段的數(shù)據(jù)類型信息,沒有利用字段名稱等其他信息。相比之下,SQLova、X-SQL和HydraNet引入了BERT等預訓練語言模型來理解查詢語句語義,總體效果較好,但并沒有充分利用數(shù)據(jù)表本身的字段信息,僅將表字段名稱作為輸入序列的一部分。
本文構建的模型在驗證集上的邏輯形式準確率(LX)達到88.62%,執(zhí)行準確率(EX)達到91.76%。與表現(xiàn)最好的基線模型HydraNet相比,在驗證集上的LX和EX指標分別提高了5.97和3.12百分點。同時在測試集上,LX和EX分別達到88.23%和91.65%,相比HydraNet提升了5.72和3.02百分點。
3.2 改用模糊匹配執(zhí)行SQL語句
通過觀察數(shù)據(jù)集中的查詢語句和對應的數(shù)據(jù)庫表格數(shù)據(jù),發(fā)現(xiàn)存在一些查詢語句中的實際條件值與數(shù)據(jù)庫中存儲的數(shù)據(jù)以及標簽不完全對應的情況,如表2所示。例如,問題“芒果的劇的總播放量達到了多少”中包含的條件值為“芒果”,而數(shù)據(jù)表中實際存儲的是“芒果TV”,在執(zhí)行SQL語句時,使用精確匹配無法匹配到結果。因此本文將“=”精確匹配替換為了“l(fā)ike”模糊匹配,進行文本匹配時可以匹配關鍵詞而不要求完全等價。那么查詢的條件語句部分由“where播放平臺=‘芒果’”改為“ where播放平臺like‘%芒果%’”,則可以匹配到“芒果TV”這條數(shù)據(jù)。實驗結果如表3所示,驗證集和測試集上的執(zhí)行準確率(EX)分別提高了0.2和0.17百分點,使用模糊匹配實現(xiàn)了更好的容錯性。
3.3 子任務準確率
為了進一步分析本文模型各模塊的效果,測試了模型在各個子任務上的準確率,具體結果如表4和圖6所示。從表4中可以看出,本模型在各個子任務上均取得了較高的準確率,例如S-COL、W-COL和S-AGG等子任務的準確率都達到95%以上,證明了模型可以有效地抽取自然語言查詢中的關鍵信息。并且可以注意到,S-NUM、W-NUM和W-CONN這三個子任務的準確率相比于其他子任務偏高,都達到97%以上。這三個子任務均使用BERT輸入序列中第一個詞的嵌入h[CLS]來預測,這也說明經(jīng)過BERT編碼后的序列能很好地表示上下文語義信息。
從圖6中可以直觀看出,W-VAL較其他子任務準確率偏低,主要是因為本次實驗數(shù)據(jù)集中存在部分問題的條件值與標簽值不一致的情況。例如,3.2節(jié)實驗中的問題舉例,此問題對應的標簽值給出的仍是“芒果TV”,與數(shù)據(jù)表中存儲的數(shù)據(jù)相同。這會導致模型即使正確抽取出問題中的條件值也會被認為是錯誤的,因為無法與條件值標簽對應。數(shù)據(jù)集中此類情況的存在,是導致條件值抽取準確率偏低的一個主要原因。
3.4 消融實驗
為了驗證引入問題中詞與表字段相似度(以下簡稱sim)的有效性,本文進行了消融實驗,“-sim”表示不計算詞與表字段相似度。結果如表5和表6所示。在不使用sim模塊的情況下,驗證集上和測試集上的條件值準確率分別下降了1.8和1.32百分點;在驗證集上的LX和EX分別下降了0.38和0.54百分點,測試集上的LX和EX分別下降了0.75和0.61百分點。這說明引入sim不僅提高了條件值(W-VAL)預測的準確率,也提升了整體的準確率。
4 結束語
在NL2SQL任務中,表字段信息對于生成準確的SQL查詢有重要作用,現(xiàn)有的方法通常沒有充分利用表字段的信息。針對這個問題,本文提出FC-SQL方法,主要包括兩個部分:編碼層和子任務預測層。在編碼層,使用BERT模型對自然語言查詢和數(shù)據(jù)庫表字段進行合并編碼,得到上下文相關的多任務表示;在子任務預測層,采用多任務學習的方式,結合多任務網(wǎng)絡中的并聯(lián)和級聯(lián)結構分別預測不同的子任務。在條件值抽取模塊,通過計算問題中詞與表字段之間的相似度,增強了詞語和數(shù)據(jù)表字段之間的匹配能力。在TableQA數(shù)據(jù)集上進行了實驗評估,并與多種現(xiàn)有NL2SQL方法對比,結果表明本文模型有更好的表現(xiàn)。最后進行消融實驗,驗證了引入詞與列相似度的有效性。
本文方法也存在一些局限性和不足之處。相似度計算的方式比較單一,未來可考慮采用更多的計算方式(如注意力機制)來進行對比分析;問題理解過程中存在的一些如語義歧義、省略等現(xiàn)象也會對模型的理解能力產(chǎn)生影響,后續(xù)工作可以嘗試在數(shù)據(jù)預處理階段改善這些問題。
參考文獻:
[1]趙志超, 游進國, 何培蕾, 等. 數(shù)據(jù)庫中文查詢對偶學習式生成SQL語句研究[J]. 中文信息學報, 2023, 37(03): 164-172. (Zhao Zhichao, You Jinguo, He Peilei, et al. Generating SQL statement from Chinese query based on dual learning[J]. Journal of Chinese Information Processing, 2023, 37(3): 164-172.)
[2]何佳壕, 劉喜平, 舒晴, 等. 帶復雜計算的金融領域自然語言查詢的SQL生成[J]. 浙江大學學報:工學版, 2023, 57(2): 277-286. (He Jiahao, Liu Xiping, Shu Qing, et al. SQL generation from natural language queries with complex calculations on financial data[J]. Journal of Zhejiang University:Engineering Science, 2023, 57(2): 277-286.)
[3]曹金超, 黃滔, 陳剛, 等. 自然語言生成多表SQL查詢語句技術研究[J]. 計算機科學與探索, 2020, 14(7): 1133-1141. (Cao Jinchao, Huang Tao, Chen Gang, et al. Research on technology of generating multi-table SQL query statement by natural language[J]. Journal of Frontiers of Computer Science and Technology, 2020,14(7): 1133-1141.)
[4]Iyer S, Konstas I, Cheung A, et al. Learning a neural semantic parser from user feedback[EB/OL]. (2017-04-27). https://arxiv.org/abs/1704.08760.
[5]趙猛, 陳珂, 壽黎但, 等. 基于樹狀模型的復雜自然語言查詢轉(zhuǎn) SQL 技術研究[J]. 軟件學報, 2022, 33(12): 4727-4745. (Zhao Meng, Chen Ke, Shou Lidan, et al. Converting complex natural language query to SQL based on tree representation model[J]. Journal of Software, 2022, 33(12): 4727-4745.)
[6]Devlin J, Chang Mingwei, Lee K, et al. BERT: pre-training of deep bidirectional Transformers for language understanding[EB/OL]. (2019-05-24). https://arxiv.org/abs/1810.04805.
[7]Patil R, Patwardhan M, Karande S, et al. Exploring dimensions of generalizability and few-shot transfer for text-to-SQL semantic parsing[C]//Proc of the 1st Transfer Learning for Natural Language Proces-sing Workshop. 2023: 103-114.
[8]Yih S W, Chang Mingwei, He Xiaodong, et al. Semantic parsing via staged query graph generation: question answering with knowledge base[C]//Proc of Joint Conference of the 53rd Annual Meeting of the ACL and the 7th International Joint Conference on Natural Language Processing of the AFNLP. Stroudsburg, PA: ACL, 2015: 1321-1331.
[9]Liang Chen, Berant J, Le Q, et al. Neural symbolic machines: learning semantic parsers on freebase with weak supervision[EB/OL]. (2017-04-23). https://arxiv.org/abs/1611.00020.
[10]Herzig J, Berant J. Neural semantic parsing over multiple knowledge-bases[EB/OL]. (2017-04-24). https://arxiv.org/abs/1702.01569.
[11]Katsogiannis-Meimarakis G, Koutrika G. A deep dive into deep learning approaches for text-to-SQL systems[C]//Proc of International Conference on Management of Data. New York: ACM Press, 2021: 2846-2851.
[12]Xu Xiaojun, Liu Chang, Song D. SQLNet: generating structured queries from natural language without reinforcement learning[EB/OL]. (2017-11-13). https://arxiv.org/abs/1711.04436.
[13]Zhong V, Xiong Caiming, Socher R. Seq2SQL: generating structured queries from natural language using reinforcement learning[EB/OL]. (2017-11-09). https://arxiv.org/abs/1709.00103.
[14]Yu Tao, Li Zifan, Zhang Zilin, et al. TypeSQL: knowledge-based type-aware neural text-to-SQL generation[C]//Proc of Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies. Stroudsburg, PA: ACL, 2018: 588-594.
[15]Hwang W, Yim J, Park S, et al. A comprehensive exploration on WikiSQL with table-aware word contextualization[EB/OL]. (2019-11-11). https://arxiv.org/abs/1902.01069.
[16]He Pengcheng, Mao Yi, Chakrabarti K, et al. X-SQL: reinforce schema representation with context[EB/OL]. (2019-08-21). https://arxiv.org/abs/1908.08113.
[17]Liu Xiaodong, He Pengcheng, Chen Weizhu, et al. Multi-task deep neural networks for natural language understanding[C]//Proc of the 57th Annual Meeting of the Association for Computational Linguistics. Stroudsburg, PA: ACL, 2019: 4487-4496.
[18]Lyu Qin, Chakrabarti K, Hathi S, et al. Hybrid ranking network for text-to-SQL[EB/OL].(2020-08-11).https://arxiv.org/abs/2008.04759.
[19]McCann B, Keskar N S, Xiong Caiming, et al. The natural language decathlon: multitask learning as question answering[EB/OL]. (2018-06-20). https://arxiv.org/abs/1806.08730.
[20]Sun Ningyuan, Yang Xuefeng, Liu Yunfeng. TableQA: a large-scale Chinese text-to-SQL dataset for table-aware SQL generation[EB/OL]. (2020-06-10). https://arxiv.org/abs/2006.06434.
收稿日期:2023-12-30;修回日期:2024-02-29 基金項目:國家自然科學基金資助項目(62001282)
作者簡介:劉洋(1999—),男,河南信陽人,碩士研究生,主要研究方向為自然語言處理;廖薇(1982—),女(通信作者),江西贛州人,副教授,碩導,博士,主要研究方向為生物醫(yī)療與自然語言處理(liaowei54@126.com);徐震(1984—),男,山東聊城人,副教授,碩導,博士,主要研究方向為數(shù)據(jù)驅(qū)動的機器學習.