• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于自然語(yǔ)言處理的SQL 語(yǔ)句生成研究

      2023-09-21 08:17:10張康林戴一成
      科學(xué)技術(shù)創(chuàng)新 2023年22期
      關(guān)鍵詞:語(yǔ)句模板數(shù)據(jù)庫(kù)

      張康林*,戴一成

      (公安部第三研究所,上海)

      引言

      在如今這樣一個(gè)數(shù)據(jù)驅(qū)動(dòng)的世界中,海量數(shù)據(jù)的存儲(chǔ)和使用對(duì)于各種組織和企業(yè)來(lái)說(shuō)至關(guān)重要,其中所涉及的關(guān)鍵技術(shù)是使用數(shù)據(jù)庫(kù)并結(jié)合對(duì)應(yīng)的結(jié)構(gòu)化查詢語(yǔ)言((structured query language,SQL)進(jìn)行有關(guān)數(shù)據(jù)的查詢,其作為與數(shù)據(jù)庫(kù)交互的標(biāo)準(zhǔn)語(yǔ)言,扮演著重要角色。然而,了解數(shù)據(jù)庫(kù)模式以及編寫SQL語(yǔ)句需要相應(yīng)的技術(shù)能力,對(duì)于非專業(yè)的數(shù)據(jù)庫(kù)用戶來(lái)說(shuō)具有一定的門檻。

      隨著自然語(yǔ)言處理(natural language processing,NLP)和人工智能技術(shù)的快速發(fā)展,尤其是2023 年開始語(yǔ)言大模型的廣泛使用,如何運(yùn)用自然語(yǔ)言訪問(wèn)對(duì)應(yīng)數(shù)據(jù)庫(kù),生成對(duì)應(yīng)的SQL 腳本并輸出相應(yīng)結(jié)果的需求日益迫切,該需求的目的是希望通過(guò)自然語(yǔ)言與數(shù)據(jù)庫(kù)進(jìn)行交互,以簡(jiǎn)化數(shù)據(jù)庫(kù)操作的過(guò)程,使更多的人能夠輕松地與數(shù)據(jù)庫(kù)進(jìn)行溝通和操作?;谧匀徽Z(yǔ)言處理的SQL 語(yǔ)句生成已成為一個(gè)重要的研究方向。

      目前,自然語(yǔ)言轉(zhuǎn)SQL 語(yǔ)句(Text-to-SQL)的國(guó)內(nèi)外相關(guān)研究已取得一定進(jìn)展。Giordani A 等人[1]基于規(guī)則和啟發(fā)式方法進(jìn)行SQL 語(yǔ)句的生成及查詢,然而,由于自然語(yǔ)言的復(fù)雜性和多義性,基于規(guī)則的方法往往無(wú)法覆蓋所有情況,并且需要大量的人工努力來(lái)創(chuàng)建和維護(hù)規(guī)則。Warren DHD 等人[2]基于模板的方法使用預(yù)定義的查詢模板,其中包含了常見的查詢結(jié)構(gòu)和語(yǔ)法,這些模板與自然語(yǔ)言查詢進(jìn)行匹配,并將查詢參數(shù)插入到模板中以生成SQL 語(yǔ)句,盡管基于模板的方法相對(duì)簡(jiǎn)單,但它們通常只適用于特定領(lǐng)域和查詢類型,并且對(duì)于復(fù)雜的查詢往往無(wú)法提供良好的支持。隨著后續(xù)機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的快速發(fā)展,基于機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的方法在自然語(yǔ)言轉(zhuǎn)SQL 方面取得了顯著進(jìn)展,這些方法使用大規(guī)模的自然語(yǔ)言和SQL 查詢數(shù)據(jù)進(jìn)行訓(xùn)練,并構(gòu)建模型來(lái)學(xué)習(xí)自然語(yǔ)言和SQL 之間的映射關(guān)系。

      其中,基于神經(jīng)網(wǎng)絡(luò)的模型如序列到序列(Seq2Seq)模型和注意力機(jī)制(Attention)模型被廣泛應(yīng)用于該領(lǐng)域[3-6],這些模型可以自動(dòng)從自然語(yǔ)言查詢生成對(duì)應(yīng)的SQL 語(yǔ)句,具有更好的泛化能力和適應(yīng)性。而當(dāng)預(yù)訓(xùn)練語(yǔ)言模型(如BERT、GPT 等)在自然語(yǔ)言處理任務(wù)中取得了顯著的突破后,研究者們開始探索如何將預(yù)訓(xùn)練語(yǔ)言模型應(yīng)用于自然語(yǔ)言轉(zhuǎn)SQL 任務(wù)中[7-8],通過(guò)微調(diào)預(yù)訓(xùn)練模型,并引入特定的SQL 解析器和生成器,在自然語(yǔ)言轉(zhuǎn)SQL 任務(wù)中取得了更好的性能。

      由于基于預(yù)訓(xùn)練模型實(shí)現(xiàn)SQL 語(yǔ)句生成的最新研究較少,且基于國(guó)產(chǎn)預(yù)訓(xùn)練模型完成SQL 語(yǔ)句生成的研究缺乏,所以本研究將使用ChatGLM-6B 國(guó)產(chǎn)預(yù)訓(xùn)練大模型學(xué)習(xí)自然語(yǔ)言和SQL 語(yǔ)句之間的映射關(guān)系,實(shí)現(xiàn)自然語(yǔ)言到SQL 的轉(zhuǎn)換。旨在減少普通用戶學(xué)習(xí)和使用SQL 的成本、提高數(shù)據(jù)庫(kù)操作的效率和準(zhǔn)確性、降低錯(cuò)誤的產(chǎn)生率、促進(jìn)數(shù)據(jù)庫(kù)的普及和應(yīng)用,進(jìn)一步推動(dòng)數(shù)據(jù)驅(qū)動(dòng)決策和應(yīng)用的發(fā)展。

      1 研究方法

      1.1 GLM 介紹

      隨著大模型被廣泛使用以及算力的不斷發(fā)展,國(guó)內(nèi)外開發(fā)出了一系列語(yǔ)言大模型,其中由清華大學(xué)提出的通用語(yǔ)言模型(General Language Model,GLM)[9]正在被國(guó)內(nèi)各個(gè)組織和企業(yè)廣泛使用。

      截至2023 年,預(yù)訓(xùn)練語(yǔ)言大模型主要分為三種:一是以GPT 大模型為代表的自回歸模型;二是以BERT 大模型為代表的自編碼模型;三是以T5 大模型為代表的編碼-解碼模型。三種類型的大模型在各自的領(lǐng)域上都能取得較好的效果,但上述三種預(yù)訓(xùn)練模型還無(wú)法在自然語(yǔ)言理解、條件文本生成以及非條件文本生成三個(gè)任務(wù)上都取得較好的表現(xiàn),而GLM 大模型實(shí)現(xiàn)了統(tǒng)一。

      GLM 預(yù)訓(xùn)練框架通過(guò)以下四點(diǎn)實(shí)現(xiàn)了巧妙融合:

      (1) 擁有自編碼思想,在輸入文本中,隨機(jī)刪除連續(xù)的tokens。

      (2) 擁有自回歸思想,順序重建連續(xù)tokens,在使用自回歸方式預(yù)測(cè)缺失tokens 時(shí),模型既可以訪問(wèn)corrupted 文本,又可以訪問(wèn)之前已經(jīng)被預(yù)測(cè)的spans。

      (3) span shuffling 結(jié)合了二維位置編碼技術(shù)。

      (4) 通過(guò)改變?nèi)笔pans 的數(shù)量和長(zhǎng)度,自回歸空格填充任務(wù)可以為條件生成以及無(wú)條件生成任務(wù)預(yù)訓(xùn)練語(yǔ)言模型。

      1.2 ChatGLM 介紹

      ChatGLM 是基于GLM 框架構(gòu)建的對(duì)話語(yǔ)言模型,開源,同時(shí)支持中英雙語(yǔ)。其中的ChatGLM-6B 具有62 億個(gè)參數(shù),使用了和ChatGPT 相似的技術(shù),針對(duì)中文問(wèn)答和對(duì)話進(jìn)行了優(yōu)化。經(jīng)過(guò)約1T 標(biāo)識(shí)符的中英雙語(yǔ)訓(xùn)練,輔以監(jiān)督微調(diào)、反饋?zhàn)灾?、人類反饋?qiáng)化學(xué)習(xí)等技術(shù)的加持,62 億參數(shù)的 ChatGLM-6B 在對(duì)話生成方面,已獲得相當(dāng)不錯(cuò)的效果。

      由于目前很多大模型需要強(qiáng)大的算力支持,但在計(jì)算資源只有單卡的環(huán)境下,ChatGLM-6B 也能夠進(jìn)行部署,進(jìn)行微調(diào),并最終取得不錯(cuò)的效果,這也是本次研究選擇該模型的重要原因之一。

      2 研究設(shè)計(jì)

      此次所有實(shí)驗(yàn)均在系統(tǒng)win10、64GB 內(nèi)存、Inter酷睿i9-10980XE CPU、NVIDIA GeForce RTX 3090的PC 機(jī)上通過(guò)Python3.8 版本完成。

      2.1 數(shù)據(jù)獲取

      為了保證模型后續(xù)能夠在不同類型的數(shù)據(jù)庫(kù)上順利遷移并成功使用,本次研究需要獲取三部分信息形成模型所需要學(xué)習(xí)的數(shù)據(jù),分別是:

      (1) 數(shù)據(jù)庫(kù)的連接信息,見表1。本次研究只針對(duì)Mysql 數(shù)據(jù)庫(kù)。

      表1 數(shù)據(jù)庫(kù)的連接信息

      (2) 數(shù)據(jù)庫(kù)中所有表的表結(jié)構(gòu)信息,見表2。

      表2 所需的數(shù)據(jù)庫(kù)表信息

      (3) 基于內(nèi)部數(shù)據(jù)分析人員工作3 年所積累的SQL 語(yǔ)句,開始對(duì)其一一收集,為后續(xù)模型需要的訓(xùn)練集和測(cè)試集做鋪墊。為保障數(shù)據(jù)集的質(zhì)量,收集過(guò)程中考慮了如下兩個(gè)方面:一是保障收集的SQL 查詢語(yǔ)句包含大部分SQL 關(guān)鍵字,比如SELECT、DISTINCT 、WHERE、GROUP BY、INTERSECT、EXCEPT、UNIONALL、UNION、IN、NOT IN、OR、AND、ORDER BY、LIMIT、LEFT JOIN、RIGHT JOIN、JOIN、EXISTS、LIKE 、HAVING 以及嵌套查詢;二是收集的SQL 查詢語(yǔ)句需要保證在相對(duì)應(yīng)的環(huán)境下運(yùn)行成功,以免語(yǔ)句錯(cuò)誤,從而導(dǎo)致模型的準(zhǔn)確性較低。最終共收集510條SQL 查詢語(yǔ)句。

      2.2 數(shù)據(jù)預(yù)處理

      首先為構(gòu)建高質(zhì)量的訓(xùn)練集和測(cè)試集,考慮到自然語(yǔ)言的豐富表達(dá)方式,所以對(duì)于每一條SQL 查詢語(yǔ)句,需要整理出相對(duì)應(yīng)的2 種中文表達(dá)方式,便于模型能夠?qū)W習(xí)到更加豐富的語(yǔ)義。此次整理全部通過(guò)人工標(biāo)注的方式對(duì)510 條SQL 查詢語(yǔ)句給予兩種對(duì)應(yīng)的中文表達(dá),相對(duì)應(yīng)的SQL 查詢語(yǔ)句為目標(biāo)集。部分樣例見表3。

      表3 SQL 數(shù)據(jù)集示例

      然后針對(duì)訓(xùn)練好的模型,為方便模型讀取所連接的數(shù)據(jù)庫(kù)的所有表信息,需要對(duì)收集的前兩種數(shù)據(jù)結(jié)構(gòu)進(jìn)行重新構(gòu)建,最終形成config.ymal 文件,便于使用python 中的yaml 模塊進(jìn)行快速解析。整體的結(jié)構(gòu)樣例見圖1。

      圖1 表結(jié)構(gòu)信息重建部分樣例

      2.3 構(gòu)建Text-to-SQL 模型

      本次研究基于paddlepaddle 深度學(xué)習(xí)框架和ChatGLM 語(yǔ)言大模型構(gòu)建自然語(yǔ)言轉(zhuǎn)SQL 模型,構(gòu)建過(guò)程如下:

      (1) 對(duì)預(yù)處理完畢的數(shù)據(jù)集按照8:2 的比例劃分訓(xùn)練集和測(cè)試集。

      (2) 使用ChatGLM-6b 作為嵌入層模型,對(duì)訓(xùn)練集進(jìn)行分詞并向量化,其中人工整理的中文表達(dá)對(duì)應(yīng)的向量作為模型的輸入,SQL 語(yǔ)句對(duì)應(yīng)的向量作為模型的目標(biāo)輸出。

      (3) 開始進(jìn)行模型的訓(xùn)練,ChatGLM-6b 選為需要微調(diào)的預(yù)訓(xùn)練模型,其中迭代次數(shù)設(shè)置為50,優(yōu)化器為Adam,評(píng)估指標(biāo)為F1 指數(shù),學(xué)習(xí)率范圍[0.01,0.03,0.05,0.1,0.3,0.5,0.7],使用網(wǎng)格搜索法進(jìn)行確定,且最終確定的學(xué)習(xí)率為0.03,訓(xùn)練集上的F1 指數(shù)為91.3%。

      (4) 模型評(píng)估階段,使用測(cè)試集對(duì)訓(xùn)練過(guò)程中保存的最優(yōu)模型進(jìn)行評(píng)估,以確定其在未見過(guò)的數(shù)據(jù)上的性能,且測(cè)試集上的F1 指數(shù)為89.8%。

      2.4 構(gòu)建web 界面

      為了方便用戶快速簡(jiǎn)單地使用Text-to-SQL 功能和服務(wù),本次研究將提供web 前端供用戶進(jìn)行輸入數(shù)據(jù)、點(diǎn)擊按鈕與應(yīng)用程序進(jìn)行實(shí)時(shí)的信息交流,使用了Python 中用于構(gòu)建交互式界面的Gradio 庫(kù),該庫(kù)可以快速構(gòu)建、共享和部署機(jī)器學(xué)習(xí)模型界面化工具,它提供了一個(gè)簡(jiǎn)單的接口,開發(fā)人員能夠在幾行代碼中創(chuàng)建具有輸入字段和輸出預(yù)測(cè)的用戶界面。

      3 研究結(jié)論

      本研究通過(guò)對(duì)數(shù)據(jù)庫(kù)連接信息、數(shù)據(jù)庫(kù)表結(jié)構(gòu)信息、SQL 查詢語(yǔ)句收集,人工整理SQL 查詢語(yǔ)句中文表達(dá),配置文件的構(gòu)建,Text-to-SQL 模型的訓(xùn)練和測(cè)試以及web 界面的設(shè)計(jì)等一系列流程,完成了此次基于自然語(yǔ)言處理的SQL 語(yǔ)句生成研究,并能夠基本滿足用戶的查詢需求,大大減少用戶學(xué)習(xí)和使用SQL 的成本。

      最后,本研究?jī)H支持MySQL 數(shù)據(jù)庫(kù)并且在復(fù)雜的子查詢上效果較差,下一步將針對(duì)上述問(wèn)題,豐富支持的數(shù)據(jù)庫(kù)類型并提升模型在復(fù)雜的子查詢上效果,為用戶提供更佳的使用體驗(yàn)。

      猜你喜歡
      語(yǔ)句模板數(shù)據(jù)庫(kù)
      鋁模板在高層建筑施工中的應(yīng)用
      鋁模板在高層建筑施工中的應(yīng)用
      重點(diǎn):語(yǔ)句銜接
      精彩語(yǔ)句
      數(shù)據(jù)庫(kù)
      數(shù)據(jù)庫(kù)
      數(shù)據(jù)庫(kù)
      數(shù)據(jù)庫(kù)
      鋁模板在高層建筑施工中的應(yīng)用
      城市綜改 可推廣的模板較少
      双辽市| 桑日县| 宜丰县| 息烽县| 瑞安市| 浦北县| 昭平县| 新乐市| 明水县| 张家界市| 酒泉市| 华蓥市| 虹口区| 如皋市| 神农架林区| 保亭| 手游| 方山县| 河津市| 天津市| 出国| 高碑店市| 吉林市| 柘荣县| 东阿县| 上杭县| 方山县| 永川市| 潮安县| 黄梅县| 张家港市| 通化市| 来宾市| 榆社县| 临邑县| 闻喜县| 宜都市| 女性| 厦门市| 志丹县| 平原县|