999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于自裁剪異構圖的NL2SQL 模型

2022-09-15 06:59:00黃君揚王振宇梁家卿肖仰華
計算機工程 2022年9期
關鍵詞:數據庫模型

黃君揚,王振宇,梁家卿,肖仰華

(1.復旦大學 軟件學院,上海 200433;2.信息系統(tǒng)工程重點實驗室,南京 210007)

0 概述

隨著自然語言處理技術的發(fā)展,智能問答系統(tǒng)在無人駕駛、語音識別、人臉識別等領域[1-3]得到廣泛應用。智能問答系統(tǒng)通常以一問一答形式,精確定位用戶所需要的提問知識,通過與用戶進行交互,為用戶提供個性化的信息服務。近幾年,基于自然語言轉換為結構化查詢語言(Natural Language to Structured Query Language,NL2SQL)的問答系統(tǒng)成為了研究的熱點[4-5],相比基于檢索式、基于閱讀理解的其他問答系統(tǒng),NL2SQL 先生成結構化查詢語句(Structured Query Language,SQL),再提供答案的推理路徑,因此具有更好的可解釋性。NL2SQL 任務即將自然語言問句解析為結構化查詢語句,并用這條查詢語句得到問題的答案。例如,給定問題“請列出圖書俱樂部中1989 年之后至少有兩本書的圖書分類類別。”NL2SQL 需要將其解析成SQL 查詢語句“SELECT category FROM book_club WHERE year>1989 GROUPBY category HAVING count(*)>=2”。由于相同的問題在不同的數據庫模式上會有不同的SQL 查詢語句,因此設計一種能同時學習問句表示和數據庫模式表示的模型對于提高NL2SQL 模型的邏輯準確率和執(zhí)行準確率十分重要。

現有研究通過在注意力機制的基礎上構建一個異構圖[6]來聯合編碼數據庫模式和問句,隨后再使用SQL 語法指引的樹狀解碼器[7]來解析SQL 語句。這種方法將數據庫模式和問句視為一個異構圖,建立問句、列名和表名中字符之間的關系。隨后學習這些關系的嵌入作為模式信息,并將其編碼到模型中。然而,該方法根據整個數據庫模式構建一個異構圖,將導致兩個主要問題:其一,當數據庫模式較大時,異構圖太大,模型難以捕捉并學習到正確的特征;其二,該方法會忽略數據庫模式中的每一個元素的重要性。例如,當詢問一個人的身高時,實際上數據庫模式中人實體的所有屬性中只有身高是有用的,年齡、性別等屬性都是無用的,所以在構圖時,年齡與性別這兩個屬性不應該與身高有相同的權重。一般而言,模型需要根據問句判斷數據庫模式中所有元素的重要程度,而不是單純地將數據庫模式中所有的元素加入到異構圖中。

為了解決上述問題,本文提出基于自裁剪異構圖與相對位置注意力機制的NL2SQL 模型,簡稱為SPRELA。SPRELA 模型采用序列到序列的框架,主要包括異構圖構建、編碼器和解碼器三部分。異構圖構建模塊使用預先定義的專家知識構建一個初步的異構圖。SPRELA 編碼器裁剪異構圖的部分邊來剔除數據庫模式中不重要的元素,并使用相對位置注意力機制來聯合學習問句和數據庫模式的向量表示,其中相對位置就是異構圖中邊的特征,詞特征使用ELECTRA[8]預訓練語言模型進行初始化。SPRELA解碼器借助預先定義的SQL 語法規(guī)則,使用樹型解碼器分步解碼出樹狀結構的抽象語法樹,并通過槽填充將SQL 語句的信息補全。

1 相關工作

目前,NL2SQL 的相關工作可以根據模型中的模塊大致分為問句與數據庫模式聯合編碼、結構化查詢語言解碼和預訓練詞表征增強3 類。

針對問句與數據庫模式聯合編碼的問題,SQLNet[9]通過列名注意力機制來解決問題和數據庫模式的聯合編碼問題,然后在預定義的SQL 模板上使用指針網絡補全SQL信息。IRNet[10]引入中間表示層,以解決自然語言表達的意圖與SQL 中的實現細節(jié)不匹配的問題,首先將數據庫模式與問句建立鏈接,識別出問句中提到的表名、列名和值,隨后用神經網絡把問句按照數據庫模式分成不同的問句區(qū)間并使用BiLSTM 進行編碼。RAT-SQL[11]針對數據庫模式和問句通過構建一個異構圖建立數據庫模式與問句中詞之間的聯系,然后將異構圖中各個節(jié)點之間的邊進行向量化表示,最后使用相對位置自注意力機制將異構圖信息編碼到模型中。然而,上述方法都沒有考慮對數據庫模式信息進行過濾,無用的模式信息會放大模型編碼過程中的噪聲。

針對結構化查詢語言解碼問題,近期的工作通常使用樹形結構的解碼器來解碼SQL 語句,即在定義目標語言的基礎語法作為先驗知識后,生成一棵抽象語法樹來表示SQL 語言。樹形結構解碼策略的應用非常廣泛[12-13],特別是在解決數學問題和自然語言轉換為各類編程語言等任務中。RAT-SQL 使用LSTM 以深度優(yōu)先的遍歷順序生成SQL 的抽象語法樹,然后使用指針網絡填槽補全SQL 語法樹中缺失的表名和列名。SmBoP[14]使用自下而上的解碼策略,在第t個步驟構建高度小于等于t的top-K 子樹,由于每次解碼時每個子樹都是并行解碼的,因此該方法提高了解碼效率。

還有一些工作側重于為NL2SQL 任務提供預訓練詞增強表征。GraPPa[15]首先學習Spider 數據集中的語法和SQL 規(guī)則,然后利用這些規(guī)則在其他數據庫上生成與Spider 構建規(guī)則相似的高質量問句-SQL對,然后設定預訓練任務讓模型根據問句和數據庫模式直接生成SQL,以捕捉問句和數據庫模式之間的結構信息。GAP[16]通過3 個不同的預訓練任務提高詞表征:第1 個預訓練任務判斷數據庫表中的列是否出現在問句中;第2 個預訓練任務隨機把問句中的列名替換成該列單元格的值,模型需要恢復被替換的列名;第3 個預訓練任務需要模型根據問句與數據庫模式直接生成SQL 語句。然而上述方法使用的預訓練語料質量無法保證,且模型訓練需要大量算力支持。

2 問題定義與模型框架

2.1 問題定義

NL2SQL 任務的輸入是一句自然語言問句和數據庫模式,輸出是一個結構化查詢語句Z。

具體而言,模型需要根據給定的一個長度為|Q|個字符的問句Q=[q1,q2,…,q|Q|]和數據庫模式S=<T,C>生成結構化查詢語句Z。數據庫模式由表名T=[t1,t2,…,t|T|]和列名C={c1,c2,…,c|C|}組成,其中,表名有|T| 個,列名有|C| 個。每一個列名ci={ci,1,ci,2,…,ci,|ci|}由|ci|個字符組成,每一個表名ti={ti,1,ti,2,…,ti,|ti|}由|ti|個字符組成。生成的結構化查詢語句Z以抽象語法樹(Abstract Syntax Tree,AST)的形式來表示。

模式中的一些列被稱為主鍵,主鍵是一個數據庫表中的一行數據的唯一索引。還有一些列被稱為外鍵,用于索引不同表中的主鍵列。此外,表中每一列的單元值均由數字或文本組成。

2.2 模型框架

本文提出的SPRELA 模型采用序列到序列的框架,如圖1 所示,主要由3 個模塊組成:1)異構圖構建,使用專家知識,動態(tài)地將輸入的問句和數據庫模式構建為一個異構圖,更好地建立了問句與數據庫模式之間的聯系;2)編碼器,使用相對位置注意力機制,將問句、數據庫模式信息和異構圖聯合編碼為高維隱層向量表示;3)解碼器,使用樹型解碼器將高維隱層向量解碼成高質量、可執(zhí)行的SQL 語句。

3 模型設計

3.1 異構圖構建

本節(jié)介紹如何使用問句Q和數據庫模式S構建異構圖G=<V,E >。異構圖的節(jié)點集合由數據庫模式中的列名、表名和問句中的詞語組成,以字符的形式來標記,即V=C?T?Q。針對表示列名的節(jié)點,需要在標簽前加入額外特征來表示其類型是字符還是數字。加入問句中的詞語作為節(jié)點能將問句中的詞語與數據庫模式中的信息對齊,豐富了異構圖的信息表示能力,使異構圖有效地建立了問句與數據庫模式之間的聯系。異構圖的邊集E 是由專家根據數據庫模式來定義的,其中一部分是通過數據庫特有結構(例如外鍵、主鍵等關系)而得出,另一部分是通過對驗證集上錯誤的案例進行分析,并多次迭代歸納總結得出。專家定義的異構圖邊構建規(guī)則如表1 所示。

表1 專家定義的異構圖邊構建規(guī)則Table 1 Heterogeneous graph edge construction rules defined by experts

在表1 中,DISTANCE-D 代表Y 是X 中第D 個字符,SAME-TABLE代表X 和Y 屬于同一張表,FOREIGN-F 代表X 是Y的外鍵,FOREIGN-R 代表Y是X 的外鍵,PRIMARY-KEY-F 代表X 是Y 的外鍵,HAS-F 代 表X 是的一個列,PRIMARY-KEY-R 代表Y 是X 的主鍵,HAS-R代表Y是X的一個列,FOREIGN-TAB-F 代表X 在表Y 中存在外鍵,FOREIGN-TAB-R 代表Y在表X中存在外鍵,FOREIGN-TAB-B 代表X 和Y 中互相存 在外鍵,NOMATCH 代表X和Y中沒有重疊的字符,PARTIALMATCH代表X 是Y的子串,EXACT-MATCH 代表X和Y完全一致,HAS-VALUE 代表X 是Y 列中某個單元格的值。

3.2 編碼器

SPRELA 編碼器首先使用ELECTRA 預訓練語言模型作為骨干網絡獲取向量表示cinit、tinit和qinit,其中,cinit代表異構圖中列名的詞向量表示,tinit代表異構圖中表的詞向量表示,qinit代表問句的詞向量表示,然后將這3 個向量表示連接成一個向量X作為輸入。

通過該方式,數據庫模式中所有與問句相關的詞都被連接起來,形成了最終的向量表示。為了使模型能學習邊的特征,編碼器將異構圖構建模塊構建出的初步異構圖的每一個邊初始化為一個向量表示。然后編碼器使用相對位置編碼的自注意力[17]機制對輸入進行編碼,使得模型能聯合學習問題和知識庫模式之間的關系。與傳統(tǒng)方法不同的是,SPRELA 編碼器以異構圖的邊向量作為相對位置編碼,以此將異構圖的信息融入到SPRELA 中,如式(2)~式(7)所示:

其中:邊的種類一共有R種,第s條邊定義為E(s)?X×X(1 ≤s≤R),X代表節(jié)點數量;是邊的一個可學習的邊向量表示;是一個自裁剪變量,根據輸入的自然語言問句對異構圖中每個邊si進行二分類,來記錄這條邊是否需要保留,如果不需要保留則利用將該邊的向量表示置為一個全為0 組成的同維度向量。

本文構建了一個二分類模型來實現該自裁剪子模型。首先,模型利用多頭注意力機制,并使用自然語言問句的嵌入表示Xq為異構圖中每條邊si計算向量表示,如式(9)、式(10)所示:

然后,使用Biaffine[18]二分類器來判斷經過編碼的向量表示和邊的嵌入表示xsi是否有關聯,如式(11)、式(12)所示:

如果si出現在真實SQL 語句中,則邊的標簽為1。本文將該任務與語義解析任務以多任務訓練的方式進行聯合訓練,目標函數如式(13)所示:

3.3 解碼器

解碼器使用IRNet 模型中基于長短期記憶(Long Short-Term Memory,LSTM)網絡的樹型解碼器解碼SQL 語句。首先以深度優(yōu)先遍歷的順序將SQL 生成為一棵抽象語法樹。然后通過LSTM 網絡輸出一連串的動作(action),動作主要分為以下2 類:1)生成的節(jié)點為非葉子節(jié)點,則將該節(jié)點擴展為一條語法規(guī)則,稱為擴展規(guī)則(Extend Rule);2)生成的節(jié)點為葉子節(jié)點,從數據庫模式中選擇一個列名或表名,分別稱為列選擇(Select Column)或表選擇(Select Table)。

樹型解碼器中的LSTM 使用如式(14)所示的方式更新狀態(tài):

其中:mt是LSTM 的核(cell)狀態(tài);ht是LSTM 在t時刻的輸出;at-1是上一個動作的嵌入表示;pt是語法樹中當前節(jié)點的父節(jié)點;nft是當前節(jié)點類型的嵌入表示。

擴展規(guī)則的計算方式如式(15)所示:

其中:σ(·)是Softmax 函數;g(·)是多層 感知機層并以tanh 作為激活函數。

列選擇的計算方式如式(16)所示,表選擇的計算方式與列選擇類似。

4 實驗與結果分析

4.1 數據集與評測指標設置

使用Spider[19]數據集驗 證SPRELA 模型性能。Spider 是一個評估NL2SQL 系統(tǒng)的常見數據集,包含8 659 個訓練條目和1 034 個驗證條目,以及復雜的SQL 查詢和1 個冷啟動設置,其中測試集中的數據庫模式與訓練集和驗證集是不同的。使用兩個通用的指標評測SPRELA 模型在Spider 數據集上的效果,分別為:1)不含槽位值的邏輯準確率(EM);2)含槽位值的執(zhí)行準確率(EXEC)。EM 主要評測SQL語句的語法結構,測試腳本將每個SQL 分解成多個子句并進行集合匹配,而不是簡單地將預測出來的SQL 和標簽SQL 進行字符串比較。EXEC 主要評測執(zhí)行結果,測試腳本將直接執(zhí)行預測出來的SQL 和標簽SQL 進行比較判斷能否查詢到相同的結果。

4.2 參數設置

針對編碼器,設置相對位置注意力機制的多頭數 量H=8,其共包含24個自注意力層。Dropout[20]層損失的信息比例設置為0.2。針對解碼器,使用集束搜索策略并設置集束大小K=30,在預測時的解碼步驟最大值設置為T=9。ELECTRA 預訓練語言模型和SPRELA 解碼器的學習率分別設置為3e-6 和0.000 186。模型在RTX3090 顯卡上訓練了500 輪,批次大小設置為16,并采取梯度積累策略,其中梯度累積參數設置為4。

4.3 對比實驗分析

使 用RAT-SQL[11]、GAZP[21]、COMBINE[22]、BRIDGE[23]、RaSaP[24]、RATSQL+GAP+NatSQL[25]和PICARD[26]作為基線模型進行對比,其中RATSQL+GAP+NatSQL 和PICARD 模型的規(guī)模遠大于本文SPRELA 模型和其他基線模型。表2 給出了基線模型與SPRELA 模型在Spider 數據集上的實驗結果。由于RAT-SQL 模型不能生成可執(zhí)行的SQL 語句,因此執(zhí)行準確率使用N/A 表示。由表2 中實驗結果可以看出,SPRELA 模型在兩個評價指標上都超越了現有的相同參數量級別的模型,特別是在執(zhí)行準確率指標上超越了RaSaP模型1.1個百分點。RATSQL+GAP+NatSQL 模型的EXEC 指標效果要好于SPRELA 模型,原因是該模型集成了一個槽位預測模型,旨在提高槽位預測的準確率,而多個模型的集成也使該模型在EXEC 指標上表現優(yōu)秀。PICARD模型在EM 和EXEC 指標上的效果都比SPRELA 模型好,原因是該模型骨干網絡使用了T5-3B[27]預訓練語言模型,T5-3B 的參數量遠多于現有所有模型,所以其效果為目前最優(yōu)。但是模型集成(如RATSQL+GAP+NatSQL)和大規(guī)模模型(如PICARD)意味著需要更大的算力支持、更長的訓練時間,這些模型的效果理論上會更好,但是成本太高,由于實際工程應用場景對模型的并發(fā)量、成本控制都有所要求,因此無法支持超大規(guī)模的模型。

表2 NL2SQL 模型在Spider 數據集上的實驗結果Table 2 Experimental results of the NL2SQL models on the Spider dataset %

圖2 是SPRELA 模型與BRIDGE 模型的實驗結果的案例分析,可以看出BRIDGE 模型生成了錯誤的SQL,SPRELA 模型生成了正確的SQL。圖2 中的解釋是對BRIDGE 模型生成錯誤SQL 的原因分析,可見SPRELA 模型可以更好地將自然語言問句與數據庫模式對齊,也能更好地理解自然語言查詢中的語義信息。因此,SPRELA 模型不論是在生成SQL語句的結構上,還是槽位值的選擇上均具有更好的性能表現。

圖2 SPRELA 與BRIDGE 模型的實驗結果案例分析Fig.2 Case analysis of experimental results of SPRELA and BRIDGE models

為了更細致地分析模型在不同SQL 子句上的性能表現,本文使用精確率、召回率和F1 值3 個指標對模型子句性能做進一步實驗。實驗結果如表3 所示,可以看出SPRELA 模型在group 子句上的泛化能力與查詢性能仍有提升的空間,在select、order 和and/or 子句上具有較好的泛化能力,在where 子句上的查詢性能也仍有提升空間。

表3 SPRELA 模型子句性能Table 3 Clause performance of the SPRELA model %

4.4 消融實驗分析

為了分析不同模塊給SPRELA 模型帶來的效果增益,本節(jié)針對SPRELA 模型進行消融實驗來驗證異構圖構建模塊中的專家知識子模塊和編碼器模塊中的自裁剪子模塊對模型性能的影響。消融實驗結果如表4 所示。

表4 SPERLA 模型的消融實驗結果Table 4 Ablation experiment results of the SPRELA model %

從表4 中的實驗結果可以看出,完整的模型相比于不同的消融模型取得了最優(yōu)的效果。對比移除專家知識模塊前后,不論是EM 指標還是EXEC 指標都有所下降。在移除自裁剪模塊后,模型在兩個指標上效果同樣有所下降。當同時移除專家知識和自裁剪模塊后,模型效果則會進一步下降。為了解釋消融模型效果下降的原因,本文借助圖3 所示的案例進行分析,其中錯誤SQL 來自不包含專家知識與自裁剪模塊的消融模型,正確SQL 來自完整的SPRELA 模型。此外,圖3 中還列出了數據庫模式信息。

圖3 專家知識與自裁剪模塊的有效性分析結果Fig.3 Effectiveness analysis results of expert knowledge and self-pruning modules

由圖3 可以看出,錯誤SQL 未能識別出“amc hornet sportabout(sw)”是一個完整的槽位值的原因在于“sw”恰好是“model_list”表中“model”列的一個值而“amc hornet”恰好也是“car_names”表中“Make”列的一個值。因此,“amc hornet sportabout(sw)”就被拆分為“amc hornet”和“sw”兩個槽位值并匹配到其相應的列名。

在利用專家知識構建異構圖后,“amc hornet sportabout(sw)”和列名“Make”會與標記為EXACTMATCH 的邊連接,而“amc hornet”和列名“Make”會與標記為PARTIAL-MATCH 的邊連接。通過該方式構建的異構圖可使模型能建立問句與數據庫模式之間更細粒度的關系。

由于問句中的語義信息明顯是查詢裝備“amc hornet sportabout(sw)”套件轎車的加速度,與轎車的模組(Model)無關,因此自裁剪模塊會將與列名“Model”相關的邊裁去。通過該方式,模型能夠更好地剔除與問句無關的圖信息,保留相對有關的信息,減少了噪聲的引入。

在結合專家知識與自裁剪模塊后,由于異構圖的不同邊具有較強的特征信息,使得自裁剪模塊在該案例中還能學習到當存在標記為EXACT-MATCH的邊時優(yōu)先裁剪標記為PARTIAL-MATCH 的邊的行為。因此兩個模塊的組合可以進一步提升模型的效果,這也與消融實驗的結果一致。從上述實驗結果與案例分析證明了本文設計的專家知識與自裁剪機制對于模型性能提升的有效性。

5 結束語

本文提出一種基于自裁剪異構圖的自然語言轉換為結構化查詢語言模型SPRELA,采用ELECTRA預訓練模型獲取詞表征作為骨干網絡并利用專家知識構建異構圖,通過相對位置注意力機制聯合編碼問句與數據庫模式,使用樹狀解碼器解碼生成結構化查詢語句。在Spider 數據集上的實驗結果表明,相比于經典模型和同類模型,SPRELA 模型利用自裁剪機制裁剪異構圖中的部分邊,使得模型能夠剔除與問句相對無關的信息,保留相對有關的信息,達到更細粒度的數據過濾,減少異構圖中的無用信息,同時通過引入專家知識構建異構圖來建模結構化數據中的模式信息,能更好地輔助模型學習結構化查詢語言的相關特征。今后將嘗試尋找挖掘專家知識的自動化或半自動化方法,進一步提高SPRELA 模型在級聯查詢、嵌套子查詢等復雜SQL 解析任務下的執(zhí)行準確率。

猜你喜歡
數據庫模型
一半模型
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
3D打印中的模型分割與打包
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
FLUKA幾何模型到CAD幾何模型轉換方法初步研究
主站蜘蛛池模板: 国产三级国产精品国产普男人| 中国国产A一级毛片| 日韩高清一区 | 中文毛片无遮挡播放免费| 日韩无码视频专区| 在线一级毛片| 亚洲最大综合网| 东京热av无码电影一区二区| 真实国产乱子伦视频| 中文字幕在线观看日本| 国产黑丝一区| 视频二区欧美| 丁香婷婷激情网| 免费观看欧美性一级| 99国产在线视频| 色综合天天综合| 伊人色婷婷| 欧美色综合网站| 波多野结衣亚洲一区| 日韩在线视频网| 欧美一级夜夜爽www| 熟女日韩精品2区| 好久久免费视频高清| 亚洲成aⅴ人在线观看| 先锋资源久久| 波多野结衣一级毛片| 国产日韩AV高潮在线| 国产精品久久久久久搜索| 久久国产香蕉| 色婷婷在线播放| 免费国产不卡午夜福在线观看| 狠狠干综合| 国产成人1024精品下载| 试看120秒男女啪啪免费| 亚洲精品制服丝袜二区| 爆乳熟妇一区二区三区| 国产欧美专区在线观看| 天天综合天天综合| 亚洲无码不卡网| 国产成人一区| 亚洲综合日韩精品| 97超爽成人免费视频在线播放| 国产靠逼视频| 国产日韩欧美视频| 国产综合另类小说色区色噜噜 | 国产成人综合欧美精品久久| 国产福利免费观看| 亚洲国产欧美中日韩成人综合视频| 精品国产成人三级在线观看| 九九久久精品免费观看| 国产经典三级在线| 欧美专区在线观看| 亚洲午夜福利在线| 亚洲色图在线观看| 2019年国产精品自拍不卡| 伊人激情综合网| 亚洲国产精品美女| 中文字幕不卡免费高清视频| 无码电影在线观看| 久草网视频在线| 日韩a级毛片| 国产在线一二三区| 波多野吉衣一区二区三区av| 91美女视频在线| 夜夜操狠狠操| 少妇精品在线| 亚洲国产天堂久久综合| 欧美激情视频二区三区| aⅴ免费在线观看| 91色在线视频| 老色鬼欧美精品| 亚洲中文字幕在线一区播放| 成人福利在线观看| 亚洲日韩AV无码精品| 91精品小视频| 国产网站免费看| 亚洲成网站| 久久综合色视频| 精品免费在线视频| 欧美午夜视频在线| 成人免费午夜视频| 无码中文字幕乱码免费2|