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

?

融合表字段的NL2SQL多任務(wù)學(xué)習(xí)方法

2024-11-04 00:00:00劉洋廖薇徐震

摘 要:現(xiàn)有的自然語(yǔ)言轉(zhuǎn)SQL(NL2SQL)方法沒(méi)有充分利用數(shù)據(jù)表的字段信息,而這對(duì)于問(wèn)題的語(yǔ)義理解和SQL語(yǔ)句的邏輯生成有著重要作用。為了提高SQL生成的整體準(zhǔn)確性,提出一種融合數(shù)據(jù)表字段的NL2SQL方法(FC-SQL)。首先,利用BERT預(yù)訓(xùn)練模型對(duì)問(wèn)題和數(shù)據(jù)庫(kù)表字段進(jìn)行合并編碼表示;其次,采用多任務(wù)學(xué)習(xí)的方式,結(jié)合并聯(lián)和級(jí)聯(lián)的方式構(gòu)建多任務(wù)網(wǎng)絡(luò),以預(yù)測(cè)不同子任務(wù);最后,針對(duì)條件值提取子任務(wù),通過(guò)融合字段信息計(jì)算問(wèn)題中詞與表字段的相似度,并以相似度值作為權(quán)重來(lái)計(jì)算每個(gè)詞語(yǔ)作為條件值的概率,從而提高條件值預(yù)測(cè)的準(zhǔn)確率。在TableQA數(shù)據(jù)集上的邏輯形式準(zhǔn)確率與SQL執(zhí)行準(zhǔn)確率分別達(dá)到88.23%和91.65%。設(shè)計(jì)消融實(shí)驗(yàn)驗(yàn)證表字段信息對(duì)于模型的影響,實(shí)驗(yàn)結(jié)果表明融入表字段后,條件值抽取子任務(wù)效果有所提升,進(jìn)而改善了NL2SQL任務(wù)的整體準(zhǔn)確率,相較于對(duì)比模型有更好的SQL生成效果。

關(guān)鍵詞:多任務(wù)學(xué)習(xí); 自然語(yǔ)言轉(zhuǎn)SQL; 自然語(yǔ)言處理; 表字段

中圖分類(lèi)號(hào):TP391 文獻(xiàn)標(biāo)志碼:A

文章編號(hào):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ù)增長(zhǎng),使得數(shù)據(jù)分析和挖掘在各領(lǐng)域變得日益重要。例如,金融、醫(yī)療、零售和能源等行業(yè)均依賴(lài)于高效的數(shù)據(jù)查詢(xún)來(lái)進(jìn)行關(guān)鍵決策。但傳統(tǒng)的數(shù)據(jù)查詢(xún)方式主要依賴(lài)于結(jié)構(gòu)化查詢(xún)語(yǔ)言,給非技術(shù)背景的用戶(hù)帶來(lái)了較大的學(xué)習(xí)成本。為了縮短技術(shù)與非技術(shù)用戶(hù)之間的差距,自然語(yǔ)言轉(zhuǎn)SQL(NL2SQL)技術(shù)應(yīng)運(yùn)而生,不僅可以提高查詢(xún)的效率,還能促進(jìn)跨學(xué)科和跨行業(yè)的合作。

盡管NL2SQL技術(shù)在最近幾年取得了許多進(jìn)步[1~3],但在實(shí)際應(yīng)用中仍面臨諸多挑戰(zhàn),如跨領(lǐng)域知識(shí)的獲取、自然語(yǔ)言的模糊語(yǔ)義解析,以及處理復(fù)雜嵌套查詢(xún)等。針對(duì)這些難點(diǎn),一些基于深度學(xué)習(xí)的端到端方法被廣泛應(yīng)用,例如序列到序列模型(Seq2seq)[4]和樹(shù)狀網(wǎng)絡(luò)模型[5]等。這些方法可以直接學(xué)習(xí)輸入查詢(xún)與輸出SQL之間的對(duì)應(yīng)關(guān)系,取得了不錯(cuò)的效果。

當(dāng)前,研究人員正在探尋更加高效和準(zhǔn)確的NL2SQL方法。比如借助基于BERT[6]的預(yù)訓(xùn)練模型,通過(guò)遷移學(xué)習(xí)等方法使得模型進(jìn)一步提高其泛化能力[7]。由于這些技術(shù)的出現(xiàn),未來(lái)的NL2SQL系統(tǒng)可能不僅能夠解決復(fù)雜的查詢(xún)問(wèn)題,還能在數(shù)據(jù)安全等方面提供更強(qiáng)大的支持,這將進(jìn)一步推動(dòng)其在商業(yè)和科研領(lǐng)域的廣泛應(yīng)用。

1 相關(guān)工作

NL2SQL目前作為自然語(yǔ)言處理的焦點(diǎn)子領(lǐng)域,其目的是將輸入的查詢(xún)問(wèn)題轉(zhuǎn)換為數(shù)據(jù)庫(kù)可以解析和執(zhí)行的SQL語(yǔ)句。這個(gè)轉(zhuǎn)換過(guò)程對(duì)于確保高效的數(shù)據(jù)庫(kù)交互尤為關(guān)鍵,NL2SQL示例如圖1所示。

在該領(lǐng)域的早期研究中,主流方法主要采用流水線(xiàn)策略。Yih等人[8]提出了一種基于流水線(xiàn)的語(yǔ)義解析方法,將自然語(yǔ)言問(wèn)題轉(zhuǎn)換為與知識(shí)庫(kù)中的實(shí)體和關(guān)系相對(duì)應(yīng)的查詢(xún)圖。這種策略在一定程度上簡(jiǎn)化了問(wèn)題,但是模塊之間的依賴(lài)性可能導(dǎo)致錯(cuò)誤的連鎖反應(yīng)。使用端到端的神經(jīng)網(wǎng)絡(luò)模型可以捕捉語(yǔ)義解析任務(wù)的全局特征,以克服流水線(xiàn)方法的局限性[9]。端到端方法也面臨數(shù)據(jù)需求量大、解釋性差等問(wèn)題[10],結(jié)合兩種方法的優(yōu)點(diǎn)進(jìn)行模型設(shè)計(jì)仍然是NL2SQL研究的重要方向。

隨著深度學(xué)習(xí)在自然語(yǔ)言處理領(lǐng)域的廣泛應(yīng)用,NL2SQL技術(shù)取得了進(jìn)步。基于深度學(xué)習(xí)的NL2SQL模型能夠處理不同數(shù)據(jù)庫(kù)表格和復(fù)雜跨領(lǐng)域的自然語(yǔ)言查詢(xún)。比如利用預(yù)訓(xùn)練模型來(lái)幫助提高模型的泛化能力和準(zhǔn)確率[11]。Xu等人[12]提出的SQLNet是在WikiSQL數(shù)據(jù)集[13]上一個(gè)比較知名的基準(zhǔn)模型,是最早使用模板填充方法的模型。

為了解決數(shù)據(jù)表信息沒(méi)有被利用的問(wèn)題,Yu等人[14]提出了TypeSQL模型,利用數(shù)據(jù)庫(kù)中的類(lèi)型信息來(lái)更好地理解自然語(yǔ)言問(wèn)句中的實(shí)體和數(shù)字。Hwang等人[15]使用SQLova模型借助預(yù)訓(xùn)練模型,提高了序列生成的效果。同樣地,He等人[16]提出的X-SQL模型也使用了預(yù)訓(xùn)練模型,不同的是使用了MT-DNN(multi-task deep neural networks)[17]模型代替BERT,并利用上下文進(jìn)行增強(qiáng)結(jié)構(gòu)化表示。Lyu等人[18]提出的HydraNet模型將NL2SQL問(wèn)題分解為列級(jí)別的排序和解碼,然后用簡(jiǎn)單的規(guī)則將列級(jí)別的輸出組合成一個(gè) SQL 查詢(xún)。

多任務(wù)學(xué)習(xí)可以共享參數(shù)和表示,讓模型學(xué)習(xí)到更豐富和更通用的語(yǔ)言知識(shí)。McCann等人[19]使用了一種多任務(wù)問(wèn)答網(wǎng)絡(luò)結(jié)構(gòu),通過(guò)使用多種注意力機(jī)制來(lái)共同學(xué)習(xí)多任務(wù)表示。本文在多任務(wù)學(xué)習(xí)的基礎(chǔ)上,通過(guò)在BERT模型的輸入序列中融合表字段,提出FC-SQL方法,使得模型能更好地理解數(shù)據(jù)庫(kù)結(jié)構(gòu)信息,并利用表字段來(lái)提高子任務(wù)的預(yù)測(cè)效果。

2 研究方法

2.1 模板定義

目前針對(duì)單表場(chǎng)景下的NL2SQL任務(wù),模板填充是較為常用的方法[12,15,16]。在單表查詢(xún)場(chǎng)景中,基于模板填充的方法能夠較好地完成自然語(yǔ)言到SQL的轉(zhuǎn)換。這種方法依賴(lài)預(yù)定義的查詢(xún)模板及其對(duì)應(yīng)的填充規(guī)則,將SQL生成任務(wù)分解為多個(gè)子任務(wù),每個(gè)子任務(wù)對(duì)應(yīng)模板中的一個(gè)槽位進(jìn)行填充。相比其他方法,基于模板的方法可以明確查詢(xún)語(yǔ)義結(jié)構(gòu),且無(wú)須考慮多表場(chǎng)景下的內(nèi)連接、外連接等操作,有利于利用預(yù)訓(xùn)練語(yǔ)言模型更好地完成信息提取。因此考慮到基于模板填充方法在單表場(chǎng)景下的優(yōu)勢(shì),本文也采用這種方法來(lái)研究單表場(chǎng)景的NL2SQL任務(wù)。

首先需要設(shè)計(jì)一個(gè)查詢(xún)模板以捕捉自然語(yǔ)言查詢(xún)中的關(guān)鍵信息。在模板設(shè)計(jì)時(shí),應(yīng)平衡查詢(xún)語(yǔ)法的靈活性與數(shù)據(jù)庫(kù)結(jié)構(gòu)的復(fù)雜性,使模板系統(tǒng)能夠覆蓋不同類(lèi)型的查詢(xún)需求。設(shè)計(jì)的模板應(yīng)包含多個(gè)槽位,對(duì)應(yīng)SQL查詢(xún)語(yǔ)句的組成元素,如表名、字段、操作符等。模板形式可以表示為

SELECT [列1,列2,…] FROM [表名] WHERE [條件1,條件2,…]

方括號(hào)中的內(nèi)容為槽位,用于填充實(shí)際值。與具體數(shù)據(jù)庫(kù)結(jié)構(gòu)信息相結(jié)合,模板需要預(yù)定義各種字段和操作符的候選值,具體的定義方式如圖2所示。$AGG代表聚合函數(shù),取值為{“”,“AVG”,“MAX”,“MIN”,“COUNT”,“SUM”},空字段表示該選擇列無(wú)聚合操作;$COL代表被選擇的列和條件中被選擇的列;$OP代表?xiàng)l件運(yùn)算符,在數(shù)據(jù)集中給出的取值為{“>”,“<”,“=”,“!=”},本文中進(jìn)行實(shí)驗(yàn)評(píng)估時(shí),將精確匹配“=”換為“l(fā)ike”模糊匹配,$VALUE代表?xiàng)l件值任務(wù);$CONN代表?xiàng)l件連接符,取值為{“”,“and”,“or”},空字段表示無(wú)條件連接符。

2.2 編碼層

使用BERT預(yù)訓(xùn)練模型來(lái)學(xué)習(xí)多任務(wù)表示,將自然語(yǔ)言查詢(xún)和數(shù)據(jù)庫(kù)字段進(jìn)行合并表征,目的是將問(wèn)題和數(shù)據(jù)庫(kù)信息轉(zhuǎn)換為上下文相關(guān)的向量表示,以便后續(xù)的SQL生成層進(jìn)行語(yǔ)義解析。本文采用了Chinese-BERT-WWM模型,該模型在大規(guī)模的無(wú)標(biāo)注文本上進(jìn)行了預(yù)訓(xùn)練,可以學(xué)習(xí)雙向語(yǔ)義表示,并捕捉單詞和句子在不同上下文中的語(yǔ)義信息。

2.2.1 融合表字段的輸入序列

為適配BERT模型,對(duì)問(wèn)題和數(shù)據(jù)表字段進(jìn)行了預(yù)處理,構(gòu)造模型的輸入序列。首先使用WordPiece分詞器對(duì)查詢(xún)語(yǔ)句進(jìn)行分詞,WordPiece通過(guò)在詞表中選擇最大化語(yǔ)言模型似然概率的兩個(gè)子詞,從而生成新的子詞。

假設(shè)由n個(gè)子詞組成的句子T=(t1,t2,…,tn),ti表示第i個(gè)詞,那么句子T的語(yǔ)言模型似然值可以表示為所有子詞概率的乘積:

log P(T)=∑ni=1log P(ti)(1)

假設(shè)將相鄰的子詞a和b合并為新的子詞c,然后合并前后句子的似然值變化為

log P(tc)-(log P(ta)+log P(tb))(2)

似然值的變化相當(dāng)于兩個(gè)子詞之間的互信息。WordPiece每次選擇互信息值最大的兩個(gè)相鄰子詞進(jìn)行合并,優(yōu)先合并在語(yǔ)料中常見(jiàn)的相鄰子詞對(duì)。合并兩個(gè)子詞后,將它們替換為一個(gè)新的子詞,并更新詞匯表。這個(gè)過(guò)程迭代進(jìn)行,直到達(dá)到預(yù)定詞匯表大小。一旦詞匯表構(gòu)建完畢,WordPiece就可以用于將新的文本分成子詞序列。分詞完成后,將分詞后的問(wèn)句和字段按如下特定格式拼接成一個(gè)序列:

[CLS]問(wèn)題查詢(xún)[SEP]字段1 [SEP]字段2 [SEP]…

例如,對(duì)于查詢(xún)“北京的人口是多少?”和字段[“城市”,“人口”],經(jīng)過(guò)上述預(yù)處理后,得到的BERT模型輸入序列為

[CLS]北京 的 人口 是 多少 ? [SEP]城市[SEP]人口[SEP]

通過(guò)在輸入序列中加入數(shù)據(jù)表字段,BERT能夠在編碼過(guò)程中捕獲與數(shù)據(jù)庫(kù)結(jié)構(gòu)相關(guān)的重要信息。[CLS]和[SEP]等特殊符號(hào)用于表征句子邊界。預(yù)處理方式遵循BERT標(biāo)準(zhǔn)輸入形式,為模型提供了有效的輸入序列。

2.2.2 BERT編碼

將處理好的序列輸入到BERT模型中進(jìn)行編碼。在編碼過(guò)程中,BERT模型會(huì)為輸入序列中的每個(gè)詞(包括問(wèn)題和字段)生成一個(gè)固定長(zhǎng)度的向量表示。假設(shè)BERT模型的層數(shù)為L(zhǎng),那么對(duì)于輸入序列X=(x1,x2,…,xn),BERT模型的輸出是一個(gè)包含L層的列表,記作E(l)=(e(l)1,e(l)2,…,e(l)n)(l=1,2,…,L),其中e(l)i表示第l層的第i個(gè)編碼表示。選擇BERT輸出的最后一層,即E(L)=(e(L)1,e(L)2,…,e(L)n)作為最終的編碼結(jié)果,并獲得以下三個(gè)部分的表示(對(duì)應(yīng)圖5中BERT編碼輸出后的三個(gè)部分):

a)整體語(yǔ)義表示:使用e(L)1即[CLS]對(duì)應(yīng)的向量作為整個(gè)輸入序列的語(yǔ)義表示h[CLS]。

b)詞序列表示:在經(jīng)過(guò)BERT編碼后的輸出表示中得到詞序列表示hi,用來(lái)描述問(wèn)題中第i個(gè)token。

c)字段表示:本文首先將每個(gè)字段的詞向量通過(guò)一個(gè)全連接層得到新的表示,然后結(jié)合 [CLS] 標(biāo)記的向量計(jì)算注意力權(quán)重。對(duì)于第i列,其在輸入序列中對(duì)應(yīng)的詞為xi1,xi2,…,xik,這些詞在全連接層后的表示為coli1,coli2,…,colik,[CLS] 標(biāo)記在全連接層后的表示為clsi。使用colij和 clsi計(jì)算每個(gè)詞的注意力權(quán)重αij。

αij=exp(colijclsi)∑kj=1 exp(colijclsi)(3)

然后,第i列的表示通過(guò)加權(quán)求和得到。

Ci=∑kj=1 αijcolij(4)

最后,將Ci與[CLS]對(duì)應(yīng)的向量相加,得到最終的字段表示Ccol。

Ccol=h[CLS]+Ci(5)

2.3 多任務(wù)網(wǎng)絡(luò)構(gòu)建

本文將結(jié)合并聯(lián)和級(jí)聯(lián)來(lái)構(gòu)建多任務(wù)網(wǎng)絡(luò)。在并聯(lián)結(jié)構(gòu)中,多個(gè)任務(wù)共享相同的特征表示層并同時(shí)進(jìn)行預(yù)測(cè)輸出,這意味著不同任務(wù)可以共享網(wǎng)絡(luò)層的語(yǔ)義特征,如圖3所示。

圖3 多任務(wù)網(wǎng)絡(luò)中的并聯(lián)結(jié)構(gòu)

Fig.3 Parallel structure in a multi-task network

相比于并聯(lián)結(jié)構(gòu),級(jí)聯(lián)結(jié)構(gòu)中的各個(gè)任務(wù)則是按順序逐一進(jìn)行的,在這種結(jié)構(gòu)下,一個(gè)任務(wù)的輸出會(huì)直接成為下一個(gè)任務(wù)的輸入,如圖4所示。這種結(jié)構(gòu)適用于任務(wù)之間有明確的依賴(lài)關(guān)系,后面的任務(wù)可以充分利用前面的任務(wù)學(xué)習(xí)到的特征。

本文構(gòu)建的網(wǎng)絡(luò)模型結(jié)合兩種結(jié)構(gòu)分別預(yù)測(cè)不同的子任務(wù)。具體的SQL組成部分包括選擇列數(shù)、條件個(gè)數(shù)、條件連接符、條件值、聚合函數(shù)、條件運(yùn)算符、選擇列、條件列,如圖5所示,分別對(duì)應(yīng)圖中S-NUM、W-NUM、W-CONN、W-VAL、S-AGG、W-OP、S-COL和W-COL?!啊选北硎军c(diǎn)積運(yùn)算。從圖5中可以看出,S-NUM、W-NUM、W-CONN、W-VAL、S-COL和W-COL子任務(wù)采用并聯(lián)結(jié)構(gòu),因?yàn)檫@些子任務(wù)之間互不影響,共享多任務(wù)表示層以同時(shí)進(jìn)行預(yù)測(cè);而S-AGG和W-OP的預(yù)測(cè)則采用級(jí)聯(lián)結(jié)構(gòu),這兩個(gè)子任務(wù)的輸入利用之前預(yù)測(cè)出的S-COL和W-COL結(jié)果,而不是直接從共享表示層獲得,因?yàn)镾QL的選擇子句中只會(huì)對(duì)選擇列進(jìn)行聚合操作,條件子句中每個(gè)條件列都對(duì)應(yīng)著一個(gè)條件運(yùn)算。相比于直接從表示層獲得輸入,利用選擇列和條件列的結(jié)果分別預(yù)測(cè)聚合函數(shù)和條件運(yùn)算符,這種級(jí)聯(lián)結(jié)構(gòu)可以更好地利用不同子任務(wù)間的關(guān)系,從而生成更符合語(yǔ)義的SQL查詢(xún)語(yǔ)句。

其中,預(yù)測(cè)選擇列數(shù)和條件個(gè)數(shù)有助于模型更好地解析自然語(yǔ)言查詢(xún)的結(jié)構(gòu)。預(yù)測(cè)選擇列數(shù)可幫助更好地生成SQL查詢(xún)的SELECT部分,因?yàn)樽匀徽Z(yǔ)言查詢(xún)不會(huì)明確指出需要的選擇列數(shù)和條件列數(shù);預(yù)測(cè)條件個(gè)數(shù)則用于幫助更好地生成WHERE子句,這兩項(xiàng)預(yù)測(cè)可以增強(qiáng)模型對(duì)查詢(xún)結(jié)構(gòu)的理解。

2.4 子任務(wù)預(yù)測(cè)

將經(jīng)過(guò)BERT編碼后的輸出表示作為后續(xù)子任務(wù)預(yù)測(cè)的輸入序列。

1)選擇數(shù)目與條件數(shù)目 使用輸入序列第一個(gè)詞的嵌入h[CLS]來(lái)預(yù)測(cè),公式如下:

3)聚合函數(shù)和條件運(yùn)算符 根據(jù)預(yù)測(cè)出的選擇列與條件列,從字段嵌入Ccol中取出對(duì)應(yīng)的特定列Csel和Cw,分別表示預(yù)測(cè)出的選擇列與條件列,然后通過(guò)線(xiàn)性層將選擇列與條件列嵌入映射為聚合函數(shù)和條件運(yùn)算的概率分布,公式如下:

2.5 融入表字段的條件值抽取

在條件值預(yù)測(cè)部分,首先計(jì)算問(wèn)題和字段的向量相似度。相比歐氏距離等其他度量方式,內(nèi)積運(yùn)算簡(jiǎn)單高效,可實(shí)現(xiàn)大規(guī)模的相似度比較,同時(shí)在此任務(wù)中可以準(zhǔn)確評(píng)估問(wèn)題與字段向量在BERT編碼語(yǔ)義空間中的相似性。因此本文選擇內(nèi)積的方式,可以有效地評(píng)估問(wèn)題中的詞與字段在語(yǔ)義級(jí)別的匹配程度。公式如下:

Ssim=hiCTcol(13)

S=softmax(Ssim)(14)

其中:hi是問(wèn)題中第i個(gè)token;Ccol是字段表示;Ssim是計(jì)算出問(wèn)題中每個(gè)詞和字段之間的相似度。當(dāng)一個(gè)詞的嵌入與某一列的嵌入具有相同的向量方向時(shí),這兩者的語(yǔ)義相似度便被認(rèn)為較高。

為進(jìn)一步提煉這些相似度信息,進(jìn)行了歸一化處理,形成概率分布S,表示每個(gè)詞與各列的關(guān)聯(lián)概率。這一概率分布被視為權(quán)重,與值標(biāo)簽的概率進(jìn)行融合,產(chǎn)生每個(gè)詞作為值標(biāo)簽的加權(quán)概率。再將每個(gè)詞的嵌入經(jīng)過(guò)線(xiàn)性層轉(zhuǎn)換為值標(biāo)簽的預(yù)測(cè),公式如下:

是線(xiàn)性層的權(quán)重參數(shù);Sj表示的是第j個(gè)字段與問(wèn)題詞的相似度;Stags是問(wèn)題中第i個(gè)token被選為條件值的概率。計(jì)算值標(biāo)簽得分時(shí),會(huì)對(duì)每個(gè)詞與所有列(由j索引)的相似度取最大值??偟膩?lái)說(shuō),將經(jīng)過(guò)BERT編碼后的問(wèn)題和字段向量,通過(guò)內(nèi)積的方式計(jì)算問(wèn)題中每個(gè)詞與每個(gè)字段的相似度,計(jì)算每個(gè)詞作為條件值的概率,以此來(lái)完成詞與字段的匹配過(guò)程,篩選出候選條件值。

例如,對(duì)于問(wèn)題“2012年廈門(mén)住宅土地成交了多少宗?”,首先用BERT對(duì)整個(gè)問(wèn)題進(jìn)行編碼,得到問(wèn)題向量X。假設(shè)問(wèn)題中的詞“2012年”對(duì)應(yīng)的詞向量為X1,字段“年份”的詞向量為Y,經(jīng)過(guò)X與Y的內(nèi)積運(yùn)算后,可以發(fā)現(xiàn)X1與Y的相似度比其他詞向量與Y的相似度更高,這意味著“2012年”與“年份”字段在語(yǔ)義上最匹配,便可以將“2012年”作為條件值的候選值。

3 實(shí)驗(yàn)結(jié)果分析

本文使用的實(shí)驗(yàn)數(shù)據(jù)集是一個(gè)中文的文本到SQL的數(shù)據(jù)集TableQA[20],該數(shù)據(jù)集總共包含了約4萬(wàn)條文本到SQL的訓(xùn)練樣例和約4千條測(cè)試樣例,主要包含金融和通用領(lǐng)域的數(shù)據(jù)。在金融領(lǐng)域方面,數(shù)據(jù)集中的樣例包含股票、基金、銀行等金融領(lǐng)域數(shù)據(jù);通用領(lǐng)域數(shù)據(jù)集的文本查詢(xún)涉及到教育、醫(yī)療、房產(chǎn)等日常領(lǐng)域,具有一定的復(fù)雜性和多樣性。

3.1 整體準(zhǔn)確率對(duì)比

本文在驗(yàn)證集和測(cè)試集上使用了以下三個(gè)指標(biāo)來(lái)進(jìn)行評(píng)估:

a)邏輯形式準(zhǔn)確率(logic form accuracy,LX):生成的SQL語(yǔ)句與數(shù)據(jù)集標(biāo)簽完全一致的比例。

LX=完全預(yù)測(cè)正確的SQL數(shù)量SQL總數(shù)量(16)

b)執(zhí)行準(zhǔn)確率(execution accuracy,EX):生成的SQL語(yǔ)句在數(shù)據(jù)庫(kù)中執(zhí)行后得到正確結(jié)果的比例。

EX=執(zhí)行正確的SQL數(shù)量SQL總數(shù)量(17)

c)平均準(zhǔn)確率(mean accuracy,MX):取邏輯形式準(zhǔn)確率和執(zhí)行準(zhǔn)確率的平均值。

MX=LX+EX2(18)

本文對(duì)比的基線(xiàn)模型包括SQLNet[12]、TypeSQL[14]、SQL-ova[15]、X-SQL[16]、HydraNet[18],這些基線(xiàn)模型使用了不同的編碼器、注意力機(jī)制、預(yù)訓(xùn)練模型等技術(shù),以解決不同SQL生成場(chǎng)景下的難點(diǎn),例如單表查詢(xún)、多表查詢(xún)、復(fù)雜查詢(xún)等。

從表1中可以發(fā)現(xiàn),SQLNet和TypeSQL模型在TableQA數(shù)據(jù)集上的表現(xiàn)較其他模型較差。其中,SQLNet模型沒(méi)有利用數(shù)據(jù)表中的實(shí)際內(nèi)容,僅依賴(lài)于查詢(xún)語(yǔ)義;而TypeSQL模型僅使用了數(shù)據(jù)表字段的數(shù)據(jù)類(lèi)型信息,沒(méi)有利用字段名稱(chēng)等其他信息。相比之下,SQLova、X-SQL和HydraNet引入了BERT等預(yù)訓(xùn)練語(yǔ)言模型來(lái)理解查詢(xún)語(yǔ)句語(yǔ)義,總體效果較好,但并沒(méi)有充分利用數(shù)據(jù)表本身的字段信息,僅將表字段名稱(chēng)作為輸入序列的一部分。

本文構(gòu)建的模型在驗(yàn)證集上的邏輯形式準(zhǔn)確率(LX)達(dá)到88.62%,執(zhí)行準(zhǔn)確率(EX)達(dá)到91.76%。與表現(xiàn)最好的基線(xiàn)模型HydraNet相比,在驗(yàn)證集上的LX和EX指標(biāo)分別提高了5.97和3.12百分點(diǎn)。同時(shí)在測(cè)試集上,LX和EX分別達(dá)到88.23%和91.65%,相比HydraNet提升了5.72和3.02百分點(diǎn)。

3.2 改用模糊匹配執(zhí)行SQL語(yǔ)句

通過(guò)觀察數(shù)據(jù)集中的查詢(xún)語(yǔ)句和對(duì)應(yīng)的數(shù)據(jù)庫(kù)表格數(shù)據(jù),發(fā)現(xiàn)存在一些查詢(xún)語(yǔ)句中的實(shí)際條件值與數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù)以及標(biāo)簽不完全對(duì)應(yīng)的情況,如表2所示。例如,問(wèn)題“芒果的劇的總播放量達(dá)到了多少”中包含的條件值為“芒果”,而數(shù)據(jù)表中實(shí)際存儲(chǔ)的是“芒果TV”,在執(zhí)行SQL語(yǔ)句時(shí),使用精確匹配無(wú)法匹配到結(jié)果。因此本文將“=”精確匹配替換為了“l(fā)ike”模糊匹配,進(jìn)行文本匹配時(shí)可以匹配關(guān)鍵詞而不要求完全等價(jià)。那么查詢(xún)的條件語(yǔ)句部分由“where播放平臺(tái)=‘芒果’”改為“ where播放平臺(tái)like‘%芒果%’”,則可以匹配到“芒果TV”這條數(shù)據(jù)。實(shí)驗(yàn)結(jié)果如表3所示,驗(yàn)證集和測(cè)試集上的執(zhí)行準(zhǔn)確率(EX)分別提高了0.2和0.17百分點(diǎn),使用模糊匹配實(shí)現(xiàn)了更好的容錯(cuò)性。

3.3 子任務(wù)準(zhǔn)確率

為了進(jìn)一步分析本文模型各模塊的效果,測(cè)試了模型在各個(gè)子任務(wù)上的準(zhǔn)確率,具體結(jié)果如表4和圖6所示。從表4中可以看出,本模型在各個(gè)子任務(wù)上均取得了較高的準(zhǔn)確率,例如S-COL、W-COL和S-AGG等子任務(wù)的準(zhǔn)確率都達(dá)到95%以上,證明了模型可以有效地抽取自然語(yǔ)言查詢(xún)中的關(guān)鍵信息。并且可以注意到,S-NUM、W-NUM和W-CONN這三個(gè)子任務(wù)的準(zhǔn)確率相比于其他子任務(wù)偏高,都達(dá)到97%以上。這三個(gè)子任務(wù)均使用BERT輸入序列中第一個(gè)詞的嵌入h[CLS]來(lái)預(yù)測(cè),這也說(shuō)明經(jīng)過(guò)BERT編碼后的序列能很好地表示上下文語(yǔ)義信息。

從圖6中可以直觀看出,W-VAL較其他子任務(wù)準(zhǔn)確率偏低,主要是因?yàn)楸敬螌?shí)驗(yàn)數(shù)據(jù)集中存在部分問(wèn)題的條件值與標(biāo)簽值不一致的情況。例如,3.2節(jié)實(shí)驗(yàn)中的問(wèn)題舉例,此問(wèn)題對(duì)應(yīng)的標(biāo)簽值給出的仍是“芒果TV”,與數(shù)據(jù)表中存儲(chǔ)的數(shù)據(jù)相同。這會(huì)導(dǎo)致模型即使正確抽取出問(wèn)題中的條件值也會(huì)被認(rèn)為是錯(cuò)誤的,因?yàn)闊o(wú)法與條件值標(biāo)簽對(duì)應(yīng)。數(shù)據(jù)集中此類(lèi)情況的存在,是導(dǎo)致條件值抽取準(zhǔn)確率偏低的一個(gè)主要原因。

3.4 消融實(shí)驗(yàn)

為了驗(yàn)證引入問(wèn)題中詞與表字段相似度(以下簡(jiǎn)稱(chēng)sim)的有效性,本文進(jìn)行了消融實(shí)驗(yàn),“-sim”表示不計(jì)算詞與表字段相似度。結(jié)果如表5和表6所示。在不使用sim模塊的情況下,驗(yàn)證集上和測(cè)試集上的條件值準(zhǔn)確率分別下降了1.8和1.32百分點(diǎn);在驗(yàn)證集上的LX和EX分別下降了0.38和0.54百分點(diǎn),測(cè)試集上的LX和EX分別下降了0.75和0.61百分點(diǎn)。這說(shuō)明引入sim不僅提高了條件值(W-VAL)預(yù)測(cè)的準(zhǔn)確率,也提升了整體的準(zhǔn)確率。

4 結(jié)束語(yǔ)

在NL2SQL任務(wù)中,表字段信息對(duì)于生成準(zhǔn)確的SQL查詢(xún)有重要作用,現(xiàn)有的方法通常沒(méi)有充分利用表字段的信息。針對(duì)這個(gè)問(wèn)題,本文提出FC-SQL方法,主要包括兩個(gè)部分:編碼層和子任務(wù)預(yù)測(cè)層。在編碼層,使用BERT模型對(duì)自然語(yǔ)言查詢(xún)和數(shù)據(jù)庫(kù)表字段進(jìn)行合并編碼,得到上下文相關(guān)的多任務(wù)表示;在子任務(wù)預(yù)測(cè)層,采用多任務(wù)學(xué)習(xí)的方式,結(jié)合多任務(wù)網(wǎng)絡(luò)中的并聯(lián)和級(jí)聯(lián)結(jié)構(gòu)分別預(yù)測(cè)不同的子任務(wù)。在條件值抽取模塊,通過(guò)計(jì)算問(wèn)題中詞與表字段之間的相似度,增強(qiáng)了詞語(yǔ)和數(shù)據(jù)表字段之間的匹配能力。在TableQA數(shù)據(jù)集上進(jìn)行了實(shí)驗(yàn)評(píng)估,并與多種現(xiàn)有NL2SQL方法對(duì)比,結(jié)果表明本文模型有更好的表現(xiàn)。最后進(jìn)行消融實(shí)驗(yàn),驗(yàn)證了引入詞與列相似度的有效性。

本文方法也存在一些局限性和不足之處。相似度計(jì)算的方式比較單一,未來(lái)可考慮采用更多的計(jì)算方式(如注意力機(jī)制)來(lái)進(jìn)行對(duì)比分析;問(wèn)題理解過(guò)程中存在的一些如語(yǔ)義歧義、省略等現(xiàn)象也會(huì)對(duì)模型的理解能力產(chǎn)生影響,后續(xù)工作可以嘗試在數(shù)據(jù)預(yù)處理階段改善這些問(wèn)題。

參考文獻(xiàn):

[1]趙志超, 游進(jìn)國(guó), 何培蕾, 等. 數(shù)據(jù)庫(kù)中文查詢(xún)對(duì)偶學(xué)習(xí)式生成SQL語(yǔ)句研究[J]. 中文信息學(xué)報(bào), 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]何佳壕, 劉喜平, 舒晴, 等. 帶復(fù)雜計(jì)算的金融領(lǐng)域自然語(yǔ)言查詢(xún)的SQL生成[J]. 浙江大學(xué)學(xué)報(bào):工學(xué)版, 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]曹金超, 黃滔, 陳剛, 等. 自然語(yǔ)言生成多表SQL查詢(xún)語(yǔ)句技術(shù)研究[J]. 計(jì)算機(jī)科學(xué)與探索, 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]趙猛, 陳珂, 壽黎但, 等. 基于樹(shù)狀模型的復(fù)雜自然語(yǔ)言查詢(xún)轉(zhuǎn) SQL 技術(shù)研究[J]. 軟件學(xué)報(bào), 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 基金項(xiàng)目:國(guó)家自然科學(xué)基金資助項(xiàng)目(62001282)

作者簡(jiǎn)介:劉洋(1999—),男,河南信陽(yáng)人,碩士研究生,主要研究方向?yàn)樽匀徽Z(yǔ)言處理;廖薇(1982—),女(通信作者),江西贛州人,副教授,碩導(dǎo),博士,主要研究方向?yàn)樯镝t(yī)療與自然語(yǔ)言處理(liaowei54@126.com);徐震(1984—),男,山東聊城人,副教授,碩導(dǎo),博士,主要研究方向?yàn)閿?shù)據(jù)驅(qū)動(dòng)的機(jī)器學(xué)習(xí).

墨脱县| 辽源市| 象州县| 攀枝花市| 嘉峪关市| 马关县| 东丰县| 玛纳斯县| 通海县| 太和县| 白银市| 焦作市| 巴楚县| 涞源县| 民权县| 波密县| 穆棱市| 嘉善县| 松溪县| 安丘市| 兴业县| 江门市| 巨野县| 嘉鱼县| 菏泽市| 巢湖市| 迁西县| 防城港市| 峡江县| 吉木乃县| 清丰县| 博客| 嘉祥县| 香港| 远安县| 虎林市| 仁寿县| 两当县| 娱乐| 长春市| 桐城市|