李青,鐘將,李立力,李琪
(1.重慶大學(xué)計(jì)算機(jī)學(xué)院,重慶 400044;2.重慶大學(xué)土木工程學(xué)院,重慶 400044;3.紹興文理學(xué)院計(jì)算機(jī)科學(xué)與工程系,浙江 紹興 312000)
隨著現(xiàn)代知識(shí)服務(wù)業(yè)的發(fā)展,海量跨領(lǐng)域知識(shí)信息封裝存儲(chǔ)于關(guān)系數(shù)據(jù)庫(kù)中,面向內(nèi)容資源的知識(shí)信息存在嚴(yán)重過(guò)載現(xiàn)象。如何創(chuàng)新現(xiàn)代服務(wù)科學(xué),攻克關(guān)鍵核心技術(shù),重塑現(xiàn)代知識(shí)服務(wù)業(yè)技術(shù)體系和價(jià)值鏈,提高內(nèi)容資源在現(xiàn)代知識(shí)服務(wù)業(yè)增加值中的貢獻(xiàn)度,創(chuàng)新發(fā)展現(xiàn)代知識(shí)服務(wù)新生態(tài)已成為研究熱點(diǎn)與難點(diǎn)。針對(duì)內(nèi)容資源的智能化、知識(shí)化、精細(xì)化和重組化的碎片性管理需求,建立新技術(shù)范式下的復(fù)雜語(yǔ)義分析方法成為重要的研究目標(biāo)。
復(fù)雜語(yǔ)義分析的任務(wù)是將人類自然語(yǔ)言轉(zhuǎn)換為對(duì)應(yīng)的結(jié)構(gòu)化查詢語(yǔ)言(SQL,structured query language),即Text-to-SQL。如何高效地表達(dá)隱層知識(shí)、技術(shù)、經(jīng)驗(yàn)與信息,則是復(fù)雜語(yǔ)義分析領(lǐng)域的研究熱點(diǎn)與難點(diǎn)。同時(shí),復(fù)雜語(yǔ)義分析是自然語(yǔ)言處理中重要的子任務(wù)之一,可為智能問(wèn)答[1-3]、機(jī)器翻譯[4]和復(fù)雜事件處理[5-6]等重要應(yīng)用提供理論基礎(chǔ)。因此,本文重點(diǎn)關(guān)注如何將自然語(yǔ)言映射到結(jié)構(gòu)化查詢語(yǔ)言SQL語(yǔ)句。
一直以來(lái),復(fù)雜語(yǔ)義分析模型因缺乏高標(biāo)準(zhǔn)的標(biāo)注數(shù)據(jù)集而難以訓(xùn)練發(fā)展。2018年,來(lái)自耶魯大學(xué)的Yu等[7]成功構(gòu)造了第一個(gè)具有復(fù)雜跨領(lǐng)域文本到SQL的標(biāo)記數(shù)據(jù)集——Spider。2019年,Yu等[8]創(chuàng)新性地構(gòu)造具有連貫查詢的另一大型復(fù)雜跨領(lǐng)域文本到SQL的標(biāo)記數(shù)據(jù)集——SParC。Spider數(shù)據(jù)集中語(yǔ)義解析任務(wù)的示例如圖1所示。在此之前,幾乎所有傳統(tǒng)數(shù)據(jù)集(WikiSQL[9]、ATIS[10-11]、GeoQuery[12])都僅關(guān)注簡(jiǎn)單的SQL查詢,進(jìn)而導(dǎo)致訓(xùn)練模型僅滿足匹配語(yǔ)義解析結(jié)果的需求,無(wú)法真正理解自然語(yǔ)言的含義[12]。
鑒于以上分析,本文提出自然語(yǔ)言查詢的形式化語(yǔ)義表示模型——PT-Sem2SQL(pretraining semantic parsing to SQL)。為證明在面向真實(shí)內(nèi)容資源中模型是有效的,采用Spider數(shù)據(jù)集和SParC數(shù)據(jù)集進(jìn)行測(cè)試。本文模型構(gòu)建思路是在以BERT[13]為主干的MT-DNN[14-15]預(yù)訓(xùn)練技術(shù)基礎(chǔ)上,結(jié)合KL(Kullback-Leibler)差異技術(shù)[16]設(shè)計(jì)預(yù)訓(xùn)練模塊。同時(shí),為了捕獲順序信息滿足復(fù)雜的SQL查詢,提出帶有多個(gè)子句和附加句內(nèi)上下文信息的增強(qiáng)模塊。最后,采用自修正學(xué)習(xí)優(yōu)化的思想生成優(yōu)化模型的執(zhí)行過(guò)程,解決解碼過(guò)程中的錯(cuò)誤輸出。
綜上所述,本文的主要貢獻(xiàn)如下。
首先,本文設(shè)計(jì)結(jié)合KL差異技術(shù)增加[Zero]列的MT-DNN預(yù)訓(xùn)練模塊,構(gòu)建結(jié)合多任務(wù)學(xué)習(xí)與標(biāo)記數(shù)據(jù)的PT-Sem2SQL模型。這部分模塊的建立可有效解決文本到SQL任務(wù)的零列[WHERE]子句的預(yù)測(cè)挑戰(zhàn),滿足復(fù)雜跨領(lǐng)域文本到SQL的數(shù)據(jù)集查詢?nèi)蝿?wù)要求。
其次,本文提出增加額外的增強(qiáng)模塊來(lái)捕獲句內(nèi)上下文語(yǔ)義信息。通過(guò)增強(qiáng)模塊,子任務(wù)可采用細(xì)粒度語(yǔ)義分析方式進(jìn)行刻畫(huà),同時(shí)底層子任務(wù)的構(gòu)建可為上層任務(wù)表示提供基礎(chǔ)。通過(guò)實(shí)驗(yàn)驗(yàn)證,句內(nèi)上下文語(yǔ)義信息對(duì)于結(jié)構(gòu)化數(shù)據(jù)的語(yǔ)言任務(wù)同樣起到至關(guān)重要的作用。
圖1 Spider數(shù)據(jù)集中語(yǔ)義解析任務(wù)的示例
最后,針對(duì)解碼過(guò)程中的錯(cuò)誤輸出問(wèn)題,PT-Sem2SQL模型構(gòu)建自修正方法優(yōu)化生成模型的執(zhí)行過(guò)程。將通過(guò)模型產(chǎn)生偽Text-to-SQL查詢與真實(shí)的Text-to-SQL查詢視為一對(duì)修正任務(wù),采用自修正的思想優(yōu)化真?zhèn)螖?shù)據(jù)間差距,進(jìn)而達(dá)到自修正優(yōu)化的目的。
針對(duì)Text-to-SQL語(yǔ)義解析問(wèn)題的研究已經(jīng)持續(xù)幾十年。同時(shí),相關(guān)領(lǐng)域?qū)<乙呀?jīng)提出各種對(duì)應(yīng)的語(yǔ)義解析器模型[17-22]。
早期研究重點(diǎn)是將Text-to-SQL任務(wù)映射為序列生成的建模問(wèn)題,主要構(gòu)建具有自注意機(jī)制的神經(jīng)網(wǎng)絡(luò)序列到序列模型[23-24]。雖然此類方法僅取得初步效果,但無(wú)法確保生成語(yǔ)法的有效輸出。其中,以TypeSQL為代表,它是2018年由Yu等[25]提出的依存語(yǔ)法分析模型,可以滿足基礎(chǔ)查詢語(yǔ)言需求獨(dú)立生成目標(biāo)SQL查詢的SELECT和WHERE子句。同年,Dong等[26]提出Coarse2Fine模型,通過(guò)優(yōu)先輸出一組草圖,采用插槽填充的方法優(yōu)化子句解碼的結(jié)果。另一種Pointer-SQL模型則展現(xiàn)出新思路,提出sequence-to-action的方法,該方法使用基于注意機(jī)制的復(fù)制方法和基于值構(gòu)造丟失函數(shù)的方法[27]。通過(guò)構(gòu)造具有注釋功能的seq2seq模型,試圖確保模型在解碼過(guò)程中各個(gè)階段語(yǔ)法的正確性。
盡管上述以自然語(yǔ)言為基礎(chǔ)的語(yǔ)義解析器模型成功地解決了簡(jiǎn)單語(yǔ)義到形式化SQL查詢語(yǔ)句的問(wèn)題,但因簡(jiǎn)單語(yǔ)義的單一性缺陷問(wèn)題導(dǎo)致難以擴(kuò)展,無(wú)法生成復(fù)雜的SQL查詢語(yǔ)句。同時(shí),此類僅在傳統(tǒng)的WikiSQL數(shù)據(jù)集[9]上訓(xùn)練的模型難以捕獲各種自然語(yǔ)言變體。2018年,耶魯大學(xué)的Yu等成功開(kāi)發(fā)Spider數(shù)據(jù)集[7],囊括困難層面的SQL查詢(同時(shí)包含2個(gè)以上的[SELECT]、[WHERE]和[GROUP BY]子句)。2019年,Yu等為彌補(bǔ)Spider數(shù)據(jù)集中未關(guān)注上下文語(yǔ)境信息的不足,進(jìn)一步地開(kāi)發(fā)出大型上下文相關(guān)跨領(lǐng)域SParC數(shù)據(jù)集。它包含138個(gè)領(lǐng)域、具有復(fù)雜上下文依存關(guān)系、囊括復(fù)雜語(yǔ)義多樣性的Text-to-SQL數(shù)據(jù)集。本文將Spider數(shù)據(jù)集與SParC數(shù)據(jù)集進(jìn)行對(duì)比,如表1所示。
由此可見(jiàn),解決復(fù)雜跨領(lǐng)域的數(shù)據(jù)集上Text-to-SQL語(yǔ)義解析問(wèn)題,需要模型訓(xùn)練生成復(fù)雜的文本到SQL查詢。同時(shí),此類任務(wù)也更類似于自然場(chǎng)景下的查詢。2019年提出的預(yù)處理技術(shù),極大地增強(qiáng)了以詞表示為主的外部語(yǔ)料庫(kù)(如Glove模型[28])。受到此類預(yù)處理技術(shù)的發(fā)展啟發(fā),Hwang等[29]針對(duì)文本到SQL查詢建立新型預(yù)訓(xùn)練的BERT模型。此外,一些工作也同樣證明預(yù)訓(xùn)練外部語(yǔ)料庫(kù)的模型在文本到SQL任務(wù)中具有顯著改進(jìn)的價(jià)值[13-14,30]。最優(yōu)預(yù)訓(xùn)練技術(shù)MT-DNN[14]則更顯著地體現(xiàn)了這一優(yōu)勢(shì),成功用多任務(wù)學(xué)習(xí)將2類語(yǔ)料庫(kù)(標(biāo)注和未標(biāo)注的語(yǔ)料庫(kù))進(jìn)行深度融合。由此可知,未標(biāo)注語(yǔ)料庫(kù)的訓(xùn)練可有效增強(qiáng)模型的通用性。
本文將模型的總體結(jié)構(gòu)劃分為4個(gè)描述模塊深入解構(gòu)PT-Sem2SQL模型,即編碼模塊、增強(qiáng)模塊、輸出模塊和自修正模塊。PT-Sem2SQL模型的整體結(jié)構(gòu)與基礎(chǔ)模塊如圖2所示。
為了使PT-Sem2SQL模型更適合于復(fù)雜跨領(lǐng)域查詢?nèi)蝿?wù),模型重新設(shè)計(jì)MT-DNN預(yù)處理模塊,增加[Zero]和[CON-TI]增強(qiáng)句內(nèi)語(yǔ)義信息。編碼模塊主要為以下3個(gè)部分,如圖3所示。
1)句內(nèi)語(yǔ)義信息部分([CON-TI])
本文設(shè)計(jì)[CON-TI]來(lái)捕獲句內(nèi)上下文語(yǔ)義信息的位置。同時(shí),每個(gè)構(gòu)造的Token包括3個(gè)部分:Token embedding(ET)、Type embedding(EY)和Position embedding(EP)。
表1 Spider與SParC數(shù)據(jù)集對(duì)比
圖2 PT-Sem2SQL模型的整體結(jié)構(gòu)與基礎(chǔ)模塊
圖3 PT-Sem2SQL模型的編碼模塊
2)零列部分([Zero])
本文擴(kuò)展原有用于編碼自然語(yǔ)言查詢的預(yù)訓(xùn)練模型,添加表頭列表。同時(shí)采用[SEP]將查詢子句與表頭列表分離,在每個(gè)列表模式中增加[Zero]部分。同時(shí),本文也對(duì)KW-COL的交叉熵?fù)p失函數(shù)進(jìn)行優(yōu)化,重新定義KL值,使其KL值介于D(Q|PKW-COL)之中,即
3)MT-DNN初始化部分
將編碼器與MT-DNN預(yù)訓(xùn)練技術(shù)共同使用,使其編碼器具有多個(gè)自然語(yǔ)言查詢?nèi)蝿?wù)的功能。最終為模型對(duì)齊的有效查詢提供支持。
利用PT-Sem2SQL模型的編碼模塊輸出用于編碼的向量,即
其中,x[CON-TI]代表捕獲的句內(nèi)上下文語(yǔ)義信息;每個(gè)查詢句輸入為xq,1,…,xq,n(n是查詢字的數(shù)量);是第i列第j個(gè)Token的輸出;表示增強(qiáng)模塊的輸出。所有向量都屬于?d,d是MT-DNN編碼器的隱藏維度(在大型MT-DNN模型中d=1 024)。
由于在編碼模塊中各部分捕獲上下文影響力不夠強(qiáng),本文建立增強(qiáng)模塊以加強(qiáng)句內(nèi)的上下文影響。增強(qiáng)模塊使用x[CON-TI]來(lái)更新架構(gòu)內(nèi)各個(gè)部分,同時(shí)與輸出模塊不同模塊相互對(duì)齊連接。用softmax分類器將對(duì)齊模型分類,如式(2)所示。
其中,αij為匹配全局上下文的列的第j個(gè)標(biāo)記的輸出;。總結(jié)每列結(jié)果,采用式(3)計(jì)算增強(qiáng)模塊。
本文采用與式(2)和式(3)相類似的方式,統(tǒng)計(jì)增強(qiáng)模塊預(yù)測(cè)關(guān)鍵字?jǐn)?shù)。為了防止出現(xiàn)嵌套模塊,本文添加終端模塊的預(yù)測(cè),具體將在第3.4節(jié)中詳述。
本文引入Yu等[31]在Text-to-SQL任務(wù)的分解方式,將其分解為9個(gè)子模塊。各模塊都預(yù)測(cè)最終SQL查詢語(yǔ)句的一部分。但是,與Yu等所提SyntaxSQLNet模型不同的是,本文的PT-Sem2SQL模型定義編碼模塊和增強(qiáng)模塊,各個(gè)模塊的計(jì)算方式也相應(yīng)產(chǎn)生變化。同時(shí),也注意到使用一個(gè)堆棧來(lái)運(yùn)行本文的解碼過(guò)程,直到其置空。
1)$ IUEN子模塊
其關(guān)鍵字選自{INTERSECT,UNION,EXCEPT,NONE}中及概率計(jì)算式,為
2)$ KW子模塊
為結(jié)合復(fù)雜跨領(lǐng)域查詢的特性,PT-Sem2SQL模型需要先預(yù)測(cè)SQL查詢語(yǔ)句中的關(guān)鍵字?jǐn)?shù),并在3種可能的關(guān)鍵詞中進(jìn)行選擇{WHERE,GROUP BY,ORDER BY}。
3)$ OP子模塊
子模塊關(guān)鍵字選自{=,>,<,>=,<=,!=,LIKE,NOT IN,IN,BETWEEN}。$ OP子模塊同樣需要先預(yù)測(cè)關(guān)鍵字?jǐn)?shù),其概率計(jì)算式為
4)$ AGG子模塊
子模塊關(guān)鍵字選自{MAX,MIN,SUM,COUNT,AVG,NONE}。同樣,它取決于聚合器的數(shù)量,計(jì)算式為
5)$ COL子模塊
采用$ COL子模塊來(lái)預(yù)測(cè)表中各列,其概率計(jì)算式為
6)$ ROOT/TERMINAL子模塊
為了結(jié)合復(fù)雜跨領(lǐng)域查詢的特性,本文添加預(yù)測(cè)跨度以方便預(yù)測(cè)是否有新的子模塊。這種方法能有效預(yù)測(cè)跨度的開(kāi)始和結(jié)束位置。同時(shí),模型需要首先調(diào)用$ OP子模塊,然后確定它何時(shí)是$ ROOT子模塊。
7)$ AND/OR子模塊
子模塊關(guān)鍵字選自{AND,OR}中,其概率計(jì)算式為
8)$ DESC/ASC/LIMIT子模塊
同樣,模塊選自母模塊ORDER BY下的{DESC,ASC,DESC LIMIT,ASC LIMIT}中,概率計(jì)算式為
9)$ HAVING子模塊
模塊選自母模塊GROUP BY下的{HAVING},概率計(jì)算式為
將輸出模塊生成的SQL查詢語(yǔ)句反向生成偽查詢問(wèn)題(back-question),傳入自修正模塊。通過(guò)偽查詢與真實(shí)的查詢問(wèn)題(real-question)間進(jìn)行二元極大博弈,以達(dá)到模型自修正的目的。自修正模塊解析如圖4所示。
圖4 PT-Sem2SQL模型的自修正模塊
修正函數(shù)定義為
本文使用復(fù)雜跨領(lǐng)域的Spider數(shù)據(jù)集[7]進(jìn)行初步驗(yàn)證,包括11 840個(gè)查詢問(wèn)題,其中有6 445個(gè)獨(dú)特的復(fù)雜跨領(lǐng)域SQL查詢和206個(gè)具有多個(gè)表的數(shù)據(jù)庫(kù)。同時(shí),這也是一個(gè)具有復(fù)雜跨域SQL查詢的新型Text-to-SQL數(shù)據(jù)集。Spider數(shù)據(jù)集同時(shí)匯聚6個(gè)現(xiàn)有數(shù)據(jù)集中的數(shù)據(jù),分別為Restaurants[32-33]、GeoQuery[34]、Scholar[35]、Academic[36]、Yelp和IMDB[37]。本文將Spider數(shù)據(jù)集隨機(jī)劃分為3個(gè)部分進(jìn)行實(shí)驗(yàn),即訓(xùn)練集(8 659個(gè)查詢問(wèn)題)、驗(yàn)證集(1 034個(gè)查詢問(wèn)題)、測(cè)試集(2 147個(gè)查詢問(wèn)題)。為進(jìn)一步驗(yàn)證PT-Sem2SQL模型在上下文相關(guān)跨領(lǐng)域Text-to-SQL數(shù)據(jù)集中的效果,本文使用SParC數(shù)據(jù)集進(jìn)行更進(jìn)一步實(shí)驗(yàn)。在SParC數(shù)據(jù)集中同樣采用隨機(jī)劃分進(jìn)行實(shí)驗(yàn),即訓(xùn)練集(3 024個(gè)查詢問(wèn)題)、驗(yàn)證集(422個(gè)查詢問(wèn)題)、測(cè)試集(842個(gè)查詢問(wèn)題)。
本文的PT-Sem2SQL模型是在Python 3.6上采用PyTorch并在MT-DNN之上構(gòu)建實(shí)現(xiàn)的。具體來(lái)說(shuō),模型使用全局學(xué)習(xí)率為10–5的Adam優(yōu)化器,其中,β1=0.9或β1=0.999。同時(shí),根據(jù)2017年Smith等[38]提出的增加訓(xùn)練過(guò)程中的Batch Size,能夠在訓(xùn)練集和測(cè)試集上取得類似學(xué)習(xí)率衰減表現(xiàn)的思想,設(shè)置Batch Size大小為32。PT-Sem2SQL模型采用全鏈接層的注意力機(jī)制,Dropout參數(shù)選自{0.1,0.2,0.3,0.4,0.5,0.6},并通過(guò)參數(shù)調(diào)整性實(shí)驗(yàn)訓(xùn)練10輪,選擇在驗(yàn)證集上的最佳匹配模型將Dropout設(shè)置為0.2。
4.2.1 Spider準(zhǔn)確度測(cè)量
本文通過(guò)對(duì)比先前的模型來(lái)評(píng)估PT-Sem2SQL模型的執(zhí)行效果。表2為模型在驗(yàn)證集和測(cè)試集上文本到SQL查詢的準(zhǔn)確性。為了對(duì)比展現(xiàn)自修正模塊的影響程度,在表2中添加消融性實(shí)驗(yàn)結(jié)果展示行。
表2 Spider數(shù)據(jù)集中不同難度水平下各模型的準(zhǔn)確度測(cè)量
由表2實(shí)驗(yàn)結(jié)果可知,對(duì)比其他基線Text-to-SQL模型(包括最新的SQLove模型),在Spider數(shù)據(jù)集上本文模型都表現(xiàn)出較好的準(zhǔn)確性。同時(shí)在PT-Sem2SQL模型中,使用自修正技術(shù)導(dǎo)致執(zhí)行精度在測(cè)試集中從原先的36.8%提高到40.9%,在驗(yàn)證集從原先的33.7%提高到38.1%。由此可見(jiàn),采用自修正方法可以顯著改善效果。
4.2.2 各模塊準(zhǔn)確度測(cè)量
2018年,Yu等將SQL子句分解為5個(gè)部分(如“SELECT”“WHERE”“GROUP BY”“ORDER BY”和“KEYWORDS”)來(lái)計(jì)算組件匹配F1分?jǐn)?shù)[7]。本文模型也效仿該方式,檢查各個(gè)組件是否完全匹配,如表3所示。
從表3的結(jié)果可以看出,本文設(shè)計(jì)的PT-Sem2SQL模型是第一個(gè)在各個(gè)模塊都超過(guò)60%準(zhǔn)確度的模型。特別地,PT-Sem2SQL模型在最具挑戰(zhàn)性的[WHERE]子句上取得很好的準(zhǔn)確率。這主要?dú)w功于重新設(shè)計(jì)增加[Zero]和[CON-TI]的編碼模塊。該模塊在MT-DNN預(yù)處理的基礎(chǔ)上重新結(jié)合Kullback-Leibler差異技術(shù)定義KL值增加[Zero],再利用[CON-TI]部分增強(qiáng)句內(nèi)語(yǔ)義信息,為模型提供更多的示例,貼合滿足復(fù)雜跨領(lǐng)域數(shù)據(jù)的查詢需求。
同時(shí),本文認(rèn)真分析錯(cuò)誤檢索表中的錯(cuò)誤輸出問(wèn)題。關(guān)注到主要是因?yàn)樵谑褂媚0遄詣?dòng)生成查詢時(shí),概率性引入一些錯(cuò)誤。例如,問(wèn)題“What is the maximum percentage grown 2000—2008 in burundi?”與“year”有關(guān),錯(cuò)誤輸出SQL查詢包含不必要的“COUNT”。同時(shí),另外一個(gè)值得注意的錯(cuò)誤是因?yàn)槿藗冊(cè)O(shè)計(jì)的訓(xùn)練數(shù)據(jù)中沒(méi)有考慮自然語(yǔ)言的模糊性表達(dá)問(wèn)題。雖然針對(duì)Spider數(shù)據(jù)集此類問(wèn)題不是關(guān)鍵性問(wèn)題,但對(duì)于其他大多數(shù)任務(wù)卻是共性問(wèn)題。比如針對(duì)同樣的自然語(yǔ)言查詢,一些人傾向于使用自然語(yǔ)言“和”,而另外一些人傾向于使用自然語(yǔ)言“或”進(jìn)行表達(dá)。
4.2.3 各訓(xùn)練數(shù)據(jù)量準(zhǔn)確度測(cè)量
為觀測(cè)各模型在不同訓(xùn)練數(shù)據(jù)量下的表現(xiàn),本文選擇在{20%,40%,60%,80%,100%}訓(xùn)練集下刻畫(huà)準(zhǔn)確度趨勢(shì),如圖5所示。
圖5 各模型在不同訓(xùn)練數(shù)據(jù)量下的準(zhǔn)確度趨勢(shì)
實(shí)驗(yàn)結(jié)果表明,在不同訓(xùn)練數(shù)據(jù)量下,PT-Sem2SQL的性能都優(yōu)于其他6個(gè)基線模型。此外,隨著訓(xùn)練數(shù)據(jù)量的增加,PT-Sem2SQL可以實(shí)現(xiàn)的性能改進(jìn)尤為突出,準(zhǔn)確度測(cè)量高于其他模型。其主要原因是隨著訓(xùn)練數(shù)據(jù)資源的增加,PT-Sem2SQL可以更好地訓(xùn)練問(wèn)題分解器并進(jìn)行信息提取,進(jìn)而生成更準(zhǔn)確的查詢子模塊以及準(zhǔn)確填充提取的關(guān)鍵詞信息。這些有助于PT-Sem2SQL在Text-to-SQL語(yǔ)義解析過(guò)程中獲得更好的邏輯形式結(jié)果,提升模型準(zhǔn)確度。
表3 Spider測(cè)試集上各組件匹配的F1分?jǐn)?shù)
表4 SParC數(shù)據(jù)集中不同難度水平下各模型的準(zhǔn)確度測(cè)量
4.3.1 SParC準(zhǔn)確度測(cè)量
與Spider數(shù)據(jù)集類似,本文的模型準(zhǔn)確度測(cè)量重點(diǎn)對(duì)比2018—2019年Yu等所提出的基線SyntaxSQLNet[31]、CD-Seq2Seq[39]模型與2019年Hwang等所提出的基線SQLove模型[29]。Spider數(shù)據(jù)集上不同難度水平占比分別為:Easy(40%)、Medium(37%)、Hard(12%)、Extra Hard(11%)。對(duì)比實(shí)驗(yàn)結(jié)果如表4所示。
從表4的結(jié)果可以看出,PT-Sem2SQL的測(cè)試集準(zhǔn)確度性能首次達(dá)到26.6%。進(jìn)行自修正模塊消融實(shí)驗(yàn)后模型在驗(yàn)證集和測(cè)試集上的準(zhǔn)確性仍優(yōu)于其他基線模型,可以基本解決上下文相關(guān)Text-to-SQL任務(wù)。通過(guò)消融實(shí)驗(yàn)可以看出,自修正模塊對(duì)模型性能貢獻(xiàn)度較高,在測(cè)試集中執(zhí)行精度從原先的22.5%提高到26.6%,在驗(yàn)證集中執(zhí)行精度從原先的19.7%提高到24.1%。
4.3.2 問(wèn)題匹配度與上下文相關(guān)交互匹配度測(cè)量
2019年,Yu等將上下文感知模型的性能測(cè)試分解為2個(gè)部分(問(wèn)題匹配度測(cè)量和上下文相關(guān)交互匹配度測(cè)量),以此計(jì)算上下文相關(guān)跨領(lǐng)域Text-to-SQL的模型匹配度[8]。本文模型也效仿該方式,檢查模型是否完全匹配,具體如表5所示。
實(shí)驗(yàn)結(jié)果表明,PT-Sem2SQL模型性能優(yōu)于其他基線模型,問(wèn)題匹配度高達(dá)34.1%,而上下文相關(guān)交互匹配度達(dá)13.4%,相比最佳歷史基線CD-Seq2Seq模型提升5.9%。當(dāng)模型進(jìn)行消融實(shí)驗(yàn)后,問(wèn)題匹配度由34.1%降低到32.7%,上下文相關(guān)交互匹配度由13.4%降低到11.9%。主要是因?yàn)槟P驮谧孕拚K可以分析歷史問(wèn)題差異性,經(jīng)過(guò)修正模塊后可解析問(wèn)題間交互差異,有效擴(kuò)展上下文相關(guān)交互通路。同時(shí),通過(guò)表5可以看出,由于SParC數(shù)據(jù)集復(fù)雜度大幅增加,各模型匹配度表現(xiàn)欠佳,仍有很大的改進(jìn)空間。
表5 問(wèn)題匹配度與上下文相關(guān)交互匹配度測(cè)量
本文提出了PT-Sem2SQL模型,重新解構(gòu)復(fù)雜語(yǔ)義解析問(wèn)題,強(qiáng)化Text-to-SQL任務(wù)的上下文信息。同時(shí),本文基于最先進(jìn)的MT-DNN預(yù)訓(xùn)練技術(shù)重新設(shè)計(jì)模型的編碼模塊,成功解決在復(fù)雜語(yǔ)義Text-to-SQL任務(wù)數(shù)據(jù)集中的列預(yù)測(cè)問(wèn)題。針對(duì)解碼過(guò)程中的錯(cuò)誤輸出問(wèn)題,PT-Sem2SQL模型自修正模塊優(yōu)化模型。通過(guò)Spider和SParC數(shù)據(jù)集的不同模型對(duì)比實(shí)驗(yàn)結(jié)果表明,本文的模型展示優(yōu)于所有基線模型,表現(xiàn)出卓越性能。這些新的嘗試為復(fù)雜的跨域Text-to-SQL任務(wù)提供有效技術(shù)支持,也希望下一步引入知識(shí)圖譜表征方法,解決局部子句查詢出錯(cuò)的問(wèn)題。